jc01rho의 일상잡다

[MySQL] innoDB INSERT 속도 향상 방법 본문

컴퓨터/PHP & MYSQL & 웹

[MySQL] innoDB INSERT 속도 향상 방법

jc01rho 2012.06.04 03:49

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횟수 자체도 줄어듭니다.


[참고자료] http://www.jakartaproject.com/board-read.do?boardId=dbtip&boardNo=111223586558100&command=READ&page=1&categoryId=-1

0 Comments
댓글쓰기 폼