V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
esolve
V2EX  ›  问与答

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

  •  
  •   esolve · Apr 6, 2017 · 2913 views
    This topic created in 3311 days ago, the information mentioned may be changed or developed.

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

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

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