pg_stat_ch から取得されます。これは、
ステートメントごとのカウンターを
ClickHouse Cloud にストリーミングするオープンソースの Postgres 拡張機能です。テレメトリーは
データベースを出る前に Postgres 内で正規化されます。リテラルは取り除かれてプレースホルダーに置き換えられるため、
クエリした正確な値がテレメトリーストリームに含まれることはありません。
クエリインサイトを開く
- データベースのヘルスチェックを 1 画面で確認できる 概要。
- データベースで実行されたすべてのクエリパターンを、気になる観点で ソートして順位付けできる 低速クエリパターン テーブル。
- 個々の実行を新しい順に一覧表示する 最近のクエリ パネル。
- 単一のパターンに関するすべてのカウンターを集約する 詳細フライアウト。
概要
| パネル | 表示内容 |
|---|---|
| クエリ / 秒 | 選択した時間枠におけるクエリ量を、レートに換算して表示します。 |
| クエリレイテンシ | 平均、p50、p95、p99 を1つのチャートにまとめて表示し、中央値に対してテールがいつ乖離するかを確認できます。 |
| 操作の内訳 | ワークロードが実際に SELECT、INSERT、UPDATE、その他の操作でどのように構成されているかを示すドーナツチャートです。 |
| 返された / 影響を受けた行数 | その時間枠でワークロードが処理した合計行数です。 |
| バッファヒット率 | 共有 block のヒット数と読み取り数の比率を示すドーナツチャートで、凡例には合計 CPU 時間も表示されます。 |
| エラー | エラーの総数を、時間の経過に沿って表示します。 |
低速クエリパターン
気になる観点でソートする
- 合計実行時間 — データベースが最も多くの実時間を費やした箇所。
- CPU 時間 — コンピュート負荷の高いパターン。
- 呼び出し回数 — 高頻度のパターン。
- エラー — 繰り返し発生している失敗。
- 平均 / P50 / P95 / P99 / 最大レイテンシ — パーセンタイル別の外れ値。
- 返された行数、読み取られたブロック数、ヒットしたブロック数、WAL バイト数 — engine、cache、write-ahead log を通じて 最も多くのデータを処理したパターン。
テーブルを絞り込む
- データベース
- ユーザー
- 操作 (
SELECT,INSERT,UPDATE,DELETE, …) - アプリケーション — 接続文字列の
application_name
sales DB で orders サービスが何をしているかだけを表示する」
といった条件は、2 つのドロップダウンで指定できます。フィルター値は、
そのインスタンスで実際に実行された内容に基づいて自動的に補完されます。
最近のクエリ
詳細フライアウト
- クエリパターン — リテラルを
$1、$2、… に置き換えた正規化 SQL と、クリップボードにコピーするボタン。 - 集計リソース使用量 — 合計 呼び出し回数、平均/P95/P99/最大レイテンシー、合計ランタイム、返された行数、cache ヒット率、読み取られたブロック数、ヒットしたブロック数、CPU 時間、WAL バイト数、エラーを含む 13 個の統計カードのグリッド。
- クエリコンテキスト — このパターンの 発生元であるデータベース、ユーザー、操作、アプリケーション。
- 注目すべき実行 — エラー、異常に遅い実行、 および結果セットが大きい実行を、最近の実行の完全な一覧より前に表示します。
- 最近の実行 — 同じパターンの個々の実行で、 実行ごとのカウンターを表示します。
実行ごとのカウンター
- 共有ブロック — read と hit は常に表示され、written と dirtied は ゼロ以外の場合に表示されます。
- ローカルおよび一時ブロック操作 — 一時ブロック操作がゼロ以外の場合は、ソートまたは ハッシュがディスクにスピルしたことを意味します。
- 読み取り / 書き込み時間 — CPU 時間とは別に表示される I/O 時間です。
- CPU 時間 — user と system がそれぞれ別に表示されます。
- 並列ワーカー — 計画数と実際に起動された数です。
- JIT — JIT コンパイルの合計時間と関数数です。
- WAL — バイト数とレコード数です。
クエリインサイト API
仕組み
ワイヤに出る前に Postgres で正規化
pg_stat_ch は parse-analyze フェーズにフックし、各リテラルを
プレースホルダー ($1、$2、…) に置き換え、その結果のパターンを
queryid をキーにしたバックエンドごとの LRU にキャッシュします。ステートメントの
実行が完了すると、そのキャッシュされたパターンがイベントに付与されます。値を含む
元のステートメントがデータベースの外に出ることはありません。
データベース処理を妨げない
集計ではなく生のイベント
pg_stat_ch は、実行された各ステートメント (トップレベルとネストの両方) ごとに、サンプリングの対象となる 1 件の生のイベントを出力します。UI のパーセンタイル、ランキング、内訳はすべて、同じイベントストリームに対する ClickHouse クエリです。
お客様が利用しているのと同じエンジン
オープンソース
pg_stat_ch は Apache 2.0 ライセンスです。任意の Postgres に対して実行でき、任意の
ClickHouse に送信できます。ソースコードと issue は
github.com/clickhouse/pg_stat_ch にあります。
- 監視ダッシュボード — 組み込みのリソースおよびアクティビティのチャート
- Prometheus エンドポイント — ホストレベルのメトリクスを独自のオブザーバビリティスタックに取り込めます
- Managed Postgres OpenAPI — スローパターンや最近の実行履歴をプログラムから取得できます
- 拡張機能 — Managed Postgres インスタンスで利用可能な拡張機能
- GitHub 上の
pg_stat_ch— クエリインサイトを支えるオープンソースの拡張機能