다음 쿼리가 MySQL 5.1의 INNODB 테이블에서 실행되면 나에게 불분명합니다 (각각의 행에 대해 WRITE LOCK을 작성합니다) 내부적으로 업데이트 (총 5000 개) 또는 배치의 모든 행을 잠급니다. 데이터베이스의로드가 너무 많으므로이 작업이 매우 중요합니다.SELECT를 사용하여 UPDATE를 실행하면 각 행이나 모든 SELECTED 레코드가 잠길 것입니다
UPDATE `records`
INNER JOIN (
SELECT id, name FROM related LIMIT 0, 5000
) AS `j` ON `j`.`id` = `records`.`id`
SET `name` = `j`.`name`
나는 확실히 그렇게되어 있는지 확인하는 방법을 모르는대로 행 당 수 있지만,하는 기대, 나는 깊은 지식을 가진 사람을 요구하기로 결정했다. 이 경우가 아니며 db가 집합의 모든 행을 잠그는 경우 왜 설명하는지 알려 주시면 감사하겠습니다.
트랜잭션을 사용하고 있습니까? (자동 커밋 = 꺼짐)? 추신 : 귀하의 검색어가 의미 론적으로 정확한지 확신합니까? – Sebas
아마 모든 행을 잠글 것이고, 그 이유는 MySQL이 롤오버이기 때문입니다. – GolezTrol
오, 그건 테이블 유형에 따라 다릅니다. http://dev.mysql.com/doc/refman/5.0/en/innodb-locks-set.html – GolezTrol