我不清楚(通过阅读 MySQL 文档)以下查询是否在 MySQL 5.1 上的 INNODB 表上运行,是否会为数据库内部更新的每一行(总共 5000 行)创建 WRITE LOCK 或 LOCK 批处理中的所有行。由于数据库的负载非常重,这非常重要。
UPDATE `records`
INNER JOIN (
SELECT id, name FROM related LIMIT 0, 5000
) AS `j` ON `j`.`id` = `records`.`id`
SET `name` = `j`.`name`
我希望它是每行的,但由于我不知道如何确保它是这样,所以我决定问一个有更深知识的人。如果不是这种情况并且数据库会锁定集合中的所有行,如果您能解释一下原因,我将不胜感激。