MySQL 대용량 Insert
MySQL에서 Insert를 수행할 때, 대용량의 레코드를 Insert하려면 수행속도가 많이 느리다.
대용량의 Insert를 위해서는 아래의 여러 방법으로 수행속도를 향상시킬 수 있다.
Index가 걸린 대용량 테이블이라면, Index를 해제하고 Insert를 하면 더 효과적이다.
- ALTER TABLE table DISABLE KEYS;
- INSERT INTO table (field1, field2) VALUES (....);
- ALTER TABLE table ENABLE KEYS;
해당 테이블을 Lock해도 된다면 Lock을 걸고 Insert하는 것이 더 효과적이다.
- ALTER TABLE table DISABLE KEYS;
- LOCK TABLES table WRITE;
- INSERT INTO table (field1, field2) VALUES (....);
- UNLOCK TABLES table WRITE;
- ALTER TABLE table ENABLE KEYS;
1. Insert 다중리스트
INSERT INTO table (field1, field2) VALUES ('value_11', 'value_12'),('value_21','value_22'), ... , ('value_n1','value_n2');
2. LOAD DATA INFILE
LOAD DATA INFILE '/data/data1.csv'
INTO TABLE table
FIELDS TERMINATED BY '\t'
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
(field1, field2)