为什么对于大表来说表级锁定比行级锁定更好?
-
27-09-2019 - |
题
解决方案
其他提示
行锁定比表或页级锁定需要更多的内存。
必须通过行锁定获取更多锁,这会消耗更多资源
从 http://www.devshed.com/c/a/MySQL/MySQL-Optimization-part-2/
行级锁定的优点:
- 在多个线程中访问不同行时,锁冲突更少。
- 回滚的更改较少。
- 使得长时间锁定单行成为可能。
行级锁定的缺点:
- 比页级或表级锁占用更多内存。
- 当在表的大部分上使用时,比页级或表级锁慢,因为您必须获取更多的锁。
- 如果经常对很大一部分数据进行GROUP BY操作或者经常必须扫描整个表的话,肯定比其他锁差很多。
- 使用更高级别的锁,您还可以更轻松地支持不同类型的锁来调整应用程序,因为锁开销小于行级锁。
在以下情况下,表锁优于页级锁或行级锁:
- 该表的大多数语句都是读取。
- 读取和更新严格的键,您可以在其中更新或删除可以通过单个键读取获取的行:
UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;
DELETE FROM tbl_name WHERE unique_key_col=key_value;
- SELECT 与并发 INSERT 语句结合,很少有 UPDATE 和 DELETE 语句。
- 对整个表进行多次扫描或 GROUP BY 操作,无需任何编写器。
A <击>行击>表级锁定为其中主要数据修改正在发生大表更好。这使该系统具有上表中的单个锁定抗衡而不是必须处理一个极大锁(每个行)。
在RDBMS自动升级内部锁定级别。
表锁定使许多会话的同时从一个表中读
要达到很高的速度锁定,MySQL使用表锁定
“我假定行级锁定更好,因为” [你锁定更少的数据。
第一“更好”在本页面定义不清。看来,更好的手段“更快”。
行级锁定不能(通常)是因为争用锁的更快。锁定大型结果集的每一行装置与另一个大的结果集的查询和回滚冲突的非常现实的可能性。
在一般情况,如果需要锁定了大量的数据,那么1锁定在一个大表比一大堆行级或页锁
便宜不隶属于 StackOverflow