LOAD DATA INFILE을 통해 100GB 파일을로드하고 있습니다. 나는 몇 시간 동안 MyISAM으로 성공을 거두었습니다.
InnoDB를 사용하여 지금 시도하고 있습니다. 로드는 10MB / 초 이상으로 빠르게 시작됩니다 (테이블 파일 증가를 감시하고 file_per_table
켜져 있음).
그러나 약 5GB의 데이터 후에는 2-4MB / sec 범위로 느려집니다. 20GB를 초과하면 약 2MB / 초로 줄었습니다.
InnoDB 버퍼 풀 크기는 8G입니다. 그리고 LOAD DATA INFILE 명령을 실행하기 전에 다음을 수행했습니다.
SET @@session.sql_log_bin=0;
SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;
alter table item_load disable keys;
//Run LOAD DATA INFILE....
나는 그것이 잘 시작하고 시간이 지남에 따라 느려지는 이유를 알 수 없습니다.
또한 동일한 설정을 사용하여 InnoDB와 MyISAM 및 5GB 테스트 데이터 세트를 사용하는 테이블에서 동일한 LOAD DATA INFILE 명령을 실행했는데 MyISAM은 20 배 빨라졌습니다.
InnoDB :
mysql> LOAD DATA CONCURRENT LOCAL INFILE '/tmp/item' REPLACE INTO TABLE item_load;
Query OK, 2630886 rows affected, 6 warnings (21 min 25.38 sec)
Records: 2630886 Deleted: 0 Skipped: 0 Warnings: 6
MyISAM :
mysql> LOAD DATA CONCURRENT LOCAL INFILE '/tmp/item' REPLACE INTO TABLE item_load;
Query OK, 2630886 rows affected, 6 warnings (1 min 2.52 sec)
Records: 2630886 Deleted: 0 Skipped: 0 Warnings: 6
내가 시도해야 할 다른 것이 있습니까? MyISAM 엔진은로드 속도를 훨씬 더 잘 유지할 수 있습니다.
추가 세부 사항:
파일을 개별적으로로드하려고 시도했지만 아무런 차이가 없습니다.
덧붙여서, 나는 각각 500MB의 150 파일을 가지고 있으며, 각 파일 내에 키가 정렬되어 있습니다.
12 시간 후 밤새 40GB를 확보 한 후로드 속도가 0.5MB / 초로 낮아져 실제로는 작동이 불가능합니다.
다른 포럼에서 비슷한 질문에 대한 다른 답변을 찾지 못했습니다 .InnoDB는 대량의 데이터를 몇 GB 크기의 테이블에로드하는 것을 지원하지 않는 것 같습니다.