根据MySQL 手册:
对于大表,表锁往往比行锁好,
为什么是这样?我认为行级锁定更好,因为当您锁定更大的表时,您将锁定更多数据。
行锁定比表级或页级锁定需要更多内存。
必须通过行锁定获得更多的锁,这会消耗更多的资源
来自http://www.devshed.com/c/a/MySQL/MySQL-Optimization-part-2/
行级锁定的优点:
行级锁定的缺点:
在以下情况下,表锁优于页级或行级锁:
UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;
DELETE FROM tbl_name WHERE unique_key_col=key_value;
行表级锁更适合发生重大数据修改的大型表。这使系统可以处理表上的单个锁,而不必处理大量锁(每行一个锁)。
RDBMS 在内部自动升级锁定级别。
Table locking enables many sessions to read from a table at the same time
To achieve a very high lock speed, MySQL uses table locking
"I would presume that row-level locking is better because" [you lock less data].
First "better" is poorly defined in this page. It appears that better means "faster".
Row-level locking cannot (in general) be faster because of contention for locks. Locking each row of a large result set means the very real possibility of a conflict with another large result set query and a rollback.
一般来说,如果您需要锁定大量数据,那么大表上的 1 个锁比一大堆行级锁或页锁便宜