Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  InnoDB バッファープールのプリフェッチ (先読み) の構成

14.13.1.1 InnoDB バッファープールのプリフェッチ (先読み) の構成

先読み要求とは、バッファープール内の複数のページがすぐに必要になるという予測のもとに、非同期にこれらのページのプリフェッチを行う I/O 要求のことです。これらの要求によって、すべてのページが 1 つのエクステント内に移動されます。InnoDB は、I/O パフォーマンスを向上させるために、次の 2 つの先読みアルゴリズムを使用します。

線形先読みは、順次にアクセスされているバッファープール内のページに基づいて、どのページがすぐに必要になる可能性があるかを予測する手法です。構成パラメータ 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 PluginInnoDB組み込みのバージョンになった時点では MySQL 5.5.0 に含まれていませんでした。ランダム先読みは、innodb_random_read_ahead 構成オプション (デフォルトでは無効になっています) とともに、MySQL 5.1.59 および 5.5.16 以降でふたたび導入されました。この機能を有効にするには、構成変数 innodb_random_read_aheadON に設定します。

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 の最適化」を参照してください。


User Comments
Sign Up Login You must be logged in to post a comment.