알아야 할 한 가지 병목 현상은 InnoDB 로그 버퍼입니다. 크기는 innodb_log_buffer_size에 의해 설정됩니다 . 다음은 MySQL 설명서에 대한 내용입니다.
InnoDB가 디스크의 로그 파일에 쓰는 데 사용하는 버퍼 크기 (바이트)입니다. 기본값은 8MB입니다. 큰 로그 버퍼를 사용하면 트랜잭션을 커밋하기 전에 디스크에 로그를 쓰지 않고도 큰 트랜잭션을 실행할 수 있습니다. 따라서 큰 트랜잭션이있는 경우 로그 버퍼를 크게하면 디스크 I / O가 절약됩니다.
InnoDB 로그 버퍼를 InnoDB 버퍼 풀과 혼동해서는 안됩니다. 그들 사이의 주요 차이점은 그들의 목적입니다. InnoDB 로그 버퍼는 기본적으로 리두 로그 (ib_logfile0, ib_logfile1)에 기록되는 단기 변경 사항을 기록합니다. InnoDB 버퍼 풀 ( innodb_buffer_pool_size로 크기 조정 )은 커밋 (페이지가 더티 인 경우)되고 결국 기록 될 데이터 및 인덱스 페이지를 디스크에 캐시합니다. 일단 커밋되면 변경 페이지는 LRU 규칙을 통해 제거 될 때까지 RAM에 남아 있습니다.
큰 트랜잭션은 로그 버퍼를 통과해야합니다. 언급했듯이 로그 버퍼가 클수록 디스크 I / O가 줄어 듭니다. 커밋이 크면 병목 현상이 발생합니다.
구성 할 다른 InnoDB 옵션을 살펴볼 수 있습니다.
추가 연구를 위해 InnoDB 최적화에 대한 다른 게시물이 있습니다.