Skip to main content

Description

現在のセッションで実行されたクエリのクエリ ID を、実行順に格納します。query_id をクライアント側で割り当てたり、log_comment でクエリにタグを付けたりしなくても、system.query_log から「たった今実行したクエリ」を探せます。 内容はセッション単位のスコープを持ちます。各セッションからは自身の履歴のみが見え、他のセッションのクエリが現れることはありません。 クエリ ID はクエリの開始時に記録されます。そのため:
  • 現在実行中のクエリは、このテーブルに対して SELECT を実行した時点ですでに現れます。
  • 失敗したクエリも記録されます。たった今失敗したクエリの ID を取得することは、主要なユースケースの 1 つです。
内部クエリ (システムログのフラッシュなど) は記録されません。分散クエリがリモート分片上で実行するサブクエリも記録されず、イニシエーターのセッションに開始元のクエリのみが現れます。

インターフェイスごとのセッションスコープ

  • ネイティブ/TCP接続 (clickhouse-client、ドライバー) および clickhouse-local: セッションは接続そのものであるため、複数クエリを実行するクライアント呼び出しも含め、その接続内のすべてのクエリにわたって履歴が蓄積されます。
  • session_id パラメータを指定したHTTP: 同じ session_id を渡すリクエストの間では、セッションが期限切れになるまで履歴が保持されます。
  • session_id を指定しないHTTP: リクエストごとに独立したセッションとなるため、テーブルには常に現在のクエリのみが表示されます。

履歴のサイズ

履歴はリングバッファであり、そのサイズはセッション設定 session_query_ids_history_size (デフォルトは 1000) によって制限されます。履歴がこのサイズを超えると、最も古いエントリから順に追い出されます。0 に設定すると記録が無効になります。それ以前に記録されたエントリは、TRUNCATE されるか追い出されるまでテーブルに残ります。 この設定はクエリの開始時、クエリがパースされる前に読み取られます。そのため、クエリ自身の SETTINGS 句は、そのクエリが記録されるかどうかには影響しません。代わりに SET、HTTP URL パラメータ、または SETTINGS PROFILE を使用してください。

TRUNCATE

TRUNCATE TABLE system.session_query_ids は、現在のセッションの履歴をクリアします。シーケンスカウンターはリセットされないため、sequence_number の値がセッション内で再利用されることはありません。

カラム

  • sequence_number (UInt64) — セッション内におけるクエリの位置。単調増加します。
  • query_id (String) — クエリ ID。system.query_log と結合できます。

例

いくつかクエリを実行し、その詳細を system.query_log から取得します:
現在のクエリは開始時点で記録されるため、最後のエントリとして表示されます。タイムスタンプ、status、その他すべての詳細は、system.query_log と結合することで取得できます。

関連項目

  • system.query_log - 実行されたクエリの詳細。
  • session_query_ids_history_size 設定。
最終更新日 2026年9月26日