MySQL事务详解

一:什么是事务

事务:简单来说就是一组操作要么全部成功,要么全部失败,没有中间状态,

最常见的例子就是转账:小黑给小黄转账100快,如果只是小黑的账户减少100块,小黄的账户余额不增加,你觉得合理吗?
所以事务就是要么都成功,要么都失败

二:事务的特性(ACID)

1.原子性(Atomicity): 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;
2.一致性(Consistency): 执行事务前后,数据保持一致,多个事务对同一数据的读取结果是相同的;
3.隔离性(Isolation): 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;
4.持久性(Durability): 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。

三:脏读、丢失修改、不可重复读、幻读

1.脏读(Dirty read):读未提交,当一个事务A读取并修改一个数据,且没提交到数据库,但这个数据恰好被另一事务B读取,事务B读取的这个数据可能不是最终需要提交的数据,事务B拿着这个数据去做一些操作可能会出错;
2.丢失修改(Lost to modify):当一个事务A读取了一个数据后,事务B也读取了该数据,当事务A修改了这个数据之后,事务B也修改了该数据,事务A的修改被事务B的修改所覆盖,如事务A读取a=100,对其进行操作减去20,事务A提交之后a=80,当时事务B对a的操作是增加20,那么事务B提交之后a=120,事务A的修改被事务B所覆盖;
3.不可重复读(Unrepeatable Read):事务A在同一次事务中需要多次读取同一数据a,在事务A多次读取数据的间隙中事务B修改了数据a,导致事务A读取的数据不一致;
4.幻读(Phantom Read):幻读和不可重复读差不多,事务a读取了几行数据,事务B突然插入了几条数据,事务a重新读取时发现多了几条原本不存在的数据;

不可重复读的重点是修改:多次读取同一条记录发现其中某些列的值被修改;幻读的重点在于新增或者删除:多次读取发现记录增多或减少了。

三:事务的隔离级别
数据库定义了四种隔离级别,如下所示:

1:读未提交(READ-UNCOMMITTED):最低的隔离级别,允许读取尚未提交的数据变更, 可能会导致脏读、幻读或不可重复读。
2:读已提交(READ-COMMITTE):读取并发事务已经提交的数据, 可以阻止脏读,但是幻读或不可重复读仍有可能发生。
3:可重复读(REPEATABLE-READ):对同一字段的多次读取结果都是一致的,除非数据是被本身事务所修改, 可以阻止脏读和不可重复读,但幻读仍有可能发生。
4:串行化(SERIALIZABLE):最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰, 该级别可以防止脏读、不可重复读以及幻读。

MySQL InnoDb的默认级别是可重复读!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 事务特性ACID 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: 1 原子性(Atomic...
    Q南南南Q阅读 918评论 0 0
  • 事务详解 注意:MyISAM 不支持事务,InnoDB支持事务,所以所有关于事务, 隔离级别,排它锁, 共享锁, ...
    大富帅阅读 2,854评论 1 3
  • 数据库事务 1.1数据库版本 Mysql8.0.12 1.2事务是由一组SQL语句组成的逻辑处理单元,事务具有以下...
    左洁阅读 201评论 0 0
  • 1.事务的四大特性(AUID) 1.1原子性(Atomicity) 执行一条命令,或者多条命令,要么全部成功,要么...
    IT奔跑的小特阅读 175评论 0 1
  • 事务 什么是事务?维基百科的定义:事务是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由 一个有限的数据库操...
    WEIJAVA阅读 1,329评论 0 7