V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ruandao
V2EX  ›  问与答

数据库事务 的可重复读的疑问

  •  1
     
  •   ruandao · 2019-07-05 11:24:26 +08:00 · 1456 次点击
    这是一个创建于 1987 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个事务里面,有读的操作,然后 client 根据读的内容和程序运行时变量,去执行一些操作(费时 10s )

    再根据操作结果,决定是否变更数据,最后提交事务

    如果事务的级别是可重复读

    当这个事务,执行的时候,被读取的行,是否要被卡住 10s

    5 条回复    2019-07-05 14:46:14 +08:00
    momocraft
        1
    momocraft  
       2019-07-05 11:56:15 +08:00
    “卡”是加锁的意思吗?

    DB 不需要加锁也可满足可重复读的要求,比如 snapshot
    ruandao
        2
    ruandao  
    OP
       2019-07-05 13:35:44 +08:00
    @momocraft #1 不是, 我说的是, 数据库相同的行被卡住 (无法被其他客户端修改)
    卡是指数据库事务,不是 client 的锁
    yxjn
        3
    yxjn  
       2019-07-05 13:51:45 +08:00
    不会,rr 事物级别读不会触发行锁。
    ruandao
        4
    ruandao  
    OP
       2019-07-05 14:26:48 +08:00
    @yxjn #3 如果不会的化, 卡 10s 数据被变更后,再去提交事务,是提交失败吗?
    sandrew1945
        5
    sandrew1945  
       2019-07-05 14:46:14 +08:00
    不会
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1167 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:58 · PVG 01:58 · LAX 09:58 · JFK 12:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.