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

为何行级锁比表级锁开销大?

  •  
  •   esolve · 2017-04-06 15:00:49 +08:00 · 2572 次点击
    这是一个创建于 2807 天前的主题,其中的信息可能已经有所发展或是发生改变。

    表级锁:开销小,加锁快; 行级锁:开销大,加锁慢

    这个如何理解?为何行级锁比表级锁开销大?

    6 条回复    2017-04-07 11:08:55 +08:00
    zhs227
        1
    zhs227  
       2017-04-06 15:27:04 +08:00
    锁大门方便还是把家里每一个门分别锁起来方便呢?
    esolve
        2
    esolve  
    OP
       2017-04-06 16:54:07 +08:00
    @zhs227 你的意思是,行级锁,开销大是要对 N 个行级锁操作?
    假如只是锁一个行级锁呢?也开销大?
    sorra
        3
    sorra  
       2017-04-06 17:07:30 +08:00
    @esolve 这里的意思是在给几千上万行加锁时,可以用行级锁也可以用表级锁。
    MySQL 只能把锁放在内存里(新版不知是否仍这样),锁多了就放不下,会改用表级锁。
    zhs227
        4
    zhs227  
       2017-04-06 18:19:07 +08:00
    @esolve 也许我描述有误,数据库这块不算很熟。
    我个人的理解是,使用表锁简单粗暴,而在使用行锁的情况下,在对表进行操作的时候需要更多细致的判断,精确到每一条记录是否上锁,会增加系统开销。但是这个开销应该在某些情况下会带来更大的便利性和并发性能,所以也有它的优点。
    sagaxu
        5
    sagaxu  
       2017-04-06 19:03:26 +08:00
    这个结论是错的, table level lock 加锁快开销小的前提是,要锁的不是一条记录,是很多条记录
    ryd994
        6
    ryd994  
       2017-04-07 11:08:55 +08:00 via Android
    @esolve 只锁一行,你还是要找到要锁的那一行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2983 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:37 · PVG 19:37 · LAX 03:37 · JFK 06:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.