事务概念及存储引擎

  1.0 为何要事务?

  先来看一个场景,银行转账汇款:

  李彦宏和周鸿祎天天打架,现在让李彦宏给周鸿祎转款1000 元

  设计如下表

  account表

  编号(id)用户名(user)金额(cash)

  1李彦宏3000

  2周鸿祎2000

  传统的做法:

  mysql> update account set cash = cash -1000 where id =2;

  update account set cash =cash +1000 where id=1;

  缺陷:

  不安全。比如减少李彦宏钱的指令执行了,但是增加周鸿祎钱的指令却没有执行成功。

  这个时候,我们就要使用mysql的事物机制。

  1.1事务

  

  1.2事务的使用

  事务相关语句 DTL

  

  1.3事务的四种特性:

  1.原子性,是一个不可分割的逻辑单元,一组sql语句,要么都执行,要么都不执行。

  2.隔离性,事务中的执行过程是不可见的。

  3.持久性,事务一旦提交,就不可撤销。

  4.一致性,事务在发生之前和发生之后,数据是一致。(能量守恒)

  1.4事务的原理:

  传统方式:

  

  事务机制:

  

  上面的例子:李彦宏给周鸿祎转钱用事物的代码:

  #开启事物

  Start transaction;

  #执行的代码

  Update account set cash=cash-1000 where id=1;

  Update account set cash+1000 where id=2;

  #提交

  commit

  # 语句出错 可以回滚

  #rollback

  1.5事务在哪些场合下应用:

  一般来说,对于安全性要求比较的业务,建议使用事务。

  2.0 mysql存储引擎

  何为存储引擎?

  我们说数据库是组织、存储和管理数据的仓库。那么,数据库存储数据的方式,就是存储引擎。

  在mysql中,存储引擎是以插件的形式加载的。Mysql的存储引擎种类繁多,对于我们来说,要熟悉两种存储引擎去,MyISAM和inonoDB。

  Myisam不支持事务。

  Innodb支持事务。

  全文索引在mysql5.5以前版本中,innodb是不支持的,但是5.5以后的版本支持。

  常见存储引擎

  

  mysql默认的存储引擎,

  在mysql5.5以前的版本:MyISAM

  在mysql5.5以后的版本:innodb

  如果我们要自己声明存储引擎:

  Create table()engine=myisam default charset utf8

mysql事务与mysql储存引擎的更多相关文章

  1. MySQL数据库常识之储存引擎

    我的博客 储存引擎分类 show engines; 这个命令可以查看数据库的数据引擎,可以看到InnoDB是默认的引擎. 命令除了在终端运行,也可以在查询数据库可视化工具中运行. 而,(我是5.7版本 ...

  2. MySQL数据库储存引擎Inoodb一--记录储存结构

    在开文我先说明一下,接下来的数据库知识文章都是在微信公众号“我们都是小青蛙”学习然后在通过自己的理解进行书写的.有兴趣的朋友可以去关注这个微信公众号.话不多说,我们在日常使用数据库进行数据持 久化的时 ...

  3. mysql 事务、游标

    mysql 事务 在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务,所以很多情况下我们都使用innodb引擎. 事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行 ...

  4. spring事务和mysql的隔离级别

    mysql事务.mysql隔离级别.mysql锁.mysql数据一致性.Spring事务.Spring事务传播性之间的关系 一直有些模糊,整理一下.   mysql事务: 在mysql中,只有使用了I ...

  5. mysql事务隔离分析

    首先说明下,这里主要内容为整理总结网络搜索的零散信息. 写在最前面,mysql事务是在Innodb引擎中得以实现的,如果这点不了解的话,请自行了解. 事务直接数据的可见性通过MVCC(多版本并发控制) ...

  6. MySQL事务部分回滚-回滚到指定保存点

    我们可以在mysql事务处理过程中定义保存点(SAVEPOINT),然后回滚到指定的保存点前的状态. 定义保存点,以及回滚到指定保存点前状态的语法如下. 定义保存点---SAVEPOINT 保存点名; ...

  7. mysql 的 存储结构(储存引擎)

    1 MyISAM:这种引擎是mysql最早提供的.这种引擎又可以分为静态MyISAM.动态MyISAM 和压缩MyISAM三种:    静态MyISAM:如果数据表中的各数据列的长度都是预先固定好的, ...

  8. Mysql 储存引擎

    查看当前版本支持哪些储存引擎 mysql> show engines; InnoDB 支持事务机制 : 保证操作安全性 行级锁定 : 开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最 ...

  9. MySQL数据库Innodb储存引擎----储存页的结构

    上一篇博客回顾: 1:数据库拥有众多的储存引擎,现在主要使用的是Inoodb,这个储存引擎有Compact,Redundant,Dynamic,Compressed四种行格式 2:Compact行格式 ...

随机推荐

  1. Spring源码学习之:模拟实现BeanFactory,从而说明IOC容器的大致原理

    spring的IOC容器能够帮我们自动new对象,对象交给spring管之后我们不用自己手动去new对象了.那么它的原理是什么呢?是怎么实现的呢?下面我来简单的模拟一下spring的机制,相信看完之后 ...

  2. java多线程:并发包中ConcurrentHashMap和jdk的HashMap的对比

    一:HashMap--->底层存储的是Entry<K,V>[]数组--->Entry<K,V>的结构是一个单向的链表static class Entry<K, ...

  3. 论文笔记之:DeepCAMP: Deep Convolutional Action & Attribute Mid-Level Patterns

    DeepCAMP: Deep Convolutional Action & Attribute Mid-Level Patterns CVPR 2016 本文提出一种 分割图像 patch 的 ...

  4. css div要点汇总

    1.子元素选择两种 h1 strong{color:red}意思是所有后代只要是strong就变成红色 h1>strong{color:red}效果同上但只对第一代后代元素有效 相邻兄弟元素 h ...

  5. Eclipse+Maven创建webapp项目<一><二><三>

    转-http://www.cnblogs.com/candle806/p/3439469.html Eclipse+Maven创建webapp项目<一> 1.开启eclipse,右键new ...

  6. LINUX系统下PHP显示空白页

    因为手工转移,文件所属用户及用户组是root,所以需要把网站程序及数据库都改成对应用户组:如www和mysql. 更改目录所属用户执行命令: chown -R 用户.用户组 目录名, 如:chown ...

  7. junit类找不到的问题解决

    1. Class not found  *******java.lang.ClassNotFoundException: ******* at java.net.URLClassLoader$1.ru ...

  8. Android 查看內存使用

    一.使用dumpsys meminfo命令 1.使用dumpsys meminfo查看内存使用情况 2.过滤某个进程可以使用 dumpsys meminfo | grep -i phone 二,使用t ...

  9. Linux环境下MySQL使用入门

    1 安装 1.1 yum安装 yum install mysql-server yum remove mysql service mysqld restart // 服务重新启动 chkconfig ...

  10. nova分析(9)—— nova-novncproxy

    nova提供了novncproxy代理支持用户通过vnc来访问虚拟机,用户可以通过websocket.java客户端或者spicehtml5来访问.通过websket访问虚拟机的功能已经集成到hori ...