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.のような文字列が表示されます。このフィールドにはサーバーのversionではなくrevisionが格納されます。 -
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 で有効または無効にできます。
例