メインコンテンツへスキップ

回答

system データベースの query_log テーブルには、次の項目を含むすべてのクエリが記録されます。
  • クエリが消費したメモリ量
  • 必要とした CPU 時間
次のクエリは、メモリ使用量が最も多いクエリの上位 10 件を返します。
応答は次のようになります。
initial_query_id は、リクエストを受信したノードから開始された分散クエリ実行における元のクエリの ID を表します。query_id には、別のノードで実行された子クエリの ID が含まれます。詳細は、こちらの記事を参照してください。
クエリ ID を使うと、そのクエリの詳細をさらに確認できます。では、上記の中で最も実行時間が長かったクエリ (最初のもの) を調べてみましょう。
これは、youtube という名前のテーブルに数十億行のデータを挿入する際に使用したクエリであることがわかります (YouTube の低評価データセットを参照) :

initial_query_id VS query_id

クラスター化された ClickHouse 環境 (ClickHouse Cloud など) では、initial_query_id は、リクエストを受け取ったノードから開始された分散クエリ実行における元のクエリの ID を表します。 一方、query_id フィールドには、別のノードで実行された子クエリの ID が入ります。 上記のクエリに query_id を追加すると、initial_query_id = a7262fa2-bd8b-4b51-a359-621ccf282417hostname() を基準に検索対象を絞り込めます。
以下のようになります:
複数のホスト (異なるクラスター ノード) から複数の結果が返されている点に注意してください。 さらに絞り込んで子クエリだけを取得するには、WHERE句に query_id != initial_query_id という条件を追加することもできます。
クエリが最初に実行されたノードから見てリモートのノードで実行された、すべての子クエリを返します:
逆に、query_id = initial_query_id は、分散クエリが最初に発行されたローカルノードで実行されたクエリのみを返します。
以下のようになります。
他のシステムテーブルについても、各フィールドの意味についてはドキュメントで詳しく確認できます。
最終更新日 2026年6月12日