Aşağıdaki sorgu MySQL 5.1'de INNODB tablolarında çalıştırılırsa (MySQL belgelerini okuyarak), satırların her biri için WRITE LOCK yaratacağı açık değildir. dahili olarak güncelleştirir (toplamda 5000) veya toplu işteki tüm satırları LOCK. Veritabanının gerçekten ağır yükü olduğundan, bu çok önemlidir.SELECT ile UPDATE, her satırı veya tüm SELECTed kayıtları kilitler
UPDATE `records`
INNER JOIN (
SELECT id, name FROM related LIMIT 0, 5000
) AS `j` ON `j`.`id` = `records`.`id`
SET `name` = `j`.`name`
Eminim o kadar olduğundan emin olmak için bir yol bilmiyorum gibi satır başına olabilir ama beklediğiniz, ben daha derin bilgiye sahip birini istemeye karar verdi. Bu durumda ve db sette tüm satırları LOCK olurdu, bana neden açıklama verirseniz teşekkür ederim.
İşlemler kullanıyor musunuz? (autocommit = kapalı)? ps: sorgunuzun semantically correcT olduğundan emin misiniz? – Sebas
Muhtemelen tüm satırları kilitler, çünkü MySQL bu şekilde alır. – GolezTrol
Bekleyin, tablonun türüne bağlıdır, elbette: http://dev.mysql.com/doc/refman/5.0/en/innodb-locks-set.html – GolezTrol