这些链接涉及血淋淋的细节,但这个问题似乎需要一个简单的是/否的答案。
对于ENGINE=MyISAMor MEMORY,唯一的锁是表锁。
为了ENGINE=InnoDB:
可以这样想——它锁定它必须查看的每一行。
列上没有索引——它必须检查每一行,因此所有行都被锁定。这有效地锁定了整个表。
UNIQUE列上的索引——只需要触及一行,因此被锁定。
在两者之间...列上的非唯一性INDEX——它必须锁定具有该值的所有行。(可能“下一行”也会被锁定。)
PS:这PRIMARY KEY是UNIQUEMySQL中的索引。
其他一些供应商有不同的索引定义,有些确实有“表锁”。有些将一堆行锁“升级”为“表锁”。
底线:
INDEX或UNIQUE不添加 。UPDATEing其之前的行,请使用事务 和SELECT ... FOR UPDATE。| 归档时间: |
|
| 查看次数: |
13614 次 |
| 最近记录: |