>데이터 베이스 >MySQL 튜토리얼 >대규모 데이터 가져오기를 위해 MySQL LOAD DATA INFILE 성능을 어떻게 최적화할 수 있습니까?

대규모 데이터 가져오기를 위해 MySQL LOAD DATA INFILE 성능을 어떻게 최적화할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-07 19:01:02263검색

How Can I Optimize MySQL LOAD DATA INFILE Performance for Large Data Imports?

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과 같은 도구를 사용하여 실행할 수 있습니다.

추가 팁:

  • 피하려면 REPLACE 또는 INSERT IGNORE 옵션을 사용하세요. 중복 키 오류.
  • 임시 테이블이 생성되지 않도록 하려면 LOCAL 키워드를 사용하세요. import.
  • 충분한 RAM과 CPU 리소스를 갖춘 고성능 서버를 사용하세요.

위 내용은 대규모 데이터 가져오기를 위해 MySQL LOAD DATA INFILE 성능을 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.