Database Autonomy Service (DAS) のヒートマップは、PolarDB-X データベースにおけるクエリ活動およびパーティション単位のデータ分布を可視化します。これにより、ホットパーティションや物理ノード間での不均等なデータ分布を特定できます。
前提条件
PolarDB-X V5.4.14 以降
データベースが自動パーティショニングモード(AUTO モード)を使用していること。現在のインスタンスで AUTO モードを使用しているデータベースのみがヒートマップに表示されます。他のパーティショニングモードを使用するデータベースは存在しますが、表示されません。
仕組み
ヒートマップは、定期的な間隔で各パーティションごとのクエリ対象データ行数に関する統計情報を収集します。中央のヒートマップ内の各セルは、ある時点における特定のパーティションを表します。色の輝度はクエリ頻度を示しており、明るい黄色が最も高く、黒が最も低くなります。
中央のヒートマップの周囲にある 3 つのヒストグラムにより、データの集計軸を切り替えることができます。
左側のヒストグラム — 論理データベース、論理テーブル、または論理パーティション単位(データノードビュー が有効な場合は、ストレージノード単位でも)
下部のヒストグラム — 時間単位
右側のヒストグラム — パーティション単位
データノードビュー を有効にすると、物理ストレージノード単位でデータが再編成されます。これにより、クエリ負荷が各ノードに均等に分散されているかを評価しやすくなります。
制限事項
| 制約 | デフォルトしきい値 | 制限の引き上げ方法 |
|---|---|---|
| 論理データベースあたりのパーティション数 | 8,000 — このしきい値を超えると、当該データベースに対する統計情報の収集がスキップされます | PolarDB-X カーネル構成で PARTITIONS_HEATMAP_COLLECTION_MAX_SINGLE_LOGIC_SCHEMA_COUNT を調整します |
| 1 回の収集タスクあたりのパーティション数 | 8,000 — このしきい値を超えると、システムは最大 8,000 パーティション分の統計情報を収集します | PolarDB-X カーネル構成で PARTITIONS_HEATMAP_COLLECTION_MAX_SCAN を調整します |
ヒートマップの表示
DAS コンソール にログインします。
左側のナビゲーションウィンドウで、インスタンスモニタリング をクリックします。
対象のインスタンスを見つけ、その ID をクリックしてインスタンス詳細ページを開きます。
左側のナビゲーションウィンドウで、ヒートマップ をクリックします。
ヒートマップの読み取り
ヒートマップの領域
| 領域 | 表示内容 |
|---|---|
| 左側のヒストグラム | インスタンス内の論理データベース、論理テーブル、および論理パーティションを表示します。データノードビュー が有効な場合、ストレージノードも表示されます。長方形の長さはデータ量を示しており、長いほどデータ量が多いことを意味します。 |
| 下部のヒストグラム | 時間経過に伴うクエリ対象データ行数の合計値を表示します。特定の時刻をクリックすると、その時点で全パーティションからクエリされたデータ行数の合計を確認できます。 |
| 右側のヒストグラム | パーティション単位で集計されたクエリ対象データ行数の合計値を表示します。パーティションをクリックすると、そのパーティションが合計で処理したデータ行数を確認できます。 |
| 中央のヒートマップ | 各パーティション・各時間間隔におけるクエリ頻度を色の輝度で示します。明るい黄色が最も高い頻度、黒が最も低い頻度です。 |
ステータスインジケーター
| ステータス | 意味 |
|---|---|
| NO DATA | まだ統計情報が収集されていません。 |
| TOO BIG | 表示されるパーティション数が 3,200 を超えています。元のパーティションの総数が 1,600 を超える場合、システムは同一データノード上の同一論理テーブルに属するパーティションの統計情報をマージします。マージ後もパーティション数が 3,200 を超える場合、TOO BIG が表示されます。 |
ポインタオーバー時の詳細情報
ヒートマップ内の任意のセル上にポインターを移動すると、以下の詳細情報が表示されます。
| 項目 | 説明 |
|---|---|
| 色付きボックス | ヒートマップのセルに対応する色。収集期間中の 1 分あたりのクエリ対象データ行数を示します。 |
| 開始時刻 | 収集期間の開始時刻です。 |
| 終了時刻 | 収集期間の終了時刻です。 |
| 現在の行数 | ヒートマップを開いた時点におけるパーティションのデータ行数です。これは「開始時刻」~「終了時刻」の期間ではなく、ヒートマップを開いた瞬間の状態を反映しています。 |
| データノード | 当該パーティションが配置されているデータノードです。ダッシュ(-)は、DDL 操作や収集中のマージなどによりパーティションが存在しなくなったことを意味します。 |
| データベース | 当該パーティションが属する論理データベースです。 |
| テーブル | 当該パーティションが属する論理テーブルです。 |
| パーティション | 論理パーティションの名前です。 |
データ収集の構成
PolarDB-X で以下の SQL コマンドを使用して、ヒートマップによるデータ収集の動作を制御できます。
各コマンドの実行前に、set ENABLE_SET_GLOBAL = true; を実行する必要があります。データ収集の無効化
set ENABLE_SET_GLOBAL = true;
set global ENABLE_PARTITIONS_HEATMAP_COLLECTION = false;機能を無効化する前に収集された統計情報は、引き続きヒートマップ上で表示されます。
特定のデータベースまたはテーブルへの収集範囲の制限
PARTITIONS_HEATMAP_COLLECTION_ONLY を使用して、収集対象を特定のデータベースおよびテーブルに限定できます。構文は以下のとおりです。
{database}#{table1}&{table2},{database2}#{table1}| 目的 | コマンド |
|---|---|
tpcc 内の customer および order テーブル、および tpch 内の nation | set global PARTITIONS_HEATMAP_COLLECTION_ONLY = 'tpcc#customer&order,tpch#nation'; |
tpcc および tpch | set global PARTITIONS_HEATMAP_COLLECTION_ONLY = 'tpcc,tpch'; |
すべての論理データベースにおける customer および order テーブルについて統計情報を収集する | set global PARTITIONS_HEATMAP_COLLECTION_ONLY = '#customer,#order'; または set global PARTITIONS_HEATMAP_COLLECTION_ONLY = '#customer&order'; |
| すべての論理データベースのすべてのテーブルについて統計情報を収集する(デフォルト設定に戻す) | set global PARTITIONS_HEATMAP_COLLECTION_ONLY = ''; |
次のステップ
ヒートマップでホットパーティションを特定した後、以下の操作を検討してください。
データ分布の改善を目的として、影響を受けるテーブルのパーティションキー設計を見直します。
PARTITIONS_HEATMAP_COLLECTION_ONLYを使用して収集範囲を調整し、モニタリングが必要なデータベースまたはテーブルに焦点を当てます。