14.13.1.6 InnoDB 버퍼 풀 플래시 튜닝
구성 옵션 innodb_flush_neighbors
및 innodb_lru_scan_depth
를 사용하면 InnoDB
버퍼 풀 에 대한 플래시 프로세스의 특정 측면을 조정할 수 있습니다. 이 옵션은 주로 쓰기가 많은 워크로드 에 도움이됩니다. 부하가 높은 DML 활동은 그것이 충분히 적극적이지 않으면 플래시가 지연 버퍼 풀에서 과도한 메모리가 사용되는 경우가 있습니다. 또는 그 메커니즘이 적극적 너무 플래시가 디스크 쓰기에 의해 I / O 용량이 포화 상태가 있습니다. 이상적인 설정은 워크로드 데이터 액세스 패턴 및 스토리지 구성 (예를 들어, 데이터가 HDD 또는 SSD 장치 모두에 저장되어 있는지)에 따라 다릅니다.
워크로드 의 부하가 항상 높은 시스템 또는 작업 부하가 크게 변동하는 시스템에서는 여러 구성 옵션 innodb_adaptive_flushing_lwm
, innodb_max_dirty_pages_pct_lwm
, innodb_io_capacity_max
및 innodb_flushing_avg_loops
를 사용하여 InnoDB
테이블에 대한 플래시 동작을 조정할 수 있습니다. 이 옵션은 innodb_adaptive_flushing
옵션에 의해 사용되는 계산식에 입력됩니다.
innodb_adaptive_flushing
, innodb_io_capacity
및 innodb_max_dirty_pages_pct
옵션은 다음 옵션 innodb_adaptive_flushing_lwm
, innodb_io_capacity_max
및 innodb_max_dirty_pages_pct_lwm
의해 제한 또는 확장됩니다.
InnoDB
적응 형 플래시 메커니즘은 모든 경우에 적절한 것은 아닙니다. 이것이 가장 큰 혜택을 제공하는 것은 Redo 로그 가 가득 차면 우려가있는 경우입니다.innodb_adaptive_flushing_lwm
옵션은 Redo 로그 용량의 '낮은 경계 값 "의 비율 (%)을 지정합니다. 임계 값을 초과하면InnoDB
는innodb_adaptive_flushing
옵션으로 지정되어 있지 않은 경우에도 적응 형 플래시를 사용합니다.플래시 활동이 크게 지연되는 경우,
InnoDB
는innodb_io_capacity
로 지정되어보다 적극적으로 플래시 수 있습니다.innodb_io_capacity_max
는 I / O의 스파이크에 의해 서버의 모든 용량이 소비되어 버리지 않도록이 같은 긴급 상황에서 사용되는 I / O 용량의 상한을 나타냅니다.InnoDB
는 더티 페이지의 비율 (%)이innodb_max_dirty_pages_pct
값을 초과하지 않도록 버퍼 풀에서 데이터를 플래시하려고합니다.innodb_max_dirty_pages_pct
의 기본값은 75입니다.참고innodb_max_dirty_pages_pct
설정은 플래시 활동의 대상을 설정합니다. 플래시의 빈도에 영향을주지 않습니다. 플래시 주파수 관리는 섹션 14.13.1.2 "InnoDB 버퍼 풀 플러시 빈도 구성" 을 참조하십시오.innodb_max_dirty_pages_pct_lwm
옵션은 더티 페이지의 비율을 제어하기 위해 사전 플래시를 사용하여 이상적으로 더티 페이지의 비율 (%)이innodb_max_dirty_pages_pct
에 도달하지 않도록하는 더티 페이지의 비율 (%)을 나타내는 "낮은 경계 값 "의 값을 지정합니다.innodb_max_dirty_pages_pct_lwm=0
의 값을 지정하면 "사전 플래시"동작이 무효가됩니다.
상기 참조 된 옵션의 대부분은 쓰기 집약적 인 워크로드를 장기간 수행하고 있으며, 디스크에 쓰기를 대기하고있는 변경에 따라 잡기 위해로드 시간 단축이 거의없는 서버에 가장 적합 있습니다.
innodb_flushing_avg_loops
은 InnoDB
가 이전에 계산 된 플래시 상태의 스냅 샷을 보존하는 반복의 수를 정의합니다. 이것은 적응 형 플래시가 전경 부하의 변화에 얼마나 빠르게 응답하는 방법을 제어합니다. innodb_flushing_avg_loops
에 큰 값을 설정하면 InnoDB
가 이전에 계산 된 스냅 샷을 오랫동안 유지하기 위해 적응 형 플래시는 더 느리게 응답합니다. 큰 값은 또한 포 그라운드 작업과 백그라운드 작업 사이의 긍정적 인 피드백도 절감되지만 큰 값을 설정하는 경우, InnoDB
의 Redo 로그의 사용률이 75 % (비동기 플래시가 시작되는 하드 코드 된 제한)에 도달하지 않도록 할 및 innodb_max_dirty_pages_pct
설정에 의해 더티 페이지 수가 워크로드에 적합한 수준으로 유지되도록하는 것이 중요합니다.
워크로드에 일관성이 있고 innodb_log_file_size
가 크고 스파이크가 작기 때문에 Redo 로그 공간의 사용률이 75 %에 미달하는 시스템에서는 플래시를 최대한 부드러운 상태로 유지하는 데 큰 innodb_flushing_avg_loops
값을 사용하는 같이하십시오. 부하의 스파이크가 극단적 인 시스템 또는 로그 파일에서는 많은 공간이 제공되지 않는 시스템에서는 더 작은 innodb_flushing_avg_loops
값을 검토하십시오. 이 값을 작게하면 플래시에서 부하를 밀접하게 추적 할 수 있기 때문에 Redo 로그 공간의 사용률이 75 %에 도달하지 않도록하는 데 도움이됩니다.