본문으로 바로가기
반응형

innodb_flush_log_at_trx_commit

 

MySQL, MariaDB에서 사용되는 Redo log 옵션(innodb_flush_log_at_trx_commit)에 대해 알아본다.

 

Redo log의 기록 옵션은 총 3가지로 innodb_flush_log_at_trx_commit 옵션에 의해 결정된다.

innodb_flush_log_at_trx_commit 는 커밋 로그에 대하여 Disk Flush를 언제 발생 시킬지에 대한 옵션이다.
기본값은 1로 설정이 되어있고 1은 트랜젝션이 발생할 때마다 디스크에 플러시가 발생한다.
2로 설정하면 1초마다 디스크로 플러시가 발생하게되고, 그만큼 io가 줄어들기때문에 성능 향상을 기대할 수 있다.
(단 장애시 1초 정도의 트랜젝션은 유실될 수 있다.)

 

1. innodb_flush_log_at_trx_commit 0

   : 1초 간격으로 Disk에 Flush(저장)

   : 트랜잭션(commit, rollback)에 관계없이 1초 간격으로 disk에 기록하므로, disk 쓰기 요청이 많은 편이며, 1초 간격이라는 의미로 데이터의 안정성이 보장되는 편(1초내외)

 

2. innodb_flush_log_at_trx_commit 1 (default)

   : 트랜잭션 시(commit, rollback) 로그 파일과 데이터 파일에 기록로그 버퍼는 각 트랜젝션이 실행될 때마다 로그 파일에 기록되고 로그 파일에서 디스크 연산에 대한 플러시가 실행된다.

 

3. innodb_flush_log_at_trx_commit 2

   : 트랜잭션 시(commit, rollback) 로그 파일에만 기록, 매초 데이터 파일에 기록

 

* 위에서 언급된 1초 간격의 Flush는 프로세스 스케쥴링에 따라 차이가 발생할 수 있다.

성능 차이는 1이 가능 느리지만, 데이터 보장에 대한 설정은 1이 가장 좋다.

성능을 우선으로 생각하는 시스템의 경우 0, 2 옵션을 추천.

반응형

'DBMS > MySQL' 카테고리의 다른 글

MySQL Rhel7 5.7 설치  (0) 2018.01.15