• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zjsxwc
V2EX  ›  程序员

数据库问题:我乐观锁在事务里使用会不会失效?

  •  
  •   zjsxwc ·
    zjsxwc · Jul 12, 2023 · 1035 views
    This topic created in 1071 days ago, the information mentioned may be changed or developed.
    因为 mysql 默认事务的隔离级别是“可重复读”,

    我有个使用乐观锁的表,每行都有个 version 字段来应用乐观锁,

    问题来了:
    我开了两个事务,
    这两个事务里都需要同时修改了乐观锁的表里的同一行,
    由于“可重复读”,version 字段在在同一个事务里前后两次读都一样,
    也就是意味这我两个事务里都能改这一行数据成功,
    那么两个事务也都能 commit 成功,把这一行数据改了两次,
    那么是不是意味这我的乐观锁失效了?
    没能阻止这一行数据被改第二次。
    zjsxwc
        1
    zjsxwc  
    OP
       Jul 12, 2023
    已解决,不会导致乐观锁在事务里失效,
    事务 A 里 update 某一行,会 block 别的事务修改这行到事务 A commit 后才能让别的事务修改。

    ![2060963a183d53e5d.png]( https://youjb.com/images/2023/07/12/2060963a183d53e5d.png)
    ![1ccbc776c381b6766.png]( https://youjb.com/images/2023/07/12/1ccbc776c381b6766.png)
    pkoukk
        2
    pkoukk  
       Jul 12, 2023
    “可重复读”,如字面意思,只能重复读,update 有锁
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5199 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 05:44 · PVG 13:44 · LAX 22:44 · JFK 01:44
    ♥ Do have faith in what you're doing.