[Mysql] MyISAM 테이블에서의 데이터 로드 방법
MyISAM 테이블에서 데이터를 로드할 경우 좀 더 성능있게 올릴 수 있는 방법을 공유합니다. 특히 많은 데이터를 로드할 경우 유용합니다.
1. local_infile ON 인지 확인
- Oracle에서 데이터 받을 경우
- 파일>변환?ASCII -> UTF-8 선택 후 저장
4. 로드에 필요한 성능 설정
- 성능 변수 조회
- 데이터 로드
- 기존 설정 원복
1. local_infile ON 인지 확인
mysql> show variables like '%infile%';2. 이관할 데이터 다운
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.00 sec)
- Oracle에서 데이터 받을 경우
oracle>set pages 0;- mysql에서 데이터 받을 경우
set lin 200
set term off
set trims on
spool off
spool post.txt
select '"'||E_WA||'","'
||E_CITY||'","'||E_SECTION||
'","'||E_VILLAGE||'","'||
E_ADDRESS||'","'||E_HUGEADDR||'","'||
E_F1||'","'||E_F2||'","'||E_ZIPCODE||'","'||
E_DIST||'"'
from ZIPTBL;
spool off;
mysql>select E_WA, E_CITY, E_SECTION, E_VILLAGE,3. utf-8 변환 (UltraEditor)
E_ADDRESS, E_HUGEADDR, E_F1,
E_F2, E_ZIPCODE, E_DIST
into outfile "/home/k2/post.txt"
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
from ZIPTBL;
- 파일>변환?ASCII -> UTF-8 선택 후 저장
4. 로드에 필요한 성능 설정
- 성능 변수 조회
mysql> show variables like '%buffer%';- 성능 설정
+-------------------------------+----------+
| Variable_name | Value |
+-------------------------------+----------+
| bulk_insert_buffer_size | 8388608 |
| innodb_buffer_pool_awe_mem_mb | 0 |
| innodb_buffer_pool_size | 8388608 |
| innodb_log_buffer_size | 1048576 |
| join_buffer_size | 131072 |
| key_buffer_size | 16777216 |
| myisam_sort_buffer_size | 8388608 |
| net_buffer_length | 8192 |
| preload_buffer_size | 32768 |
| read_buffer_size | 258048 |
| read_rnd_buffer_size | 520192 |
| sort_buffer_size | 524280 |
+-------------------------------+----------+
12 rows in set (0.00 sec)
mysql> set session BULK_INSERT_BUFFER_SIZE=256217728;5. 데이터 로드
Query OK, 0 rows affected (0.00 sec)
mysql> set session MYISAM_SORT_BUFFER_SIZE=256217728;
Query OK, 0 rows affected (0.00 sec)
mysql> set global KEY_BUFFER_SIZE=256217728;
Query OK, 0 rows affected (0.05 sec)
mysql> alter table ziptbl disable keys;
Query OK, 0 rows affected (0.00 sec)
- 데이터 로드
mysql>LOAD DATA INFILE '/home/k2/post.txt'- 기존 설정으로는 3분 30초 나왔음
INTO TABLE post FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\n'
(e_wa,e_city,e_section,e_village,e_address,
e_hugeaddr,e_f1,e_f2,e_code,e_dist);
Query OK, 4675823 rows affected (1 min 15.05 sec)
Records: 4675823 Deleted: 0 Skipped: 0 Warnings: 0
- 기존 설정 원복
mysql> alter table ziptbl enable keys;
Query OK, 0 rows affected (0.00 sec)








