system.query_log
このシステムテーブルのデータは、ClickHouse Cloud の各ノードにローカルに保持されています。したがって、すべてのデータの完全なビューを取得するには、clusterAllReplicas 関数が必要です。詳細については こちら を参照してください。
実行されたクエリに関するメタデータと統計情報を格納します。例えば、開始時間、期間、エラーメッセージ、リソース使用状況、他の実行詳細などです。クエリの結果は格納されません。
クエリロギングの設定は、サーバー設定の query_log セクションで変更できます。
log_queries = 0 を設定することで、クエリロギングを無効にできます。情報が重要であるため、ロギングをオフにすることはお勧めしません。
データのフラッシュ期間は、query_log サーバー設定セクションの flush_interval_milliseconds パラメータで設定されます。強制的にフラッシュするには、SYSTEM FLUSH LOGS クエリを使用してください。
ClickHouseは自動的にテーブルからデータを削除しません。詳細については、Introduction をご覧ください。
system.query_log テーブルは、2種類のクエリを記録します:
- クライアントによって直接実行された初期クエリ。
- 他のクエリによって開始された子クエリ(分散クエリ実行用)。このタイプのクエリでは、親クエリに関する情報が
initial_*カラムに表示されます。
各クエリは、そのステータスに応じて query_log テーブルに1行または2行を作成します(type カラムを参照):
- クエリの実行が成功した場合、
QueryStartとQueryFinishタイプの2行が作成されます。 - クエリ処理中にエラーが発生した場合、
QueryStartとExceptionWhileProcessingタイプの2つのイベントが作成されます。 - クエリを開始する前にエラーが発生した場合、
ExceptionBeforeStartタイプの単一イベントが作成されます。
log_queries_probability 設定を使用して、query_log テーブルに登録されるクエリの数を減らすことができます。
log_formatted_queries 設定を使用して、整形されたクエリを formatted_query カラムにログを記録することができます。
Columns
hostname(LowCardinality(String)) — クエリを実行しているサーバーのホスト名。type(Enum8) — クエリ実行時に発生したイベントのタイプ。値:'QueryStart' = 1— クエリ実行の成功した開始。'QueryFinish' = 2— クエリ実行の成功した終了。'ExceptionBeforeStart' = 3— クエリ実行開始前の例外。'ExceptionWhileProcessing' = 4— クエリ実行中の例外。
event_date(Date) — クエリの開始日。event_time(DateTime) — クエリの開始時刻。event_time_microseconds(DateTime64) — マイクロ秒精度でのクエリの開始時刻。query_start_time(DateTime) — クエリ実行の開始時刻。query_start_time_microseconds(DateTime64) — マイクロ秒精度でのクエリ実行の開始時刻。query_duration_ms(UInt64) — クエリ実行の期間(ミリ秒単位)。read_rows(UInt64) — クエリに参加したすべてのテーブルおよびテーブル関数から読み取られた行の総数。通常のサブクエリ、INおよびJOIN用のサブクエリが含まれます。分散クエリの場合、read_rowsにはすべてのレプリカで読み取られた行の総数が含まれます。各レプリカはそのread_rows値を送信し、クエリのサーバー発信者は受信したすべての値とローカル値を合計します。キャッシュボリュームはこの値に影響を与えません。read_bytes(UInt64) — クエリに参加したすべてのテーブルおよびテーブル関数から読み取られたバイトの総数。通常のサブクエリ、INおよびJOIN用のサブクエリが含まれます。分散クエリの場合、read_bytesにはすべてのレプリカで読み取られたバイトの総数が含まれます。各レプリカはそのread_bytes値を送信し、クエリのサーバー発信者は受信したすべての値とローカル値を合計します。キャッシュボリュームはこの値に影響を与えません。written_rows(UInt64) —INSERTクエリの場合、書き込まれた行の数。他のクエリの場合、カラム値は0です。written_bytes(UInt64) —INSERTクエリの場合、書き込まれたバイト数(圧縮されていない)。他のクエリの場合、カラム値は0です。result_rows(UInt64) —SELECTクエリの結果の行数、またはINSERTクエリの行数。result_bytes(UInt64) — クエリ結果を格納するために使用されるRAMのバイト量。memory_usage(UInt64) — クエリによるメモリ消費。current_database(String) — 現在のデータベースの名前。query(String) — クエリ文字列。formatted_query(String) — 整形されたクエリ文字列。normalized_query_hash(UInt64) — リテラルの値によってのみ異なるクエリに対して同一の数値ハッシュ値。query_kind(LowCardinality(String)) — クエリのタイプ。databases(Array(LowCardinality(String))) — クエリに含まれるデータベースの名前。tables(Array(LowCardinality(String))) — クエリに含まれるテーブルの名前。columns(Array(LowCardinality(String))) — クエリに含まれるカラムの名前。partitions(Array(LowCardinality(String))) — クエリに含まれるパーティションの名前。projections(String) — クエリ実行中に使用されたプロジェクションの名前。views(Array(LowCardinality(String))) — クエリに含まれる(マテリアライズドまたはライブ)ビューの名前。exception_code(Int32) — 例外のコード。exception(String) — 例外メッセージ。stack_trace(String) — スタックトレース。クエリが成功裏に完了した場合は空の文字列。is_initial_query(UInt8) — クエリのタイプ。可能な値:- 1 — クライアントによって開始されたクエリ。
- 0 — 別のクエリによって開始されたクエリ(分散クエリ実行の一部)。
user(String) — 現在のクエリを開始したユーザーの名前。query_id(String) — クエリのID。address(IPv6) — クエリを実行するために使用されたIPアドレス。port(UInt16) — クエリを実行するために使用されたクライアントポート。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) — マイクロ秒精度での初期クエリの開始時刻(分散クエリ実行のため)。interface(UInt8) — クエリが発信されたインターフェース。可能な値:- 1 — TCP。
- 2 — HTTP。
os_user(String) — clickhouse-clientを実行しているオペレーティングシステムのユーザー名。client_hostname(String) — clickhouse-clientまたは他のTCPクライアントが実行されているクライアントマシンのホスト名。client_name(String) — clickhouse-clientまたは他のTCPクライアントの名前。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メソッドが使用されました。
http_user_agent(String) — HTTPクエリに渡されたHTTPヘッダーUserAgent。http_referer(String) — HTTPクエリに渡されたHTTPヘッダーReferer(クエリを行ったページの絶対または部分的なアドレスを含む)。forwarded_for(String) — HTTPクエリに渡されたHTTPヘッダーX-Forwarded-For。quota_key(String) — quotas 設定に指定されたquota key(keyedを参照)。revision(UInt32) — ClickHouseリビジョン。ProfileEvents(Map(String, UInt64)) — 異なるメトリクスを測定するためのProfileEvents。それらの説明は system.events テーブルで見つけることができます。Settings(Map(String, String)) — クライアントがクエリを実行した際に変更された設定。設定の変更ログを有効にするには、log_query_settingsパラメータを1に設定します。log_comment(String) — ログコメント。 max_query_size を超えない任意の文字列に設定できます。未定義の場合は空の文字列です。thread_ids(Array(UInt64)) — クエリ実行に参加しているスレッドID。これらのスレッドは同時に実行されていない可能性があります。peak_threads_usage(UInt64) — クエリを実行している最大同時スレッド数。used_aggregate_functions(Array(String)) — クエリ実行中に使用されたaggregate functionsの正式名。used_aggregate_function_combinators(Array(String)) — クエリ実行中に使用されたaggregate functions combinatorsの正式名。used_database_engines(Array(String)) — クエリ実行中に使用されたdatabase enginesの正式名。used_data_type_families(Array(String)) — クエリ実行中に使用されたdata type familiesの正式名。used_dictionaries(Array(String)) — クエリ実行中に使用されたdictionariesの正式名。XMLファイルを使用して構成された辞書の場合は辞書の名前となり、SQL文で作成された辞書の場合は正式名は完全修飾オブジェクト名です。used_formats(Array(String)) — クエリ実行中に使用されたformatsの正式名。used_functions(Array(String)) — クエリ実行中に使用されたfunctionsの正式名。used_storages(Array(String)) — クエリ実行中に使用されたstoragesの正式名。used_table_functions(Array(String)) — クエリ実行中に使用されたtable functionsの正式名。used_executable_user_defined_functions(Array(String)) — クエリ実行中に使用されたexecutable user defined functionsの正式名。used_sql_user_defined_functions(Array(String)) — クエリ実行中に使用されたsql user defined functionsの正式名。used_privileges(Array(String)) - クエリ実行中に正常に確認された権限。missing_privileges(Array(String)) - クエリ実行中に不足していた権限。query_cache_usage(Enum8) — クエリ実行中の クエリキャッシュ の使用状況。値:'Unknown'= ステータス不明。'None'= クエリ結果はクエリキャッシュに書き込まれず、また読み込まれませんでした。'Write'= クエリ結果がクエリキャッシュに書き込まれました。'Read'= クエリ結果がクエリキャッシュから読み取られました。
Examples
基本的な例
クラウドの例
ClickHouse Cloudでは、system.query_logは各ノードにローカルであり、すべてのエントリを見るためには clusterAllReplicas を介してクエリを実行する必要があります。
たとえば、"default" クラスター内のすべてのレプリカから query_log 行を集約するには、次のように書くことができます:
参照
- system.query_thread_log — このテーブルには、各クエリ実行スレッドに関する情報が含まれています。