14.13.1.1 InnoDB 버퍼 풀의 인출 (미리 읽기) 구성
미리 요청은 버퍼 풀 내의 여러 페이지가 곧 필요하게 될 것이라는 예측하에 비동기 적으로 이러한 페이지 프리 페치하는 I / O 요청입니다. 이러한 요구에 따라 모든 페이지가 하나의 범위 내에 이동됩니다. InnoDB는 I / O 성능을 향상시키기 위해 두 개의 예측 알고리즘을 사용합니다.
선형 예측은 순차적으로 액세스되는 버퍼 풀의 페이지에 따라 어떤 페이지가 곧 필요할 수 있는지를 예측하는 방법입니다. 구성 매개 변수 innodb_read_ahead_threshold
를 사용하여 비동기 읽기 요청을 트리거하는 데 필요한 순차 페이지 액세스 수를 조정함으로써 InnoDB가 언제 예측 작업을 수행할지 여부를 제어합니다. 이 매개 변수가 추가되기 전에, InnoDB는 현재 범위의 마지막 페이지를 읽을 때 다음의 범위 전체에 대한 비동기 프리 페치 요청을 발행 여부를 추측뿐이었습니다.
구성 매개 변수 innodb_read_ahead_threshold
순차 페이지 액세스 패턴의 검출에 대해 InnoDB가 얼마나 빨리 반응 하는지를 제어합니다. 범위에서 순차적으로 읽은 페이지 수가 innodb_read_ahead_threshold
이상인 경우, InnoDB는 다음의 범위 전체 비동기 미리 읽기 작업을 시작합니다. 이것은 0에서 64까지의 임의의 값으로 설정할 수 있습니다. 기본값은 56입니다. 이 값이 클수록 액세스 패턴의 체크는 엄격하게됩니다. 예를 들어,이 값을 48으로 설정하면, InnoDB는 현재 범위의 48 페이지가 순차적으로 액세스 된 경우에만 선형 예측 요청을 트리거합니다. 이 값이 8 인 경우, InnoDB는 익스텐트의 8 페이지가 순차적으로 액세스 된 것만으로도 비동기 예측을 트리거합니다. 이 매개 변수의 값은 MySQL 구성 파일 에서 설정하거나 SET GLOBAL
명령 (여기에는 SUPER
권한이 있어야합니다)에서 동적으로 변경할 수 있습니다.
랜덤 예측은 이미 버퍼 풀에있는 페이지에 따라 이러한 페이지를 읽은 순서에 관계없이 페이지가 필요한시기 가능성이 있는지를 예측하는 방법입니다. 같은 범위에서 13 개의 연속 된 페이지가 버퍼 풀에 발견되면 InnoDB는 그 범위의 나머지 페이지 프리 페치하는 요구를 비동기 적으로 발행합니다.
랜덤 예측 기능은 InnoDB Plugin
(버전 1.0.4)에서 삭제 되었기 때문에, InnoDB Plugin
이 InnoDB
의 "내장"버전이 시점에서는 MySQL 5.5.0에 포함되지 않았습니다. 랜덤 예측은 innodb_random_read_ahead
구성 옵션 (기본적으로 비활성화되어 있습니다)과 함께 MySQL 5.1.59 및 5.5.16 이후에 다시 도입되었습니다. 이 기능을 사용하려면 구성 변수 innodb_random_read_ahead
를 ON
으로 설정합니다.
SHOW ENGINE INNODB STATUS
명령은 예측 알고리즘의 효율성을 평가하는 데 도움이 통계를 표시합니다. 통계는 Innodb_buffer_pool_read_ahead
및 Innodb_buffer_pool_read_ahead_evicted
글로벌 상태 변수의 카운터 정보가 포함되어 있습니다. 이러한 정보는 innodb_random_read_ahead
설정을 조정하는 데 도움이 될 수 있습니다.
또한 MySQL 5.6에서 랜덤 미리 읽기 기능을 부활 한 것으로, SHOW ENGINE INNODB STATUS
명령에는 Innodb_buffer_pool_read_ahead_rnd
가 다시 포함되어 있습니다. Innodb_buffer_pool_read_ahead
은 그 현재의 이름을 유지하고 있습니다. (이전 릴리스에서는 Innodb_buffer_pool_read_ahead_seq
으로 표시했습니다.)
I / O 성능 자세한 내용은 섹션 8.5.7 "InnoDB 디스크 I / O 최적화" 및 섹션 8.11.3 "디스크 I / O 최적화" 를 참조하십시오.