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
150530
V2EX  ›  MySQL

Mysql 幻读问题

  •  
  •   150530 · 2023-12-13 10:43:29 +08:00 · 1775 次点击
    这是一个创建于 375 天前的主题,其中的信息可能已经有所发展或是发生改变。

    手动实现幻读问题

    环境: 版本 8.0.27 ,默认隔离级别 RR

    只是测试 sql 大小写不规范请不要介意

    结论:只使用快照读或只使用当前读无幻读问题,混用会造成幻读问题(如果理解有误请各位指出)


    CREATE TABLE `test` (
      `a` int DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
    

    快照读 无不可重复读和读幻读问题,事务一始终读取快照,事务二插入对事务一无影响

    Imgur


    当前读不会影响其他事务快照读,但会影响其他事务当前读( next-key )

    Imgur


    快照读和当前读混用出现幻读问题( select 改为当前读即可解决)

    Imgur

    4 条回复    2023-12-13 12:26:06 +08:00
    Leviathann
        1
    Leviathann  
       2023-12-13 10:45:18 +08:00
    索引也有影响的
    150530
        2
    150530  
    OP
       2023-12-13 10:51:17 +08:00
    @Leviathann 当前读下索引确实会影响锁定范围,锁粒度问题
    mouseman
        3
    mouseman  
       2023-12-13 12:16:07 +08:00 via iPhone
    本来就会这样的,你说的没错
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2334 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:55 · PVG 23:55 · LAX 07:55 · JFK 10:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.