MySQL LOAD DATA INFILE 성능 최적화
LOAD DATA INFILE 명령을 사용하여 MySQL 테이블로 대량의 데이터를 가져올 때 성능이 저하될 수 있습니다. 상당한 우려. 발생하는 한 가지 문제는 키 없이 가져오기(데이터 로드 속도는 빨라지지만 키 생성 속도는 느려짐)와 키를 사용하여 가져오기(가져오기 프로세스 속도가 느려짐) 간의 균형입니다. 다음은 가져오기 속도를 높이는 몇 가지 전략입니다.
기본 키에 따른 데이터 정렬:
데이터를 로드하기 전에 기본 키 순서에 따라 CSV 파일을 정렬하세요. 대상 테이블. 이는 InnoDB를 사용할 때 특히 유용합니다. 클러스터된 기본 키를 사용하므로 정렬 시 데이터가 더 빠르게 로드됩니다.
제약조건 비활성화:
일시적으로 고유 키와 외부 키를 비활성화합니다. 가져오기 속도를 향상시키기 위한 키 제약 조건(unique_checks = 0 설정; foreign_key_checks = 0; 설정) 데이터가 로드되면 이러한 제약 조건을 다시 활성화할 수 있습니다(unique_checks = 1 설정; foreign_key_checks = 1; 설정).
바이너리 로깅 비활성화:
바이너리 로깅 비활성화 (sql_log_bin=0; 설정)은 가져오기 시간을 늘릴 수도 있습니다. 활성화되면 MySQL은 복제 목적으로 모든 쓰기 쿼리를 바이너리 로그에 기록합니다. 비활성화하면 데이터 로드에 사용할 수 있는 리소스가 확보됩니다.
테이블 자르기:
데이터를 로드하기 전에 대상 테이블을 잘라 기존 행을 제거합니다(< 자르기 ;테이블>;). 이렇게 하면 가져오려는 데이터가 테이블의 유일한 데이터가 됩니다.
CSV 파일 분할:
CSV 파일이 매우 큰 경우 다음으로 분할하는 것이 좋습니다. 더 작은 덩어리. 이를 통해 MySQL은 데이터를 더 작은 배치로 로드하여 각 로드 작업에 필요한 시간을 줄일 수 있습니다.
느린 쿼리 종료:
MySQL을 다시 시작하지 않고 느린 쿼리를 종료하려면 , KILL QUERY 명령을 사용하십시오. 이 명령은 MySQL 명령줄에서 실행하거나 phpMyAdmin과 같은 도구를 사용하여 실행할 수 있습니다.
추가 팁:
위 내용은 대규모 데이터 가져오기를 위해 MySQL LOAD DATA INFILE 성능을 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!