Performance Schema vs MONITORING コマンド vs サードパーティ製ツール: KEY_CACHES テーブルの代替手段を比較
MariaDB の Information Schema KEY_CACHES
テーブルは、MariaDBサーバーのキーキャッシュに関する情報を提供します。キーキャッシュは、インデックスキーと対応するデータ行をメモリに保存することで、インデックス参照を高速化する重要なコンポーネントです。
テーブル構成
カラム名 | データ型 | 説明 |
---|---|---|
CACHE_NAME | VARCHAR(64) | キーキャッシュの名前 |
SEGMENT_NUMBER | BIGINT | セグメント番号(通常のキーキャッシュとセグメント化されたキーキャッシュの集計統計を含む行の場合は NULL に設定) |
FULL_SIZE | BIGINT | キャッシュバッファ/補助構造用のメモリ |
BLOCK_SIZE | BIGINT | ブロックのサイズ |
USED_BLOCKS | BIGINT | 使用されているブロック数 |
HIT_RATE | DOUBLE | ヒット率(キャッシュヒット/キャッシュアクセス) |
MISS_RATE | DOUBLE | ミス率(キャッシュミス/キャッシュアクセス) |
PUTS | BIGINT | キーキャッシュへの挿入回数 |
PUTS_FAILS | BIGINT | キーキャッシュへの挿入失敗回数 |
GETS | BIGINT | キーキャッシュからの取得回数 |
GETS_FAILS | BIGINT | キーキャッシュからの取得失敗回数 |
REMOVALS | BIGINT | キーキャッシュからの削除回数 |
プログラミングにおける活用例
- キーキャッシュのパフォーマンスのボトルネックを特定
ヒット率やミス率が低いキーキャッシュを特定することで、パフォーマンスのボトルネックを特定し、最適化することができます。 - 特定のキーキャッシュの統計情報を取得
CACHE_NAME
カラムを使用して、特定のキーキャッシュに関する詳細な統計情報を取得できます。 - キーキャッシュの使用状況を監視
KEY_CACHES
テーブルを使用して、キーキャッシュのヒット率、ミス率、挿入/取得回数などを監視することで、キーキャッシュのパフォーマンスと効率を評価できます。
- キーキャッシュのパフォーマンスは、ワークロードやサーバー構成によって大きく異なる場合があります。
- 他の
Information Schema
テーブルと同様に、KEY_CACHES
テーブルは読み取り専用です。 KEY_CACHES
テーブルは、MariaDB 5.5以降で使用できます。
例
SELECT * FROM INFORMATION_SCHEMA.KEY_CACHES;
このクエリは、すべてのキーキャッシュに関する情報を表示します。
SELECT CACHE_NAME, HIT_RATE, MISS_RATE FROM INFORMATION_SCHEMA.KEY_CACHES;
このクエリは、各キーキャッシュのヒット率とミス率を表示します。
SELECT CACHE_NAME, PUTS, PUTS_FAILS, GETS, GETS_FAILS FROM INFORMATION_SCHEMA.KEY_CACHES;
このクエリは、各キーキャッシュへの挿入/取得回数と失敗回数を表示します。
SELECT * FROM INFORMATION_SCHEMA.KEY_CACHES;
例 2: 各キーキャッシュのヒット率とミス率を表示
SELECT CACHE_NAME, HIT_RATE, MISS_RATE FROM INFORMATION_SCHEMA.KEY_CACHES;
例 3: 各キーキャッシュへの挿入/取得回数と失敗回数を表示
SELECT CACHE_NAME, PUTS, PUTS_FAILS, GETS, GETS_FAILS FROM INFORMATION_SCHEMA.KEY_CACHES;
例 4: 特定のキーキャッシュに関する詳細な統計情報を取得
SELECT * FROM INFORMATION_SCHEMA.KEY_CACHES WHERE CACHE_NAME = 'default';
例 5: ヒット率が低いキーキャッシュを特定
SELECT CACHE_NAME, HIT_RATE FROM INFORMATION_SCHEMA.KEY_CACHES WHERE HIT_RATE < 0.9;
例 6: キーキャッシュのパフォーマンスの推移を監視
SET @interval = 10; /* 10秒ごとに統計情報を取得 */
SELECT
@timestamp := NOW(),
CACHE_NAME,
HIT_RATE,
MISS_RATE,
PUTS,
PUTS_FAILS,
GETS,
GETS_FAILS
FROM INFORMATION_SCHEMA.KEY_CACHES;
INSERT INTO key_cache_stats (timestamp, cache_name, hit_rate, miss_rate, puts, puts_fails, gets, gets_fails)
VALUES (@timestamp, CACHE_NAME, HIT_RATE, MISS_RATE, PUTS, PUTS_FAILS, GETS, GETS_FAILS);
REPEAT WITH @i IN (SELECT @i + 1 FROM dual WHERE @i < 10); /* 10回繰り返す */
SET @timestamp := NOW();
SELECT
@timestamp := NOW(),
CACHE_NAME,
HIT_RATE,
MISS_RATE,
PUTS,
PUTS_FAILS,
GETS,
GETS_FAILS
FROM INFORMATION_SCHEMA.KEY_CACHES;
INSERT INTO key_cache_stats (timestamp, cache_name, hit_rate, miss_rate, puts, puts_fails, gets, gets_fails)
VALUES (@timestamp, CACHE_NAME, HIT_RATE, MISS_RATE, PUTS, PUTS_FAILS, GETS, GETS_FAILS);
END REPEAT;
この例では、10秒ごとにキーキャッシュの統計情報を取得し、key_cache_stats
テーブルに保存します。このテーブルを使用して、キーキャッシュのパフォーマンスの推移を分析できます。
- キーキャッシュのパフォーマンスは、ワークロードやサーバー構成によって大きく異なる場合があります。
- 他の
Information Schema
テーブルと同様に、KEY_CACHES
テーブルは読み取り専用です。 - 上記の例は、MariaDB 5.5以降で使用できます。
代替手段の選択肢
- MariaDB 5.5以降では、Performance Schemaがより詳細で包括的なキーキャッシュ統計情報を提供します。
events_statements_summary_by_digest
テーブルとevents_statements_histogram_by_digest
テーブルを使用して、キーキャッシュの使用状況とパフォーマンスを分析できます。- Performance Schemaは、
KEY_CACHES
テーブルよりも詳細な情報を提供しますが、複雑で習得するのが難しい場合があります。
MONITORINGコマンド
- MONITORコマンドを使用して、キーキャッシュに関する基本的な統計情報を取得できます。
key_reads
、key_writes
、key_blocks_used
などの変数を使用して、キーキャッシュの使用状況を監視できます。- MONITORコマンドはシンプルで使いやすいですが、
KEY_CACHES
テーブルほど詳細な情報を提供しません。
サードパーティ製ツール
pt-query-stats
やMySQLTuner
などのサードパーティ製ツールを使用して、キーキャッシュのパフォーマンスを分析できます。- これらのツールは、キーキャッシュに関する詳細な情報を提供し、パフォーマンスのボトルネックを特定するのに役立ちますが、インストールと設定が必要になる場合があります。
各代替手段の比較
代替手段 | 利点 | 欠点 |
---|---|---|
Performance Schema | 詳細で包括的な情報 | 複雑で習得するのが難しい |
MONITORINGコマンド | シンプルで使いやすい | 詳細な情報が限られている |
サードパーティ製ツール | 詳細な情報と分析機能 | インストールと設定が必要 |
最適な代替手段の選択
最適な代替手段は、ニーズと要件によって異なります。
- 詳細な情報と分析機能を備えた使いやすいツールが必要な場合は、サードパーティ製ツールが最適です。
- シンプルで使いやすいツールが必要な場合は、MONITORコマンドが最適です。
- 詳細なキーキャッシュ統計情報が必要で、複雑なツールを扱うことに抵抗がない場合は、Performance Schemaが最適です。
- キーキャッシュのパフォーマンスは、ワークロードやサーバー構成によって大きく異なる場合があります。
- 他の
Information Schema
テーブルと同様に、KEY_CACHES
テーブルは読み取り専用です。 KEY_CACHES
テーブルは、MariaDB 5.5以降で使用できます。