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 から取得します:
system.query_log と結合することで取得できます。
関連項目
- system.query_log - 実行されたクエリの詳細。
session_query_ids_history_size設定。