有没有文章直接指出 MYSQL 四个隔离级别(特别中间两个)下到底怎么上锁,上什么锁的?什么不可重复读,幻读乱七八糟的 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
Newyorkcity
V2EX    MySQL

有没有文章直接指出 MYSQL 四个隔离级别(特别中间两个)下到底怎么上锁,上什么锁的?什么不可重复读,幻读乱七八糟的

  •  
  •   Newyorkcity 2020-03-24 18:20:13 +08:00 3158 次点击
    这是一个创建于 2109 天前的主题,其中的信息可能已经有所发展或是发生改变。
    事务 t1 从用户表查 id=101 的人名字,得到张三。事务 t2 这时候在并发的做事,可能把 id=101 的人名字改王五了。t2 提交了之后。t1 再查,id=101 的人的名字变王五了。这是不可重复读,是不是幻读?

    怎么避免这样的上述的不可重复读呢?我读到的记录,就给它加把排斥写锁的读锁,这样别的事务就改不了它(事务要改记录必须给记录加上写锁的前提下)。不可重复读就问题就解决了

    吗?

    按照上面说的加锁方式,事务 t1 上来查了下用户表里叫李四的有多少个,一查,2 个。事务 t2 与 t1 并发呢,随后插入了一个新的名为李四的用户的记录,提交了。t1 再一查叫李四的几个人,3 个了。这不算不可重复读吗?为什么啊?算幻读吗?为什么啊?

    那隔离级别里的『可重复读』,是上述两个问题都解决了,还是只解决了第一个问题?解决方法和我说的一样吗?

    ============

    所以我真的头大,有没有什么官方文档干脆利落地说清楚,MYSQL 5.7 InnoDB 到底在这两种隔离级别下怎么上锁,上的什么锁。

    谢谢
    11 条回复    2020-07-28 02:47:56 +08:00
    fantastM
        1
    fantastM  
       2020-03-24 18:29:13 +08:00   1
    http://hedengcheng.com/?p=771 这是原文,但图片已经失效了,可以看些转载的文章
    ylsc633
        2
    ylsc633  
       2020-03-24 19:16:31 +08:00
    MVCC 和 Next-Key Locks


    我抛出一个疑问! 仅仅 mvcc 能解决 mysql 的 幻读的问题吗?

    有答案,请艾特我
    EmdeBoas
        3
    EmdeBoas  
       2020-03-24 19:19:46 +08:00   1
    如果只是想搞清楚相关概念,我建议直接读 ANSI 标准,各类主流数据库在实现的时候都会遵循,也避免掉到具体数据库的实现细节中去:
    https://wiki.hsr.ch/Datenbanken/files/Paper_ANSI_SQL_Isolation_Levels_Stefan_Luetolf_V2_1.pdf

    一篇老而经典的论文:A Critique of ANSI SQL Isolation Levels,里面有指出了 ANSI 标准一些容易让人误解的场景

    认真读完这两个东西,理解会很深刻
    lu5je0
        4
    lu5je0  
       2020-03-24 19:23:26 +08:00
    @ylsc633 仅有 mvcc 不能解决当前读下的幻读问题
    silencil
        5
    silencil  
       2020-03-24 19:36:57 +08:00 via Android
    推荐掘金上讲 MySQL 的那本小册,看完绝对不乱。
    mawerss1
        6
    mawerss1  
       2020-03-24 19:41:40 +08:00
    @fantastM 刚想说这篇来着,非常清晰,网上可以搜到转发的,有图片,但是没保留原作者,经典文章,已保存
    noobsheldon
        7
    noobsheldon  
       2020-03-24 19:42:55 +08:00   1
    mawerss1
        8
    mawerss1  
       2020-03-24 19:44:21 +08:00
    @ylsc633 仅仅 mvcc 是说不加读写锁? 我说一个用乐观锁解决,不知道对不对
    Newyorkcity
        9
    Newyorkcity  
    OP
       2020-03-25 11:30:01 +08:00
    @fantastM
    @mawerss1
    两位,这篇文章里说 RR 级别不存在幻读?在网页里搜索『不存在幻读现象。』可以定位到原文...这...几乎和常识违背了啊
    mawerss1
        10
    mawerss1  
       2020-03-25 15:05:25 +08:00 via iPhone   1
    @Newyorkcity 当前读的前提下,是不存在幻读的,没有错
    mogami18
        11
    mogami18  
       2020-07-28 02:47:56 +08:00
    @EmdeBoas 巧了,前不久我刚刚也读了两篇 paper,其中一篇和老兄你推荐的一样。
    Distributed snapshot isolation: global transactions pay globally, local transactions pay locally
    https://dl.acm.org/doi/10.1007/s00778-014-0359-9
    A Critique of ANSI SQL Isolation Levels
    https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-95-51.pdf
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2364 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 05:35 PVG 13:35 LAX 21:35 JFK 00:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86