根据 MySQL手册:

对于大型表,表锁定通常比行锁定更好,

为什么是这样?我认为行级锁定更好,因为当您锁定较大的表时,您将锁定更多数据。

有帮助吗?

解决方案

从(预编辑)链接

  

比页级或表级锁慢上表中的一个大的部分使用时,因为你必须获取更多的锁

使用行级锁,如果你只打一两排。如果你的代码打很多的或未知的行,坚持使用表锁。

其他提示

  • 行锁定比表或页级锁定需要更多的内存。

  • 必须通过行锁定获取更多锁,这会消耗更多资源

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锁定在一个大表比一大堆行级或页锁

便宜
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top