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.6 InnoDB バッファープールのフラッシュのチューニング

構成オプション innodb_flush_neighbors および innodb_lru_scan_depth を使用すると、InnoDB バッファープールに対するフラッシュプロセスの特定の側面を微調整できます。これらのオプションは主に、書き込みの多いワークロードに役立ちます。負荷の高い DML アクティビティーでは、それが十分に積極的でないとフラッシュが遅延して、バッファープールで過剰なメモリーが使用される場合があります。または、そのメカニズムが積極的すぎると、フラッシュによるディスク書き込みによって I/O 容量が飽和する場合があります。理想的な設定は、ワークロード、データのアクセスパターン、およびストレージ構成 (たとえば、データが HDD または SSD デバイスのどちらに格納されているか) によって異なります。

ワークロードの負荷が常時高いシステム、またはワークロードが大幅に変動するシステムでは、複数の構成オプション innodb_adaptive_flushing_lwminnodb_max_dirty_pages_pct_lwminnodb_io_capacity_max、および innodb_flushing_avg_loops を使用して InnoDB テーブルに対するフラッシュ動作を微調整できます。これらのオプションは、innodb_adaptive_flushing オプションによって使用される計算式に入力されます。

innodb_adaptive_flushinginnodb_io_capacity、および innodb_max_dirty_pages_pct オプションは、次のオプション innodb_adaptive_flushing_lwminnodb_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% に達しないようにするのに役立ちます。


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