-- MySQL

MySQL 대용량 Insert

어린왕자악꿍 2013. 10. 15. 15:46

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)