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

2017-04-06 15:00:49 +08:00
 esolve

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

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

2497 次点击
所在节点    问与答
6 条回复
zhs227
2017-04-06 15:27:04 +08:00
锁大门方便还是把家里每一个门分别锁起来方便呢?
esolve
2017-04-06 16:54:07 +08:00
@zhs227 你的意思是,行级锁,开销大是要对 N 个行级锁操作?
假如只是锁一个行级锁呢?也开销大?
sorra
2017-04-06 17:07:30 +08:00
@esolve 这里的意思是在给几千上万行加锁时,可以用行级锁也可以用表级锁。
MySQL 只能把锁放在内存里(新版不知是否仍这样),锁多了就放不下,会改用表级锁。
zhs227
2017-04-06 18:19:07 +08:00
@esolve 也许我描述有误,数据库这块不算很熟。
我个人的理解是,使用表锁简单粗暴,而在使用行锁的情况下,在对表进行操作的时候需要更多细致的判断,精确到每一条记录是否上锁,会增加系统开销。但是这个开销应该在某些情况下会带来更大的便利性和并发性能,所以也有它的优点。
sagaxu
2017-04-06 19:03:26 +08:00
这个结论是错的, table level lock 加锁快开销小的前提是,要锁的不是一条记录,是很多条记录
ryd994
2017-04-07 11:08:55 +08:00
@esolve 只锁一行,你还是要找到要锁的那一行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/352943

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX