次のクエリが MySQL 5.1 の INNODB テーブルで実行された場合、db が内部的に更新する各行 (合計で 5000) に対して WRITE LOCK を作成するか、バッチ内のすべての行をロックするかは、(MySQL のドキュメントを読んでも) 私にはわかりません。データベースの負荷が非常に高いため、これは非常に重要です。
UPDATE `records`
INNER JOIN (
SELECT id, name FROM related LIMIT 0, 5000
) AS `j` ON `j`.`id` = `records`.`id`
SET `name` = `j`.`name`
行ごとにあると思いますが、そうであることを確認する方法がわからないため、詳しい知識のある人に尋ねることにしました。これが当てはまらず、データベースがセット内のすべての行をロックする場合は、その理由を説明していただければ幸いです。