![How to Optimize MySQL Data Import using Load Data Infile for Tables with Keys?](https://img.php.cn/upload/article/000/000/000/173102694445894.jpg)
Load Data Infile을 사용하여 MySQL 데이터 가져오기 최적화
대규모 데이터 세트를 MySQL 테이블로 가져오는 것은 시간이 많이 걸리는 작업일 수 있습니다. "데이터 파일 로드..." 명령을 사용할 때 속도와 데이터 무결성의 균형을 맞추는 것이 어려울 수 있습니다. 이 질문은 특히 키가 있는 테이블의 경우 이러한 가져오기 성능을 향상시키는 방법을 탐구합니다.
가져오기 속도 증가
질문에서 언급된 주요 관심사는 느린 키입니다. 키 없이 데이터를 가져온 후 생성됩니다. 이 문제를 해결하려면:
-
CSV 파일 정렬: 테이블의 기본 키 순서대로 CSV 파일의 데이터를 정렬합니다. 이는 Innodb가 더 빠른 로딩을 위해 클러스터된 기본 키 구조를 활용하는 데 도움이 됩니다.
-
제약 조건 비활성화: 로딩 중 오버헤드를 줄이기 위해 고유 키 및 외래 키 검사를 일시적으로 비활성화합니다. set Unique_checks = 0; 명령을 사용하십시오. 그리고 foreign_key_checks = 0;을 설정하십시오.
-
Binlogging 비활성화: 성능 향상을 위해 로깅을 우회하려면 바이너리 로깅을 끄십시오(sql_log_bin=0; 설정).
-
분할 대용량 파일: 대용량 CSV 파일을 작은 덩어리로 나누고 개별적으로 로드합니다. 이렇게 하면 메모리 소비가 줄어들고 프로세스 속도가 빨라질 수 있습니다.
키 생성 속도 향상
데이터를 로드한 후 키를 재구축하는 작업에는 시간이 오래 걸릴 수 있습니다. 다음은 몇 가지 제안 사항입니다.
-
대량 삽입: 키가 있는 데이터를 한 번에 가져오려면 LOAD DATA INFILE 문 내에서 BULK INSERT 절을 사용하세요.
-
적응형 해시 인덱스: 적응형 해시 인덱스 활성화 (innodb_adaptive_hash_index=ON) 자주 사용되는 쿼리에 대한 인덱스 생성 속도를 높입니다.
-
병렬 인덱싱: 가능하다면 병렬 인덱싱(innodb_parallel_alter=ON)을 사용하여 인덱스 생성을 위한 여러 스레드를 생성하세요. 시간을 단축하다 take.
느린 쿼리 종료
종료 후에도 계속 실행되는 느린 쿼리를 종료하려면 다음을 고려하세요.
-
연결 재시도: MySQL 서버 연결을 끊었다가 다시 연결하여 정상적으로 종료하세요. query.
-
쿼리 ID 사용: SHOW PROCESSLIST를 사용하여 쿼리 ID를 식별하고 KILL [QUERY_ID]를 사용하여 종료합니다.
-
MySQL을 다시 시작합니다: As 최후의 수단으로 MySQL을 다시 시작하면 실행 중인 모든 쿼리가 종료됩니다. 다만, 서비스 중단이 발생할 수 있습니다.
위 내용은 키가 있는 테이블에 대한 데이터 Infile 로드를 사용하여 MySQL 데이터 가져오기를 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!