事务概念及存储引擎

  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. 论文笔记之:Generative Adversarial Nets

    Generative Adversarial Nets NIPS 2014  摘要:本文通过对抗过程,提出了一种新的框架来预测产生式模型,我们同时训练两个模型:一个产生式模型 G,该模型可以抓住数据分 ...

  2. WCF Restful JQuery 跨域解决方法

    <?xml version="1.0"?> <!-- For more information on how to configure your ASP.NET ...

  3. Js中的window.parent ,window.top,window.self ,window.openner详解

    在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口, opener是用open方法 ...

  4. IE下必须点击一下页面空白的地方才可以激活onchange事件

    checkbox在IE下必须点击一下页面空白的地方才可以激活onchange事件. 解决办法把onchange换成onclick

  5. Java C# 加密解密类库

    Bouncy Castle 是一种用于 Java 平台的开放源码的轻量级密码术包.它支持大量的密码术算法,并提供 JCE 1.2.1 的实现.因为 Bouncy Castle 被设计成轻量级的,所以从 ...

  6. fastBinaryJSON

    fastBinaryJSON 是基于 fastJSON 的二进制 JSON 序列化器.详细介绍请看这里. 数据编码格式: 序列化速度比较:

  7. Linux-NTP-Server+Client

    GMT/UTC/CST;/etc/localtime,/usr/share/zoneinfo/*时区文件,/etc/profile加TZ变量;硬件时间RTC,系统时间;date,hwclock,tzs ...

  8. oracle 变量赋值

    在oracle 中使用 select 字段 into 变量 from 表 where 条件 这种方法给变量赋值时和MSSQL的行为有比较大区别. 在MSSQL中如果在该表中未检索到任何行,则变量的值保 ...

  9. MySQL explain key_len 大小的计算

    总结: 变长字段需要额外的2个字节,固定长度字段不需要额外的字节.而null都需要1个字节的额外空间,所以以前有个说法:索引字段最好不要为NULL,因为NULL让统计更加复杂,并且需要额外一个字节的存 ...

  10. 图解SQL的各种连接join[转]

    对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codin ...