MySQL은 tmp 테이블을 정리하는 데 너무 많은 시간을 소비합니다.

MySQL은 tmp 테이블을 정리하는 데 너무 많은 시간을 소비합니다.

AWS RDS MySQL 인스턴스에서 일부 Django 마이그레이션을 실행하고 있습니다. 우리 팀은 마이그레이션을 매우 철저하게 테스트했으며 제대로 실행되었습니다(프로덕션 데이터 복사본에 대해 랩톱에서 실행하는 경우에도 30분 미만 소요).

이제 프로덕션 DB를 마이그레이션하니 2시간 넘게 걸리네요. 내가 실행할 때 :

mysql> SHOW PROCESSLIST;

활성 프로세스를 볼 수 있고 작업이 진행되고 있지만 매우 느립니다. 마이그레이션은 데이터 마이그레이션 중에 있으며 SELECT 문(ORM을 통해 100개의 일괄 처리로 행을 가져오는 중)에는 각각 최대 32초가 소요됩니다. 마지막 30초는 "tmp 테이블 제거" 상태에서 소비됩니다.

이 문제의 원인이 무엇인지 아시나요?

답변1

우리는 ORM을 통해 100개의 일괄 처리로 행을 가져오고 있습니다.

데이터 일괄 처리에 대한 비효율적인 쿼리입니다. DBMS는 임시 테이블을 사용하기 때문에 출력 데이터 세트에 포함된 것보다 훨씬 더 많은 데이터를 검사해야 하며 대부분이 삭제됩니다.

StackOverflow로 이동하여 보다 구체적인 조언을 위해 데이터를 추출하는 데 사용하는 스키마와 쿼리를 게시하세요. 하지만 IME, ORM은 원칙적으로 너무 손상되어 일반적으로 효율적으로 작동시키려고 노력하는 것보다 팩토리로 전환하는 것이 더 쉽습니다. 안정적으로.

관련 정보