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

system.query_log

ClickHouse Cloud でのクエリ実行

このシステムテーブルのデータは、ClickHouse Cloud の各ノードにローカルに格納されています。そのため、すべてのデータを包括的に確認するには、clusterAllReplicas 関数を使用する必要があります。詳細についてはこちらを参照してください。

説明

実行されたクエリのメタデータおよび統計情報 (開始時刻、実行時間、エラーメッセージ、リソース使用量、その他の実行詳細など) を保存します。クエリ結果自体は保存しません。

クエリのログ記録に関する設定は、サーバー設定の query_log セクションで変更できます。

log_queries = 0 を設定することで、クエリのログ記録を無効にできます。ただし、このテーブルに含まれる情報は問題の解決に重要であるため、ログを無効にすることは推奨しません。

データのフラッシュ間隔は、サーバー設定の query_log セクションにある flush_interval_milliseconds パラメータで設定します。フラッシュを即時に実行するには、SYSTEM FLUSH LOGS クエリを使用します。

ClickHouse はこのテーブルからデータを自動的に削除しません。詳細については Introduction を参照してください。

system.query_log テーブルには、次の 2 種類のクエリが記録されます。

  1. クライアントによって直接実行された初期クエリ。
  2. (分散クエリ実行のために) 他のクエリによって開始された子クエリ。この種類のクエリについては、親クエリに関する情報が initial_* カラムに表示されます。

各クエリは、そのステータス (type 列を参照) に応じて、query_log テーブルに 1 行または 2 行が作成されます。

  1. クエリが正常に実行された場合、QueryStartQueryFinish タイプの 2 行が作成されます。
  2. クエリ処理中にエラーが発生した場合、QueryStartExceptionWhileProcessing タイプの 2 つのイベントが作成されます。
  3. クエリを開始する前にエラーが発生した場合、ExceptionBeforeStart タイプの単一のイベントが作成されます。

log_queries_probability 設定を使用して、query_log テーブルに記録されるクエリ数を減らすことができます。

log_formatted_queries 設定を使用して、フォーマット済みクエリを formatted_query 列に記録できます。

カラム

  • hostname (LowCardinality(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 の値を送信し、クエリのイニシエーターであるサーバーが、受信したすべての値とローカルの値を集計します。キャッシュの容量はこの値に影響しません。
  • 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 (LowCardinality(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 (Array(LowCardinality(String))) — クエリ実行中に使用されるプロジェクションの名前。
  • views (Array(LowCardinality(String))) — クエリ内に存在する (マテリアライズドビューまたはライブビューの) ビュー名。
  • exception_code (Int32) — 例外コード。
  • exception (文字列) — 例外メッセージ。
  • stack_trace (String) — スタックトレース。クエリが正常に完了した場合は、空の文字列です。
  • is_initial_query (UInt8) — クエリの種類。設定可能な値: 1 — クライアントによって開始されたクエリ、0 — 分散クエリ実行の一部として別のクエリによって開始されたクエリ。
  • connection_address (IPv6) — 接続元のクライアントのIPアドレス。プロキシ経由で接続している場合は、プロキシのアドレスになります。
  • connection_port (UInt16) — 接続元のクライアントのポートです。プロキシ経由で接続している場合、これはプロキシのポートになります。
  • user (LowCardinality(String)) — 現在のクエリを実行したユーザー名。
  • query_id (String) — クエリの ID。
  • address (IPv6) — クエリの実行元となったIPアドレス。プロキシ経由で接続しており、auth_use_forwarded_address が設定されている場合、これはプロキシではなくクライアントのアドレスになります。
  • port (UInt16) — クエリの実行に使用されたクライアントポート。プロキシ経由で接続しており、auth_use_forwarded_address が設定されている場合、これはプロキシではなくクライアント側のポートになります。
  • initial_user (LowCardinality(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 (LowCardinality(String)) — セッションで認証されたユーザー名。
  • interface (UInt8) — クエリの実行元のインターフェイス。設定可能な値: 1 — TCP、2 — HTTP。
  • is_secure (UInt8) — クエリがセキュアなインターフェイス経由で実行されたかどうかを表すフラグ
  • os_user (LowCardinality(String)) — clickhouse-client を実行する OS のユーザー名。
  • client_hostname (LowCardinality(String)) — clickhouse-client または別の TCP クライアントを実行しているクライアントマシンのホスト名。
  • client_name (LowCardinality(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 (LowCardinality(String)) — HTTPクエリで渡される HTTP ヘッダーの User-Agent。
  • http_referer (String) — HTTPクエリで渡されるHTTPヘッダーReferer (クエリを送信するページの絶対アドレスまたは部分的なアドレスが含まれます) 。
  • forwarded_for (String) — HTTPクエリで渡される X-Forwarded-For HTTPヘッダー。
  • quota_key (String) — quotas 設定で指定するクォータキー (keyed を参照) 。
  • distributed_depth (UInt64) — クエリがサーバー間で何回転送されたかを示します。
  • revision (UInt32) — ClickHouse のリビジョン。
  • log_comment (String) — ログコメント。max_query_size を超えない任意の文字列を設定できます。定義されていない場合は空文字列です。
  • thread_ids (Array(UInt64)) — クエリの実行に関与するスレッド ID。このスレッド群が同時に実行されていたとは限りません。
  • peak_threads_usage (UInt64) — クエリの実行時に同時に使用されたスレッド数の最大値。
  • ProfileEvents (Map(LowCardinality(String), UInt64)) — さまざまなメトリクスを計測する ProfileEvents です。これらの説明は system.events テーブルにあります
  • Settings (Map(LowCardinality(String), LowCardinality(String))) — クライアントがクエリを実行したときに変更された設定です。設定変更をログに記録するには、log_query_settings パラメータを 1 に設定します。
  • used_aggregate_functions (Array(LowCardinality(String))) — クエリの実行時に使用された集約関数の正規化された名前。
  • used_aggregate_function_combinators (Array(LowCardinality(String))) — クエリの実行中に使用された集約関数コンビネータの正規名。
  • used_database_engines (Array(LowCardinality(String))) — クエリの実行時に使用されたデータベース エンジンの正規名。
  • used_data_type_families (Array(LowCardinality(String))) — クエリ実行時に使用されたデータ型ファミリーの正式名。
  • used_dictionaries (Array(LowCardinality(String))) — クエリの実行中に使用された辞書の正式名。
  • used_formats (Array(LowCardinality(String))) — クエリの実行中に使用されたフォーマットの正式名。
  • used_functions (Array(LowCardinality(String))) — クエリ実行時に使用された関数の正規名。
  • used_storages (Array(LowCardinality(String))) — クエリの実行中に使用されたストレージの正式名称。
  • used_table_functions (Array(LowCardinality(String))) — クエリの実行中に使用されたテーブル関数の標準名。
  • used_executable_user_defined_functions (Array(LowCardinality(String))) — クエリの実行中に使用された実行可能ユーザー定義関数の正準名。
  • used_sql_user_defined_functions (Array(LowCardinality(String))) — クエリの実行時に使用された SQL ユーザー定義関数の正規名。
  • used_row_policies (Array(LowCardinality(String))) — クエリ実行時に使用された行ポリシー名の一覧。
  • used_privileges (Array(LowCardinality(String))) — クエリ実行中に正常に検証された特権。
  • missing_privileges (Array(LowCardinality(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(LowCardinality(String), UInt64)) — 非同期読み込みに関するメトリクス。
  • is_internal (UInt8) — 内部的に実行される補助的なクエリかどうかを示します。

別名:

  • ProfileEvents.NamesmapKeys(ProfileEvents) のエイリアスです。
  • ProfileEvents.ValuesmapValues(ProfileEvents) のエイリアスです。
  • Settings.NamesmapKeys(Settings) のエイリアスです。
  • Settings.ValuesmapValues(Settings) のエイリアスです。

基本的な例

SELECT * FROM system.query_log WHERE type = 'QueryFinish' ORDER BY query_start_time DESC LIMIT 1 FORMAT Vertical;
Row 1:
──────
hostname:                              clickhouse.eu-central1.internal
type:                                  QueryFinish
event_date:                            2021-11-03
event_time:                            2021-11-03 16:13:54
event_time_microseconds:               2021-11-03 16:13:54.953024
query_start_time:                      2021-11-03 16:13:54
query_start_time_microseconds:         2021-11-03 16:13:54.952325
query_duration_ms:                     0
read_rows:                             69
read_bytes:                            6187
written_rows:                          0
written_bytes:                         0
result_rows:                           69
result_bytes:                          48256
memory_usage:                          0
current_database:                      default
query:                                 DESCRIBE TABLE system.query_log
formatted_query:
normalized_query_hash:                 8274064835331539124
query_kind:
databases:                             []
tables:                                []
columns:                               []
projections:                           []
views:                                 []
exception_code:                        0
exception:
stack_trace:
is_initial_query:                      1
user:                                  default
query_id:                              7c28bbbb-753b-4eba-98b1-efcbe2b9bdf6
address:                               ::ffff:127.0.0.1
port:                                  40452
initial_user:                          default
initial_query_id:                      7c28bbbb-753b-4eba-98b1-efcbe2b9bdf6
initial_address:                       ::ffff:127.0.0.1
initial_port:                          40452
initial_query_start_time:              2021-11-03 16:13:54
initial_query_start_time_microseconds: 2021-11-03 16:13:54.952325
interface:                             1
os_user:                               sevirov
client_hostname:                       clickhouse.eu-central1.internal
client_name:                           ClickHouse
client_revision:                       54449
client_version_major:                  21
client_version_minor:                  10
client_version_patch:                  1
http_method:                           0
http_user_agent:
http_referer:
forwarded_for:
quota_key:
revision:                              54456
log_comment:
thread_ids:                            [30776,31174]
ProfileEvents:                         {'Query':1,'NetworkSendElapsedMicroseconds':59,'NetworkSendBytes':2643,'SelectedRows':69,'SelectedBytes':6187,'ContextLock':9,'RWLockAcquiredReadLocks':1,'RealTimeMicroseconds':817,'UserTimeMicroseconds':427,'SystemTimeMicroseconds':212,'OSCPUVirtualTimeMicroseconds':639,'OSReadChars':894,'OSWriteChars':319}
Settings:                              {'load_balancing':'random','max_memory_usage':'10000000000'}
used_aggregate_functions:              []
used_aggregate_function_combinators:   []
used_database_engines:                 []
used_data_type_families:               []
used_dictionaries:                     []
used_formats:                          []
used_functions:                        []
used_storages:                         []
used_table_functions:                  []
used_executable_user_defined_functions:[]
used_sql_user_defined_functions:       []
used_privileges:                       []
missing_privileges:                    []
query_cache_usage:                     None

クラウドでの例

ClickHouse Cloud では、system.query_log は各ノードにローカルであるため、すべてのエントリを確認するには clusterAllReplicas 経由でクエリする必要があります。

たとえば、「default」クラスタ内のすべてのレプリカから query_log の行を集約するには、次のように書けます。

SELECT * 
FROM clusterAllReplicas('default', system.query_log)
WHERE event_time >= now() - toIntervalHour(1)
LIMIT 10
SETTINGS skip_unavailable_shards = 1;

関連項目

  • system.query_thread_log — このテーブルには、各クエリ実行スレッドに関する情報が含まれています。