Performance Schema vs MONITORING コマンド vs サードパーティ製ツール: KEY_CACHES テーブルの代替手段を比較


MariaDB の Information Schema KEY_CACHES テーブルは、MariaDBサーバーのキーキャッシュに関する情報を提供します。キーキャッシュは、インデックスキーと対応するデータ行をメモリに保存することで、インデックス参照を高速化する重要なコンポーネントです。

テーブル構成

カラム名データ型説明
CACHE_NAMEVARCHAR(64)キーキャッシュの名前
SEGMENT_NUMBERBIGINTセグメント番号(通常のキーキャッシュとセグメント化されたキーキャッシュの集計統計を含む行の場合は NULL に設定)
FULL_SIZEBIGINTキャッシュバッファ/補助構造用のメモリ
BLOCK_SIZEBIGINTブロックのサイズ
USED_BLOCKSBIGINT使用されているブロック数
HIT_RATEDOUBLEヒット率(キャッシュヒット/キャッシュアクセス)
MISS_RATEDOUBLEミス率(キャッシュミス/キャッシュアクセス)
PUTSBIGINTキーキャッシュへの挿入回数
PUTS_FAILSBIGINTキーキャッシュへの挿入失敗回数
GETSBIGINTキーキャッシュからの取得回数
GETS_FAILSBIGINTキーキャッシュからの取得失敗回数
REMOVALSBIGINTキーキャッシュからの削除回数

プログラミングにおける活用例

  • キーキャッシュのパフォーマンスのボトルネックを特定
    ヒット率やミス率が低いキーキャッシュを特定することで、パフォーマンスのボトルネックを特定し、最適化することができます。
  • 特定のキーキャッシュの統計情報を取得
    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 テーブルよりも詳細な情報を提供しますが、複雑で習得するのが難しい場合があります。
  1. MONITORINGコマンド

    • MONITORコマンドを使用して、キーキャッシュに関する基本的な統計情報を取得できます。
    • key_readskey_writeskey_blocks_used などの変数を使用して、キーキャッシュの使用状況を監視できます。
    • MONITORコマンドはシンプルで使いやすいですが、KEY_CACHES テーブルほど詳細な情報を提供しません。
  2. サードパーティ製ツール

    • pt-query-statsMySQLTuner などのサードパーティ製ツールを使用して、キーキャッシュのパフォーマンスを分析できます。
    • これらのツールは、キーキャッシュに関する詳細な情報を提供し、パフォーマンスのボトルネックを特定するのに役立ちますが、インストールと設定が必要になる場合があります。

各代替手段の比較

代替手段利点欠点
Performance Schema詳細で包括的な情報複雑で習得するのが難しい
MONITORINGコマンドシンプルで使いやすい詳細な情報が限られている
サードパーティ製ツール詳細な情報と分析機能インストールと設定が必要

最適な代替手段の選択

最適な代替手段は、ニーズと要件によって異なります。

  • 詳細な情報と分析機能を備えた使いやすいツールが必要な場合は、サードパーティ製ツールが最適です。
  • シンプルで使いやすいツールが必要な場合は、MONITORコマンドが最適です。
  • 詳細なキーキャッシュ統計情報が必要で、複雑なツールを扱うことに抵抗がない場合は、Performance Schemaが最適です。
  • キーキャッシュのパフォーマンスは、ワークロードやサーバー構成によって大きく異なる場合があります。
  • 他の Information Schema テーブルと同様に、KEY_CACHES テーブルは読み取り専用です。
  • KEY_CACHES テーブルは、MariaDB 5.5以降で使用できます。