max_temporary_columns
クエリの実行時に、定数カラムを含めて同時に RAM に保持できる一時カラムの最大数です。中間計算の結果、クエリによってメモリ内に指定数を超える一時カラムが生成された場合は、例外がスローされます。0 は無制限を意味します。
max_temporary_data_on_disk_size_for_query
同時実行中のすべてのクエリについて、ディスク上の一時ファイルが消費するデータ量の上限をバイト単位で指定します。 設定可能な値:- 正の整数。
0— 無制限 (既定値)
max_temporary_data_on_disk_size_for_user
同時実行中のすべてのユーザークエリについて、ディスク上の一時ファイルが消費するデータ量の最大値 (バイト単位) 。 設定可能な値:- 正の整数。
0— 無制限 (デフォルト)
max_temporary_non_const_columns
max_temporary_columns と同様に、クエリの実行時に同時に RAM に保持する必要がある一時カラムの最大数を指定します。ただし、定数カラムは含みません。
定数カラムはクエリの実行時によく生成されますが、必要な計算リソースはほぼゼロです。
max_temporary_table_memory_usage
Memory エンジンを使用する 1 つの一時テーブルが保持できるメモリの最大バイト数です。
CREATE TEMPORARY TABLE で作成されたテーブル (デフォルトの一時テーブルエンジンで作成されたものを含む。default_temporary_table_engine を参照) に適用され、
system.tables の total_bytes と同じ方法で計算されます。
この制限は、テーブルへのすべての INSERT (CREATE TEMPORARY TABLE ... AS SELECT を含む) において、データの受信中と、
データの追加直前の 2 回チェックされます。テーブルが制限を超える場合、INSERT は
TOO_MANY_BYTES エラーコードの例外をスローし、データは追加されません。複数のスレッドで書き込む INSERT (
max_insert_threads を参照) では各スレッドのデータが個別に追加されるため、あるスレッドが例外をスローした時点で
他のスレッドのデータがすでに追加されている可能性がありますが、テーブルが制限を超えることはありません。制限値は INSERT クエリの設定から取得されます。
この制限はミューテーション (ALTER TABLE ... UPDATE、MATERIALIZE COLUMN など) の後にもチェックされ、その際の制限値は
ALTER クエリの設定から取得されます。ミューテーション後のデータが制限を超える場合、ミューテーションは
TOO_MANY_BYTES エラーコードの例外をスローし、データは変更されません。
なお、Memory エンジンの max_bytes_to_keep 設定は動作が異なり、新しいデータを拒否するのではなく、最も古いデータを
エビクションします。両方が設定されている場合は、エビクションが先に適用されます。
設定可能な値:
- 正の整数。
0— 無制限 (デフォルト)
max_temporary_table_size_bytes_compressed
MergeTree ファミリーのエンジンを使用する一時テーブル 1 つあたりの、ディスク上のデータ (圧縮後) の最大サイズ (バイト単位) です。
CREATE TEMPORARY TABLE で作成されたテーブルに適用され、system.tables の total_bytes と同じ方法、
すなわちアクティブなデータパーツのサイズの合計として計算されます。
この制限は、テーブルへの INSERT (CREATE TEMPORARY TABLE ... AS SELECT を含む) のたびに、新しい
データパーツがコミットされる前にチェックされます。制限を超えることになる場合、INSERT は TOO_MANY_BYTES エラー
コードの例外をスローし、そのパーツは追加されません。複数ブロックの INSERT 中に発生する他のエラーの場合と同様に、
同じ INSERT によってそれ以前にコミットされたパーツはテーブルに残ります。値は INSERT クエリの設定から取得されます。
既存のパーツをテーブルに追加する操作にも同様の制限が適用され、値はそれぞれのクエリの設定から取得されます。対象となる操作は
ATTACH PART、ATTACH PARTITION、ATTACH PARTITION ... FROM、REPLACE PARTITION ... FROM
および CREATE TEMPORARY TABLE ... CLONE AS です。これらの操作は、テーブルのサイズが
増加しない場合を除き、操作全体が拒否されます。ATTACH PARTITION の場合、チェックはパーツがアタッチされる前に
すべてのパーツに対してまとめて 1 回だけ行われるため、同時実行される書き込みによってテーブルが制限をわずかに超える可能性があります。
バックグラウンドマージおよびミューテーション (ALTER TABLE ... UPDATE、
MATERIALIZE COLUMN など) によって書き込まれるパーツはチェックされません。そのため、データサイズが増加するミューテーションによってテーブルが制限を超える可能性があります。
設定可能な値:
- 正の整数。
0— 無制限 (デフォルト)
max_temporary_table_size_bytes_uncompressed
MergeTree ファミリーのエンジンを使用する一時テーブル 1 つあたりの非圧縮データの最大サイズ (バイト単位) です。
CREATE TEMPORARY TABLE で作成されたテーブルに適用され、system.tables の total_bytes_uncompressed
と同じ方法で算出されます。
この制限は、max_temporary_table_size_bytes_compressed と同じ方法でチェックされます。
設定可能な値:
- 正の整数。
0— 無制限 (デフォルト)
max_temporary_tables
1 つのセッション内に同時に存在できる一時テーブルの最大数です。 カウント対象はCREATE TEMPORARY TABLE で作成されたテーブルのみです。クエリとともに送信された外部データのテーブルや、
GLOBAL IN / GLOBAL JOIN またはマテリアライズド CTE のために内部で作成される一時テーブルはカウントされません。
この制限は新しい一時テーブルの作成時にチェックされ、セッション内の一時テーブル数がすでにこの値に達している場合は、エラーコード TOO_MANY_TABLES の例外がスローされます。
CREATE OR REPLACE TEMPORARY TABLE で既存の一時テーブルを置き換える場合はテーブル数が増えないため、常に許可されます。
設定可能な値:
- 正の整数。
0— 無制限 (デフォルト)