source

한 번에 4천만 개의 mysql 셀 업데이트

factcode 2023. 7. 13. 21:10
반응형

한 번에 4천만 개의 mysql 셀 업데이트

mysql에 있는 약 4천만 개의 데이터를 한 번에 업데이트할 수 있습니까?업데이트란 테이블을 가져와 그 일부를 훨씬 더 큰 다른 테이블에 복사하는 것을 의미합니다.그것은 한 시간에 한 번씩 일어나야 할 것입니다.

구문은 다음과 같습니다.

INSERT INTO much_larger_table (cols...)
  SELECT cols... FROM a_table
  WHERE ...conditions...;

(테이블에 대한 설명이 없기 때문에 자리 표시자를 사용하고 있습니다.

이와 같은 구문을 사용하여 복사할 수 있는 행 수에는 제한이 없지만 한 번에 수행할 작업 수에는 실질적인 제한이 있습니다.

물론 시간이 걸릴 것입니다.서버와 테이블에 관련된 많은 요인에 따라 달라지기 때문에 시간이 얼마나 걸릴지 예측할 수 없습니다.예약된 작업 사이에 한 시간 이상 걸릴 수 있습니다.

위험은 INSERT가...이와 같은 SELECT 문은 오리진 테이블에서 읽을 때 행을 잠급니다.즉, 어떤 세션도 해당 행을 수정할 수 없으며 갭 잠금에 따라 해당 테이블의 다른 행을 삽입하거나 업데이트할 수도 없습니다.

나는 우리 회사 개발자들에게 한 거래당 배치를 1000 행으로 제한하라고 말합니다.이를 통해 각 트랜잭션을 신속하게 완료하고, 잠긴 행 수와 잠금 기간을 줄이며, MySQL 가비지 수집을 계속할 수 있습니다.

언급URL : https://stackoverflow.com/questions/67690469/updating-40-million-mysql-cells-at-once

반응형