アプリケーション全体のパフォーマンス、CPU と I/O の使用率、およびディスクファイルのサイズは、アプリケーションでの圧縮の効率姓を示す適切な指標です。 このセクションは、セクション15.9.1.3「InnoDB テーブルの圧縮の調整」に示したパフォーマンスチューニングのアドバイスに基づいて構成され、初期のテスト時には発生する可能性のない問題を見つける方法を示しています。
圧縮テーブルのパフォーマンス上の考慮事項をさらに深く掘り下げるには、例15.1「圧縮情報スキーマテーブルの使用」に記載した「情報スキーマ」テーブルを使用すれば、実行時に圧縮のパフォーマンスをモニターできます。 これらのテーブルは、メモリーの内部使用および全体的に使用される圧縮の比率を反映しています。
INNODB_CMP
テーブルには、使用中の圧縮済みページサイズ (KEY_BLOCK_SIZE
) ごとに、圧縮アクティビティーに関する情報がレポートされます。 これらのテーブル内の情報は、システム全体のものであり、データベース内のすべての圧縮テーブルにわたる圧縮の統計を集約したものです。 このデータを使用すると、その他の圧縮テーブルがアクセスしていないときに、これらのテーブルを調査することでテーブルを圧縮するかどうかを決定する際に役立ちます。 これには、サーバー上で比較的小さいオーバーヘッドが伴うため、圧縮失敗の全体的な効率性をチェックするために、本番環境サーバー上で定期的にクエリーを実行することがあります。
INNODB_CMP_PER_INDEX
テーブルには、個別のテーブルおよびインデックスごとに、圧縮アクティビティーに関する情報がレポートされます。 この情報は、圧縮の効率性を評価し、一度に 1 つのテーブルまたはインデックスのパフォーマンス問題を診断する際に、より的を絞ることができ、より役立ちます。 (各 InnoDB
テーブルはクラスタ化されたインデックスとして表されるため、このコンテキストでは、MySQL でテーブルとインデックス間で大きな区別が行われません。) INNODB_CMP_PER_INDEX
テーブルには大量のオーバーヘッドが伴うため、さまざまなワークロード、データ、および圧縮設定の効果を分離して比較できる開発サーバーにより適しています。 このモニタリングのオーバーヘッドが誤って課されることを防ぐには、INNODB_CMP_PER_INDEX
テーブルのクエリーを実行する前に、innodb_cmp_per_index_enabled
構成オプションを有効にする必要があります。
考慮するべき主要な統計は、圧縮および圧縮解除操作の数、および実行に要する時間数です。 MySQL では、変更後に B-tree ノードがいっぱいになりすぎて圧縮データを含めることができない場合に分割されるため、「「成功」」圧縮操作の数とそのような操作の数を全体で比較します。 INNODB_CMP
および INNODB_CMP_PER_INDEX
テーブル内の情報、およびアプリケーション全体のパフォーマンスとハードウェアリソースの使用率に基づいて、ハードウェア構成の変更を行なったり、バッファープールのサイズを調整したり、別のページサイズを選択したり、圧縮する別のテーブルセットを選択したりすることがあります。
圧縮および圧縮解除するために必要な CPU 時間の合計が大きい場合は、高速またはマルチコアの CPU に変更すると、同じデータ、アプリケーションのワークロード、および圧縮テーブルのセットを使用してパフォーマンスを改善する際に役立つことがあります。 バッファープールのサイズを大きくすると、パフォーマンスの改善に役立つこともあります。これにより、より多くの非圧縮ページをメモリー内に滞在できるようになるため、圧縮形式でのみメモリー内に存在するページを圧縮解除する必要が少なくなります。
(アプリケーションでの INSERT
、UPDATE
、および DELETE
操作の数、およびデータベースのサイズと比較して) 圧縮操作全体の数が大きい場合は、効率的な圧縮としては、圧縮テーブルの一部が更新される頻度が高すぎることを示している可能性があります。 その場合は、より大きなページサイズを選択するか、圧縮するテーブルをより慎重に選択してください。
「正常な」圧縮操作の数 (COMPRESS_OPS_OK
) が圧縮操作の合計数 (COMPRESS_OPS
) の高い比率を占めている場合は、システムが正常に実行されている可能性が高くなります。 比率が低い場合は、MySQL によって理想よりも頻繁に、B ツリーノードの再編成、再圧縮、および分割が行われます。 この場合、一部のテーブルの圧縮を回避するか、圧縮テーブルの一部で KEY_BLOCK_SIZE
を大きくしてください。 テーブルの圧縮をオフにすると、アプリケーション内での「圧縮失敗」の数が合計の 1% または 2% を上回る可能性があります。 (このような失敗の比率は、データのロードなどの一時的な操作時には許容範囲内である場合もあります)。