Search SQL
Search SQL 画面では、条件に合うクエリを検索し、選択したクエリの性能推移(Trend)・実行履歴(History)・全文(Full Text)・実行計画(Plan)を1つの画面で続けて確認できます。
左側メニューでデータベース > ClickHouse > SQL Analysis > Search SQLを選択してください。

画面は上部の検索条件、SQL List、Trend、History、下部のFull Text、Planで構成されます。
検索条件を設定する
画面上部で検索対象と条件を設定します。
- Period: 検索する日付範囲を選択します。
- Group / Instance: 検索するインスタンスグループと個別インスタンスを選択します。
- Order By: Query Duration (sec)(デフォルト値)、Memory Usage、CPU TimeのうちSQL Listの並び替え基準を選択します。

条件を変更した後、[Search]ボタンをクリックして初めて新しい条件で再検索されます。
[Option]ボタンをクリックすると、ポップアップでNormalized Query Hash、Queryで検索対象を絞り込めます。

Query入力欄横のヘルプアイコンにマウスを合わせると、「Case insensitive.」という案内を確認できます — 大文字・小文字を区別せずに検索されるという意味です。
SQL Listでクエリの検索結果を確認する
SQL Listでは、条件に該当するクエリをHost Name、Current Database、User、Normalized Query Hash、Query、Query Count、Query Duration (sec)、CPU Time、Memory Usage、Read Bytes、Written Bytes、Result Bytesなどのカラムで確認できます。
リストで行をクリックすると、下のTrend、History、Full Text、Planがすべて選択したクエリ基準で更新されます。
Queryカラムをクリックすると、クエリ全文をSQL Full Textポップアップで確認できます。ポップアップで[Format SQL]ボタンをクリックすると、構文を見やすく整形して再表示します。

リスト右上のSum/Avgトグルで値を合計と平均のどちらの基準で見るか切り替えられます。Avgを選択すると、カラム見出しと値が赤色に変わり、呼び出しごとの平均値を表示します。上部のフィルター入力欄にテキストを入力すると、カラムの値を基準にリストを素早くフィルタリングできます。

リスト右上の[⋮]ボタンをクリックすると、Reset user data、Export to Excel、Column Listメニューが開きます。このメニューはHistory、Planリストにも同様に提供されます。

TrendとHistoryで推移と履歴を確認する
Trendでは、選択したクエリのTime(Query Duration (sec))、Rows(Read Rows・Written Rows)、Executions(Query Count)の推移をそれぞれチャートで確認できます。
右上の[Retry]ボタンをクリックすると、チャートを最初の検索条件を基準に再描画します。ボタン横の疑問符アイコンにマウスを合わせると、この動作に関する説明をツールチップで確認できます。
Historyでは、時間帯別のQuery Count・Query Duration (sec)・CPU Time・Memory Usage・Read Bytes・Written Bytes・Result Bytesの値を表で確認できます。
Full TextとPlanでクエリ構文と実行計画を確認する
SQL ListでRankが低い(実行頻度が少ない)行をクリックした例です。

- Full Text: 選択したクエリの全文を表示します。右上の[Formatting]ボタンをクリックすると構文を見やすく整形し、コピーアイコンをクリックすると構文をクリップボードにコピーします。
- Plan: 実行計画を番号が付いた段階別のリストで表示します。
クエリに?で表示されたバインドパラメータが残っていると、PlanにIllegal type String expression, must be numeric typeのようなエラーが表示されることがあります。パラメータが実際の値で埋められていない正規化されたクエリであるためです。パラメータのないクエリ(上記の例のSELECT ?のようにリテラルのみを使用するクエリなど)を選択すると、Expression、ReadFromStorageのような実際の実行段階を確認できます。