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 構成変数の最適化

8.5.8 InnoDB 構成変数の最適化

軽量の予測可能な負荷のあるサーバーと、常時ほぼいっぱいの容量で実行していたり、高アクティビティーの急増が発生したりするサーバーとでは、もっとも適切に機能する設定が異なります。

InnoDB ストレージエンジンは、多くの最適化を自動的に実行するため、多くのパフォーマンスチューニングタスクには、データベースが適切に実行していることを確認するためのモニタリングと、パフォーマンスの低下時の構成オプションの変更が含まれます。詳細な InnoDB のパフォーマンスモニタリングについては、セクション14.13.11「InnoDB の MySQL パフォーマンススキーマとの統合」を参照してください。

もっとも重要で、最新の InnoDB パフォーマンス機能については、セクション14.13「InnoDB のパフォーマンス」を参照してください。以前のバージョンで InnoDB テーブルを使用していた場合でも、これらの機能は InnoDB プラグインからのものであるため、なじみがないと思われます。プラグインは MySQL 5.1 の組み込みの InnoDB と共存でき、MySQL 5.5 以上でのデフォルトのストレージエンジンになります。

実行できる主な構成ステップは次のようになります。

  • 高性能メモリーアロケータを装備するシステムで、InnoDB がそれらを使用できるようにします。セクション14.13.3「InnoDB のためのメモリーアロケータの構成」を参照してください。

  • 頻繁な小さなディスク書き込みを避けるため、InnoDB が変更されたデータをバッファーする DML 操作の種類を制御します。セクション14.13.4「InnoDB 変更バッファリングの構成」を参照してください。デフォルトはすべての種類の DML 操作をバッファーすることであるため、バッファリングの量を減らす必要がある場合にのみ、この設定を変更してください。

  • innodb_adaptive_hash_index オプションを使用して、アダプティブハッシュインデックス機能をオンまたはオフにします。詳しくはセクション14.2.13.6「適応型ハッシュインデックス」をご覧ください。異常なアクティビティーの間にこの設定を変更し、その後、その元の設定にリストアできます。

  • コンテキストスイッチングがボトルネックである場合に、InnoDB が処理する同時スレッドの数に制限を設定します。セクション14.13.5「InnoDB のスレッド並列性の構成」を参照してください。

  • InnoDB がその先読み操作で実行するプリフェッチの量を制御します。システムに未使用の I/O 容量がある場合、先読みによってクエリーのパフォーマンスが向上することがあります。先読みが多すぎると、負荷の大きいシステムで、パフォーマンスが周期的に低下する可能性があります。セクション14.13.1.1「InnoDB バッファープールのプリフェッチ (先読み) の構成」を参照してください。

  • デフォルト値で十分に活用されていないハイエンド I/O サブシステムがある場合、読み取りまたは書き込み操作のバックグラウンドスレッドの数を増やします。セクション14.13.6「InnoDB バックグラウンド I/O スレッドの数の構成」を参照してください。

  • バックグラウンドで InnoDB が実行する I/O の量を制御します。セクション14.13.8「InnoDB マスタースレッドの I/O レートの構成」を参照してください。バックグラウンド I/O の量は MySQL 5.1 より大きいため、パフォーマンスに周期的な低下が観察された場合、この設定を縮小した方がよいことがあります。

  • InnoDB が特定の種類のバックグラウンドの書き込みを実行するタイミングを判断するアルゴリズムを制御します。セクション14.13.1.2「InnoDB バッファープールのフラッシュの頻度の構成」を参照してください。アルゴリズムはワークロードの種類によって機能する場合と機能しない場合があるため、パフォーマンスに周期的な低下が観察された場合は、この設定をオフした方がよいことがあります。

  • コンテキストスイッチングの遅延を最小にするため、マルチコアプロセッサとそれらのキャッシュメモリー構成を利用します。セクション14.13.10「スピンロックのポーリングの構成」を参照してください。

  • テーブルスキャンなどの一度だけの操作が、InnoDB バッファーキャッシュに格納された頻繁にアクセスされるデータを妨げることを防ぎます。セクション14.13.1.3「バッファープールをスキャンに耐えられるようにする」を参照してください。

  • 信頼性とクラッシュリカバリに適切なサイズにログファイルを調整します。InnoDB ログファイルは、多くの場合にクラッシュ後の長い起動時間を避けるため、小さく維持されてきました。MySQL 5.5.4 で導入された最適化によって、クラッシュリカバリプロセスの特定のステップが高速化します。特に、Redo ログのスキャンと Redo ログの適用は、メモリー管理のアルゴリズムの改善のため、高速化します。長い起動時間を避けるため、ログファイルを人為的に小さく維持していた場合、ログファイルサイズを拡大し、Redo ログレコードのリサイクルのために発生する I/O を削減することを考慮できるようになりました。

  • InnoDB バッファープールのインスタンスのサイズと数を構成します。特に数ギガバイトのバッファープールのあるシステムに重要です。セクション14.13.1.4「複数のバッファープールインスタンスの使用」を参照してください。

  • 同時トランザクションの最大数を増やします。これはきわめてビジーなデータベースのスケーラビリティーを劇的に向上します。セクション14.13.12「複数のロールバックセグメントによるスケーラビリティーの向上」を参照してください。この機能は、日常の操作中のアクションを必要としませんが、データベースの MySQL 5.5 へのアップグレード中またはその後に、低速シャットダウンを実行して、制限を大きくできるようにする必要があります。

  • パージ操作 (ガベージコレクションの一種) をバックグラウンドスレッドに移動します。セクション14.13.13「InnoDB のパージスケジューリングの構成」を参照してください。この設定の結果を効率的に測定するには、ほかの I/O 関連およびスレッド関連の構成設定を先にチューニングします。

  • ビジーなサーバーで SQL 操作が列を成し、渋滞が発生しないように、InnoDB が同時スレッド間で実行するスイッチングの量を削減します。innodb_thread_concurrency オプションの値を設定します (強力な最新のシステムで最大約 32)。innodb_concurrency_tickets オプションの値を一般に 5000 程度に増やします。このオプションの組み合わせにより、InnoDB が一度に処理するスレッド数に制限を設定し、各スレッドがスワップアウトされるまでに大量の作業を実行できるようにするため、待機スレッドの数が少なくなり、過度なコンテキストスイッチングが発生せずに、操作を完了できます。


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