2015년 6월 2일 화요일

[MySQL] innoDB INSERT 속도 향상 방법

출처: http://blog.naver.com/websearch/70137947078

MySQL innoDB 에서 INSERT 하는 속도를 MyISAM 과 유사하게 변경하는 방법은 다음과 같다.

innodb_flush_log_at_trx_commit 설정값을 확인한다.

mysql> show variables like 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 1     | 
+--------------------------------+-------+
1 row in set (0.00 sec)

innodb_flush_log_at_trx_commit 설정값이 1 이면 아래와 같이 실행하여서 0 으로 수정한다.
  - 아래와 같이 설정하면 INSERT 할 때에 로그 파일에 기록하지 않기 때문에 INSERT 속도가 향상된다. 단, 서버 비정상 종료 또는 정전과 같은 상황에서 INSERT 한 데이터를 잃어버릴 수 있다.

mysql> set global innodb_flush_log_at_trx_commit=0;

innodb_flush_log_at_trx_commit
이 옵션은 commit 을 하였을 경우 그 즉시 commit된 데이타를 log file 에 기록할 것인지 아닌지를 설정하는 옵션입니다. 즉시 로그 파일에 기록할 경우 급작스런 정전 같은 경우 데이타 손실을 막을 수 있지만 매번 로그를 기록해야 하므로 속도가 상당히 저하됩니다.
0 으로 설정할 경우 매 트랜잭션 마다 데이타를 로그에 기록하지 않으므로 I/O부하를 줄일 수 있으며 여러 트랜잭션을 모아서 한번의 디스크 I/O로 기록하므로 I/O횟수 자체도 줄어듭니다.

댓글 없음:

댓글 쓰기