メインコンテンツへスキップ
時系列、つまりタイムスタンプとタグ (またはラベル) に関連付けられた値の集合を格納するテーブルエンジン:
これは実験的な機能であり、今後のリリースで後方互換性のない変更が行われる可能性があります。 allow_experimental_time_series_table 設定で TimeSeries テーブルエンジン の使用を有効にします。 set allow_experimental_time_series_table = 1 コマンドを実行します。

構文

使い方

まずは、すべてデフォルト設定のままで始めるのが簡単です (カラムの一覧を指定しなくても TimeSeries テーブルを作成できます) :
このテーブルは、以下のプロトコルで使用できます (サーバー設定でポートを割り当てる必要があります) :

ターゲットテーブル

TimeSeries テーブル自体はデータを持たず、すべてのデータはそのターゲットテーブルに格納されます。 これは materialized view の仕組みに似ていますが、 materialized view ではターゲットテーブルは 1 つであるのに対し、 TimeSeries テーブルには datatagsmetrics という 3 つのターゲットテーブルがあります。 ターゲットテーブルは CREATE TABLE クエリで明示的に指定することもできますし、 TimeSeries テーブルエンジンが内部ターゲットテーブルを自動生成することもできます。 ターゲットテーブルは次のとおりです:

data テーブル

data テーブルには、識別子に関連付けられた時系列が格納されます。 data テーブルには、次のカラムが必要です。

Tags テーブル

tags テーブルには、メトリクス名とタグの各組み合わせに対して計算された識別子が格納されます。 tags テーブルには、次のカラムが必要です。

Metrics テーブル

metrics テーブルには、収集されるメトリクスに関する情報、各メトリクスのタイプ、および説明が格納されます。 metrics テーブルには、次のカラムが必要です。 TimeSeries テーブルに挿入された任意の行は、実際にはこれら 3 つのターゲットテーブルに格納されます。 TimeSeries テーブルには、データタグメトリクス テーブルのすべてのカラムが含まれます。

作成

TimeSeries テーブルエンジンを使ってテーブルを作成する方法はいくつかあります。 最も簡単なステートメントは
実際には、次のテーブルが作成されます (SHOW CREATE TABLE my_table を実行すると確認できます) :
したがって、カラムは自動的に生成されており、このステートメントには 3 つの内部 UUID も含まれています - 作成された各内部ターゲットテーブルに 1 つずつ対応しています。 (内部 UUID は通常は表示されず、 show_table_uuid_in_table_create_query_if_not_nil を設定した場合にのみ表示されます。) 内部ターゲットテーブルの名前は .inner_id.data.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.inner_id.tags.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.inner_id.metrics.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx のようになっており、各ターゲットテーブルにはメインの TimeSeries テーブルのカラムの一部が含まれています:

カラムの型を調整する

メインテーブルの定義時に型を明示的に指定することで、内部ターゲットテーブルのほぼすべてのカラムの型を調整できます。例えば、
これにより、内部のdataテーブルには、タイムスタンプがミリ秒ではなくマイクロ秒で保存されます:

id カラム

id カラムには識別子が格納されており、各識別子はメトリクス名とタグの組み合わせごとに計算されます。 id カラムの DEFAULT 式は、そのような識別子を計算するために使用される式です。 id カラムの型とその式は、どちらも明示的に指定することで調整できます。

tagsall_tags カラム

タグのマップを含むカラムは tagsall_tags の 2 つあります。この例では両者は同じ意味ですが、tags_to_columns 設定を使用している場合は異なることがあります。 この設定を使うと、特定のタグを tags カラム内のマップに格納する代わりに、個別のカラムに格納するよう指定できます。
このステートメントにより、次のカラムが追加されます:
my_table と、その内部の tags ターゲットテーブルの両方の定義に対してです。この場合、tags カラムには instancejob のタグは含まれませんが、 all_tags カラムにはそれらが含まれます。all_tags カラムは一時的なもので、唯一の目的は id カラムの DEFAULT 式で 使用することです。 カラムの型は、明示的に指定することで調整できます:

内部ターゲットテーブルのテーブルエンジン

デフォルトでは、内部ターゲットテーブルでは次のテーブルエンジンを使用します。
  • data テーブルでは MergeTree を使用します。
  • tags テーブルでは AggregatingMergeTree を使用します。これは、同じデータがこのテーブルに複数回挿入されることが多いため、重複を除去する手段が必要であり、 また、カラム min_timemax_time の集約にも必要だからです。
  • metrics テーブルでは ReplacingMergeTree を使用します。これは、同じデータがこのテーブルに複数回挿入されることが多いため、重複を除去する手段が必要だからです。
指定すれば、内部ターゲットテーブルで他のテーブルエンジンを使用することもできます。

外部ターゲットテーブル

TimeSeries テーブルで、手動で作成したテーブルを使用できます。

設定

以下は、TimeSeries テーブルの定義時に指定できる設定の一覧です。 以下は、TimeSeries テーブルを引数としてサポートする関数の一覧です。
最終更新日 2026年6月12日