Mysql隔离级别

打死记不住的隔离级别,笨人需要多动笔,写个笔记先。

【原】=========> 巨人的肩膀

  1. Read uncommitted (读取未提交的内容)
    一个事务可以看到其他事务未提交的处理结果。会导致脏读。
  2. Read committed
    一个事务只可以看到其他事务提交的处理结果。大多数据库的默认隔离级别,但MySQL不是
  3. Repeatable read
    保证一个事务中相同查询返回的结果一定是相同的,但是会有幻读的问题。是MySQL的默认隔离级别。
  4. Serializable
    事务串行化,会出现大量超时、锁竞争。

潜在问题:
脏读:事务A读取了事务B未提交的处理结果,此时事务B回滚了操作,事务A读取到的就是错误的脏数据。
幻读:

实践检验:
查询当前会话事务隔离级别:

select @@transaction_isolation;
select @@transaction_isolation

(注:简书上传图片,直接修改连接后数字改变图片大小)
查看系统隔离级别:

select @@global.transaction_isolation
select @@global.transaction_isolation

开启两个会话A/B 修改隔离级别,然后模拟事务操作,在B中查询数据

修改当前会话隔离级别
set session transaction isolation level read uncommitted;
修改系统隔离级别
set global transaction isolation level read uncommitted;

设置隔离级别为read uncommitted(读未提交);

开启事务,更新数据,不提交


初始数据

开启事务,修改数据,不提交

会话B 查询已经可以看到修改结果

此时A rollback,B就读到了脏数据。

设置隔离级别为read committed(读已提交);

会话A 开启事务,修改数据,不提交

会话B 中查询,数据未更改

会话A commit

会话B查询,数据更改

read commited级别下,一个事务只可以访问到其他事务已经提交的更改,解决了脏读问题。但是会话B两次查询的结果不一致,所以read committed 级别可能导致在一个事务范围下,相同的查询可能出现不同的结果,就是不可重复读。

设置隔离级别为repeatable read(可重复读);

数据初始状态

开启事务,修改数据,不提交

会话B 开启事务,查询不到更新的数据

会话A commit

会话B 还是读不到更新的数据

这就解决了不可重复读的问题,保证了一个事务范围内,同一个查询返回的结果一样。
但是此时插入一条数据并提交


会话A 插入数据并提交

会话B 也读不到这条数据

会话B commit 结束此次事务后,才可以查询到会话A 更新和插入的数据

可重复读解决了不可重复读的问题,但是会有 幻读的问题。

设置隔离级别为Serializable(串行化)

会话B 开启事务,查询数据初始状态

会话A 会进入等待状态,因为会话B的事务没有提交

会话B commit

会话A 提交成功

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

推荐阅读更多精彩内容

  • Mysql提供了4中隔离级别,在介绍这4中隔离级别前,先针对涉及的术语进行说明: 1》、脏读:一个事务读取另外一个...
    五月天_7df7阅读 273评论 0 0
  • 前一个文章讲述了事务ACID的特性以及并发事务造成的数据不一致性问题,事务ACID以及不一致性问题,接下来讲解下M...
    丁木木木木木阅读 546评论 0 4
  • MySQL 事务的四种隔离级别 1 事务的基本要素(ACID) 原子性(Atomicity):事务开始后所有操作,...
    4a873e424089阅读 645评论 0 0
  • 下班了,窗外下着雨,打着伞走在回家的路上,小区里的排水不太好,积攒的雨水已经汇聚成小河,悠悠地流淌。 本来还踮着脚...
    杭杭出状元阅读 254评论 0 5
  • 画了一只小太子。
    陆离_mio阅读 327评论 2 5