14.13.1.2 InnoDB 버퍼 풀 플러시 빈도 구성
InnoDB는 버퍼 풀 의 더티 페이지 (변경 되었으나 아직 데이터베이스 파일에 기록되지 않은 페이지)의 플래시 등의 특정 작업을 백그라운드에서 실행합니다. InnoDB는 현재 버퍼 풀의 더티 페이지의 비율 (%)이 innodb_max_dirty_pages_pct
을 초과하는 경우에 버퍼 풀 페이지를 플래시합니다.
InnoDB는 Redo 로그 생성 속도와 플래시의 현재의 빈도에 따라 플래시의 필요한 빈도를 추정하는 알고리즘을 사용합니다. 그 목적은 버퍼 플러시 활동이 항상 버퍼 풀을 "깨끗한"상태로 유지하기 위해 필요에 대응되도록하여 전반적인 성능을 부드럽게 할 수 있습니다. 플래시 빈도의 자동 조정은 보통의 읽기 및 쓰기 활동에 사용 가능한 I / O 용량이 버퍼 풀의 과도한 플래시에 의해 제한되는 같은 경우 처리량의 급격한 하락을 방지하는 데 도움 수 있습니다.
InnoDB는 로그 파일을 순환 적으로 사용합니다. 로그 파일의 일부를 재사용하기 전에 InnoDB는 Redo 로그 파일 엔트리가 그 부분에 포함되어있는 더티 버퍼 풀 페이지를 모든 디스크에 플래시합니다. 이 프로세스는 샤프 체크 포인트 라고합니다. 쓰기가 많은 워크로드에서는 모든 로그 파일에 기록 된 많은 Redo 정보가 생성됩니다. 로그 파일에서 사용 가능한 모든 공간이 부족 해지면 샤프 체크 포인트가 발생하기 때문에 처리량이 일시적으로 감소합니다. 이 상황은 innodb_max_dirty_pages_pct
에 도달하지 않더라도 발생할 수 있습니다.
InnoDB 버퍼 풀의 더티 페이지 수와 Redo가 생성되는 비율을 측정함으로써 이러한 시나리오를 해결하려면 경험칙에 근거한 알고리즘을 사용합니다. 이러한 수치에 따라 InnoDB 버퍼 풀에서 초당 플래시 더티 페이지 수를 결정합니다. 이 자기 적응 형 알고리즘은 워크로드의 갑작스런 변화에 대처할 수 있습니다.
내부 벤치 마크에서도 나타나고있는 바와 같이,이 알고리즘은 일정 기간 동안 처리량을 유지뿐만 아니라 전체 처리량도 크게 향상시킬 수 있습니다.
적응 형 플래시는 워크로드의 I / O 패턴에 큰 영향을 미칠 수 있기 때문에 innodb_adaptive_flushing
구성 매개 변수를 사용하여이 기능을 해제 할 수 있습니다. innodb_adaptive_flushing
의 기본값은 TRUE
이며, 적응 형 플래시 알고리즘을 사용할 수 있습니다. 이 매개 변수의 값은 MySQL 옵션 파일 ( my.cnf
또는 my.ini
)로 설정하거나 SET GLOBAL
명령 (여기에는 SUPER
권한이 있어야합니다)에서 동적으로 변경할 수 있습니다.
InnoDB의 I / O 성능 자세한 내용은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 를 참조하십시오.