V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
90928yao
V2EX  ›  程序员

请教一个 mysql 的锁的问题

  •  
  •   90928yao · 2020-01-07 20:33:12 +08:00 · 1360 次点击
    这是一个创建于 1542 天前的主题,其中的信息可能已经有所发展或是发生改变。

    id,a,b 三个字段 id 是 autoInc 主键,a 是唯一索引

    俩行数据

    1,first,xxx

    2,second,yyy

    第一个 session:

    begin ;

    delete from table where id=1 ;

    第二个 sesion:

    begin ;

    replace into table ( a,b ) values (”second“,”test“)

    第二个 session 被锁住了执行不了 有点不理解 session

    http://www.fordba.com/lock-analyse-of-delete.html

    按照这老哥说的就主键记录上的行锁,没有 gap

    到底哪里锁住了

    我猜是 a 的索引锁着了,但是说不出个所以然

    半吊子求大佬指点

    10 条回复    2020-01-08 09:43:09 +08:00
    XDJI
        1
    XDJI  
       2020-01-07 21:11:03 +08:00
    rr 级别吗。。应该没锁呀 我试了下也没锁
    luozic
        2
    luozic  
       2020-01-07 21:12:14 +08:00 via iPhone
    啥引擎,mysql 有好几个引擎呢。
    90928yao
        3
    90928yao  
    OP
       2020-01-07 22:18:30 +08:00
    @luozic innodb
    90928yao
        4
    90928yao  
    OP
       2020-01-07 22:31:36 +08:00
    @XDJI 我又试了下 有的
    crclz
        5
    crclz  
       2020-01-07 22:39:49 +08:00
    你的第一个事务还没提交,那么所做出的更改(删除 [2,second,yyy] )在 Read Commited 和 Repeatable Read 隔离级别下都对第二个事务不可见。
    90928yao
        6
    90928yao  
    OP
       2020-01-08 08:50:22 +08:00
    @crclz 那为什么 session 进入了锁等待的状态
    90928yao
        7
    90928yao  
    OP
       2020-01-08 08:50:39 +08:00
    @XDJI 是 rr
    90928yao
        8
    90928yao  
    OP
       2020-01-08 08:53:35 +08:00
    我擦 又可以了。。。真的啥都没动
    crclz
        9
    crclz  
       2020-01-08 08:56:03 +08:00
    看错了...我以为你删除的是第 2 行
    XDJI
        10
    XDJI  
       2020-01-08 09:43:09 +08:00
    没有锁啊 第一个退化成行锁 第二个就是一个 insert 怎么看怎么没锁。。 昨晚我还试了的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5024 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 01:14 · PVG 09:14 · LAX 18:14 · JFK 21:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.