system.trace_log
このシステムテーブルのデータは、ClickHouse Cloud の各ノードにローカルに保持されています。したがって、すべてのデータの完全なビューを取得するには、clusterAllReplicas 関数が必要です。詳細については こちら を参照してください。
サンプリングクエリプロファイラによって収集されたスタックトレースが含まれています。
ClickHouseは、trace_logサーバー設定セクションが設定されると、このテーブルを作成します。また、次の設定も参照してください: query_profiler_real_time_period_ns, query_profiler_cpu_time_period_ns, memory_profiler_step, memory_profiler_sample_probability, trace_profile_events。
ログを分析するには、addressToLine、addressToLineWithInlines、addressToSymbol、およびdemangleイントロスペクション関数を使用します。
カラム:
-
hostname(LowCardinality(String)) — クエリを実行しているサーバーのホスト名。 -
event_date(Date) — サンプリングの瞬間の日時。 -
event_time(DateTime) — サンプリングの瞬間のタイムスタンプ。 -
event_time_microseconds(DateTime64) — マイクロ秒の精度でのサンプリングの瞬間のタイムスタンプ。 -
timestamp_ns(UInt64) — ナノ秒単位のサンプリングの瞬間のタイムスタンプ。 -
revision(UInt32) — ClickHouseサーバービルドのリビジョン。clickhouse-clientでサーバーに接続すると、Connected to ClickHouse server version 19.18.1.に似た文字列が表示されます。このフィールドにはサーバーのrevisionが含まれていますが、versionは含まれていません。 -
trace_type(Enum8) — トレースタイプ:Realはウォールクロック時間によるスタックトレースの収集を表します。CPUはCPU時間によるスタックトレースの収集を表します。Memoryはメモリアロケーションが次のウォーターマークを超えたときに行われるアロケーションとディアロケーションの収集を表します。MemorySampleはランダムなアロケーションとディアロケーションの収集を表します。MemoryPeakはピークメモリ使用量の更新の収集を表します。ProfileEventはプロファイルイベントの増分の収集を表します。JemallocSampleはjemallocサンプルの収集を表します。MemoryAllocatedWithoutCheckは任意のメモリ制限を無視して行われる重要なアロケーション (>16MiB) の収集を表します (ClickHouse開発者のみ)。
-
thread_id(UInt64) — スレッド識別子。 -
query_id(String) — query_logシステムテーブルから実行中のクエリの詳細を取得するために使用できるクエリ識別子。 -
trace(Array(UInt64)) — サンプリングの瞬間のスタックトレース。各要素はClickHouseサーバープロセス内の仮想メモリアドレスです。 -
size(Int64) - トレースタイプがMemory、MemorySample、またはMemoryPeakの場合は割り当てられたメモリの量であり、他のトレースタイプの場合は0です。 -
event(LowCardinality(String)) - トレースタイプがProfileEventの場合は更新されたプロファイルイベントの名前、他のトレースタイプの場合は空文字列です。 -
increment(UInt64) - トレースタイプがProfileEventの場合はプロファイルイベントの増分の量、他のトレースタイプの場合は0です。 -
symbols, (Array(LowCardinality(String))), シンボル化が有効な場合、traceに対応するデマングルされたシンボル名が含まれます。 -
lines, (Array(LowCardinality(String))), シンボル化が有効な場合、traceに対応する行番号付きのファイル名を含む文字列が含まれます。
シンボル化は、サーバーの設定ファイル内のtrace_logの下のsymbolizeで有効または無効にできます。
例