説明
現在のユーザー自身のクエリログレコードを表示します。query_log.database および query_log.table のサーバー設定で指定されたクエリログテーブル (デフォルトは system.query_log) を読み取り、実行開始ユーザーが currentUser() と一致する行のみを返します (実行開始ユーザーは、initial_user が設定されている場合はそこから、そうでない場合は user から取得されます) 。
クエリログテーブル自体とは異なり、system.user_query_log は権限なしで読み取れるため、ユーザーは他のユーザーのクエリへのアクセス権を付与されなくても、自身のクエリを確認できます。
これは、クエリログがローカルに保存されている場合にのみサポートされます。query_log.engine が Distributed、または読み取りを別のサーバーに委任するその他のエンジンとして設定されている場合、system.user_query_log はそのテーブルからの読み取りを拒否して例外をスローします。必要なアクセスチェックを ClickHouse プロトコルのサーバー境界を越えて適用できないためです。その場合は、query_log.enable_user_query_log = 0 を設定してテーブルを無効にしてください。
このテーブルは、query_log.enable_user_query_log サーバー設定で無効にできます。クエリログが設定されていない場合、またはそのテーブルがまだ作成されていない場合、system.user_query_log は空です。
定数と比較するクエリログのパーティションおよびキーカラム (event_date、event_time、query_start_time、query_id、type、および同様のスカラーカラム) に対する条件は、基盤となるクエリログテーブルにプッシュダウンされます。そのため、以下の例のような通常のルックアップではパーティションプルーニングが維持され、保持されているログ全体はスキャンされません。
カラム
hostname(String) — クエリを実行するサーバーのホスト名。type(Enum8('QueryStart' = 1, 'QueryFinish' = 2, 'ExceptionBeforeStart' = 3, 'ExceptionWhileProcessing' = 4)) — クエリ実行時に発生したイベントの種類。値:QueryStart— クエリ実行の正常な開始、QueryFinish— クエリ実行の正常な終了、ExceptionBeforeStart— クエリ実行開始前の例外、ExceptionWhileProcessing— クエリ実行中の例外。event_date(Date) — クエリの開始日。event_time(DateTime) — クエリの開始時刻。event_time_microseconds(DateTime64(6)) — マイクロ秒精度のクエリ開始時刻。query_start_time(DateTime) — クエリ実行の開始時刻。query_start_time_microseconds(DateTime64(6)) — マイクロ秒精度のクエリ実行開始時刻。query_duration_ms(UInt64) — クエリ実行時間 (ミリ秒) 。read_rows(UInt64) — クエリに関与するすべてのテーブルおよびテーブル関数から読み取られた行の合計数。通常のサブクエリ、IN および JOIN のサブクエリを含みます。分散クエリでは、read_rows にはすべてのレプリカで読み取られた行の合計数が含まれます。各レプリカが自身の read_rows 値を送信し、クエリのサーバーイニシエーターが受信した値とローカルの値をすべて集計します。cache ボリュームはこの値に影響しません。read_bytes(UInt64) — クエリに関与するすべてのテーブルおよびテーブル関数から読み取られたバイト数の合計。通常のサブクエリ、IN および JOIN のサブクエリを含みます。分散クエリでは、read_bytes にはすべてのレプリカで読み取られた行の合計数が含まれます。各レプリカが自身の read_bytes 値を送信し、クエリのサーバーイニシエーターが受信した値とローカルの値をすべて集計します。cache ボリュームはこの値に影響しません。written_rows(UInt64) — クエリによって書き込まれた行数。アタッチされた materialized view など、パイプラインによってトリガーされる下流の挿入で書き込まれた行も含まれます。同期挿入の場合、これらの下流の行はquery_kind=Insertエントリに記録されます。非同期挿入の場合はquery_kind=AsyncInsertFlushエントリに記録され、クライアント向けのInsertエントリにはクライアントから受け入れた行のみが記録されます。行を書き込まないクエリの場合は 0 です。written_bytes(UInt64) — クエリによって書き込まれたバイト数 (非圧縮) 。アタッチされた materialized view など、パイプラインによってトリガーされる下流の挿入で書き込まれたバイトも含まれます。同期挿入の場合、これらの下流のバイトはquery_kind=Insertエントリに記録されます。非同期挿入の場合はquery_kind=AsyncInsertFlushエントリに記録され、クライアント向けのInsertエントリにはクライアントから受け入れたバイトのみが記録されます。データを書き込まないクエリの場合は 0 です。result_rows(UInt64) — SELECT クエリの結果に含まれる行数、または挿入によって書き込まれた行数。同期挿入の場合、query_kind=Insertエントリには、アタッチされた materialized view などパイプラインによってトリガーされる下流の挿入で書き込まれた行も含まれます。非同期挿入の場合、これらの下流の行はquery_kind=AsyncInsertFlushエントリに記録され、クライアント向けのInsertエントリにはクライアントから受け入れた行のみが記録されます。result_bytes(UInt64) — クエリ結果の保存に使用される RAM 容量 (バイト単位) 。memory_usage(UInt64) — クエリのメモリ使用量。current_database(String) — 現在のデータベースの名前。query(String) — クエリ文字列。formatted_query(String) — 整形されたクエリ文字列。normalized_query_hash(UInt64) — リテラル値だけが異なるクエリでは同一となる数値ハッシュ値。query_kind(String) — クエリのタイプ。databases(Array(String)) — クエリに含まれるデータベース名。tables(Array(String)) — クエリに含まれるテーブル名。columns(Array(String)) — クエリに含まれるカラム名。partitions(Array(String)) — クエリに含まれるパーティション名。projections(Array(String)) — クエリ実行時に使用されたプロジェクション名。views(Array(String)) — クエリに含まれる (マテリアライズドビューまたはライブビューの) 名前。exception_code(Int32) — 例外コード。exception(String) — 例外メッセージ。stack_trace(String) — スタックトレース。クエリが正常に完了した場合は空文字列です。is_initial_query(UInt8) — クエリが初期クエリかどうか。設定可能な値: 1 — 初期 (最上位) クエリ、0 — 分散実行用クエリおよび内部サブクエリを含む、別のクエリによって開始された子クエリ。connection_address(IPv6) — 接続元のクライアントIPアドレス。プロキシ経由で接続している場合は、プロキシのアドレスです。connection_port(UInt16) — 接続元のクライアントポート。プロキシ経由で接続している場合は、プロキシのポートです。user(String) — 現在のクエリを開始したユーザー名。query_id(String) — クエリID。address(IPv6) — クエリの実行に使用されたIPアドレス。プロキシ経由で接続しており、auth_use_forwarded_addressが設定されている場合は、プロキシではなくクライアントのアドレスです。port(UInt16) — クエリの実行に使用されたクライアントポート。プロキシ経由で接続しており、auth_use_forwarded_addressが設定されている場合は、プロキシではなくクライアントのポートです。initial_user(String) — 同じクエリチェーン内の初期クエリを実行したユーザー名。initial_query_id(String) — 同じクエリチェーン内の初期クエリID。initial_address(IPv6) — 同じクエリチェーン内の初期クエリの起動元IPアドレス。initial_port(UInt16) — 同じクエリチェーン内の初期クエリの起動元クライアントポート。initial_query_start_time(DateTime) — 同じクエリチェーン内の初期クエリの開始時刻。initial_query_start_time_microseconds(DateTime64(6)) — 同じクエリチェーン内の初期クエリのマイクロ秒精度の開始時刻。authenticated_user(String) — セッションで認証されたユーザー名。interface(UInt8) — クエリの開始元インターフェイス。設定可能な値: 1 — TCP、2 — HTTP。is_secure(UInt8) — クエリがセキュアなインターフェイス経由で実行されたかどうかを示すフラグos_user(String) — clickhouse-client を実行しているオペレーティングシステムのユーザー名。client_hostname(String) — clickhouse-client または別の TCP クライアントを実行しているクライアントマシンのホスト名。client_name(String) — clickhouse-client または別の TCP クライアントの名前。client_agent(String) — クライアントを呼び出した AI コーディングエージェント (例:claude-code、cursor) 。環境変数から検出されます。エージェントが検出されなかった場合は空になります。client_revision(UInt32) — clickhouse-client または別の TCP クライアントのリビジョン。client_version_major(UInt32) — clickhouse-client または別の TCP クライアントのメジャーバージョン。client_version_minor(UInt32) — clickhouse-client または別の TCP クライアントのマイナーバージョン。client_version_patch(UInt32) — clickhouse-client または別の TCP クライアントのバージョンのパッチ番号。script_query_number(UInt32) — clickhouse-client 用の、複数のクエリを含むスクリプト内のクエリ番号。script_line_number(UInt32) — clickhouse-client 用の、複数のクエリを含むスクリプトでクエリが開始する行番号。http_method(UInt8) — クエリを開始した HTTP メソッド。設定可能な値: 0 - TCP インターフェイスからクエリが開始された、1 - GET メソッドが使用された、2 - POST メソッドが使用された、4 - PUT メソッドが使用された、5 - DELETE メソッドが使用された、6 - HEAD メソッドが使用された。http_user_agent(String) — HTTP クエリで渡された UserAgent HTTP ヘッダー。http_referer(String) — HTTP クエリで渡された Referer HTTP ヘッダー (クエリを実行するページの絶対アドレスまたは一部のアドレスを含みます) 。forwarded_for(String) — HTTP クエリで渡された X-Forwarded-For HTTP ヘッダー。quota_key(String) — quotas 設定で指定された quota key (keyed を参照) 。distributed_depth(UInt64) — クエリがサーバー間で転送された回数。revision(UInt32) — ClickHouse のリビジョン。http_handler_name(String) — クエリを呼び出した SQL 定義の HTTP ハンドラー (CREATE HANDLER) の名前。このようなハンドラー経由でクエリが呼び出されなかった場合は空です。http_request_url(String) — クエリを呼び出した HTTP リクエストパス (クエリ文字列を除く) 。機密性の高いリクエストパラメータが永続化されないよう、クエリ文字列は省略されます。HTTP 以外のクエリでは空です。log_comment(String) — ログコメント。max_query_size 以下の任意の文字列に設定できます。定義されていない場合は空の文字列です。thread_ids(Array(UInt64)) — クエリ実行に参加したスレッド ID。これらのスレッドが同時に実行されたとは限りません。peak_threads_usage(UInt64) — クエリを実行した同時スレッド数の最大値。ProfileEvents(Map(String, UInt64)) — 各種メトリクスを測定する ProfileEvents。詳細は system.events テーブルで確認できます。Settings(Map(String, String)) — クライアントによるクエリ実行時に変更された Settings。設定変更のログ記録を有効にするには、log_query_settings パラメータを 1 に設定します。used_aggregate_functions(Array(String)) — クエリ実行中に使用された集約関数の正規名。used_aggregate_function_combinators(Array(String)) — クエリ実行中に使用された集約関数コンビネータの正規名。used_database_engines(Array(String)) — クエリ実行時に使用されたデータベースエンジンの正規名。used_data_type_families(Array(String)) — クエリ実行時に使用されたデータ型ファミリーの正規名。used_dictionaries(Array(String)) — クエリ実行時に使用された辞書の正規名。used_formats(Array(String)) — クエリ実行時に使用されたフォーマットの正規名。used_functions(Array(String)) — クエリ実行時に使用された関数の正規名。used_storages(Array(String)) — クエリ実行時に使用されたストレージの正規名。used_table_functions(Array(String)) — クエリ実行時に使用されたテーブル関数の正規名。used_executable_user_defined_functions(Array(String)) — クエリ実行時に使用された実行可能なユーザー定義関数の正規名。used_sql_user_defined_functions(Array(String)) — クエリ実行時に使用されたSQLユーザー定義関数の正規名。used_row_policies(Array(String)) — クエリ実行時に使用された行ポリシー名の一覧。used_privileges(Array(String)) — クエリ実行時に正常に確認された権限。missing_privileges(Array(String)) — クエリ実行時に不足している権限。transaction_id(Tuple(UInt64, UInt64, UUID)) — このクエリが実行されたトランザクションの識別子。query_cache_usage(Enum8('Unknown' = 0, 'None' = 1, 'Write' = 2, 'Read' = 3)) — クエリ実行時のクエリキャッシュの使用状況。値: 'Unknown' = ステータス不明、'None' = クエリ結果はクエリ結果キャッシュへの書き込みもクエリ結果キャッシュからの読み取りも行われなかった、'Write' = クエリ結果がクエリ結果キャッシュに書き込まれた、'Read' = クエリ結果がクエリ結果キャッシュから読み取られた。asynchronous_read_counters(Map(String, UInt64)) — 非同期読み取りのメトリクス。is_internal(UInt8) — 内部的に実行される補助クエリかどうかを示します。
別名:
ProfileEvents.Names—mapKeys(ProfileEvents)の別名。ProfileEvents.Values—mapValues(ProfileEvents)の別名。Settings.Names—mapKeys(Settings)の別名。Settings.Values—mapValues(Settings)の別名。
例
SELECT
query_start_time,
query_duration_ms,
query
FROM system.user_query_log
ORDER BY query_start_time DESC
LIMIT 10;