esolve
V2EX  ›  问与答

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

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

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

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

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