軽量の予測可能な負荷のあるサーバーと,常時ほぼいっぱいの容量で実行していたり,高アクティビティーの急増が発生したりするサーバーとでは,もっとも適切に機能する設定が異なります。
InnoDB
ストレージエンジンは,多くの最適化を自動的に実行するため,多くのパフォーマンスチューニングタスクには,データベースが適切に実行していることを確認するためのモニタリングと,パフォーマンスの低下時の構成オプションの変更が含まれます。詳細なInnoDB
のパフォマンスモニタリングにいては,セクション14.13.11 " InnoDBのMySQLパフォマとの統合"を参照してください。
もっとも重要で,最新のInnoDB
パフォマンス機能にいては,セクション14.13 " InnoDBのパフォマンス"を参照してください。以前のバジョンでInnoDB
テブルを使用していた場合でも,これらの機能は「InnoDBプラグン」からのものであるため,なじみがないと思われます。プラグelogンは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で導入された最適化によって,クラッシュリカバリプロセスの特定のステップが高速化します。特に,重做ログのスキャンと重做ログの適用は,メモリ管理のアルゴリズムの改善のため,高速化します。長い起動時間を避けるため,ログファイルを人為的に小さく維持していた場合,ログファイルサイズを拡大し,重做ログレコードのリサイクルのために発生する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
が一度に処理するスレッド数に制限を設定し,各スレッドがスワップアウトされるまでに大量の作業を実行できるようにするため,待機スレッドの数が少なくなり,過度なコンテキストスイッチングが発生せずに,操作を完了できます。