system.merge_tree_settings には、グローバルに設定された MergeTree の設定が表示されます。
MergeTree の設定は、サーバー設定ファイルの merge_tree セクションで設定するか、各 MergeTree テーブルごとに
CREATE TABLE ステートメントの SETTINGS 句で個別に指定できます。
設定 max_suspicious_broken_parts をカスタマイズする例:
サーバー設定ファイルで、すべての MergeTree テーブルのデフォルトを設定します:
ALTER TABLE ... MODIFY SETTING を使用して変更します。
MergeTree の設定
adaptive_write_buffer_initial_size
add_implicit_sign_column_constraint_for_collapsing_engine
sign カラムに暗黙的な制約を追加し、有効な値 (1 と -1) のみを許可します。
add_minmax_index_for_block_number_column
_block_number に対して暗黙的な min-max (スキッピング) 索引が追加されます。
有効にするには enable_block_number_column = 1 が必要です。索引が構築されるのは挿入時ではなくマージ時のみです。
挿入時点では block number はまだ暫定値であるため、定数に対する索引になってしまいます。
add_minmax_index_for_block_offset_column
_block_offset に対して暗黙的な min-max (スキッピング) 索引が追加されます。
この設定を有効にするには enable_block_offset_column = 1 が必要です。索引が作成されるのはマージ時のみで、
挿入時には作成されません。
add_minmax_index_for_numeric_columns
add_minmax_index_for_string_columns
add_minmax_index_for_temporal_columns
allow_coalescing_columns_in_partition_or_order_key
allow_commit_order_projection
_block_number と _block_offset の仮想カラムを格納するコミット順プロジェクションを有効にし、マージ後も元の挿入順序を保持します。
この設定を使用するには、enable_block_number_column と enable_block_offset_column を有効にする必要があります。
allow_experimental_replacing_merge_with_cleanup
is_deleted
カラムを持つ ReplacingMergeTree に対して、実験的な CLEANUP マージを許可します。有効にすると、OPTIMIZE ... FINAL CLEANUP を使用してパーティション内のすべてのパーツを手動で 1 つのパーツにマージし、削除済みの行を削除できるようになります。
また、設定 min_age_to_force_merge_seconds、
min_age_to_force_merge_on_partition_only および
enable_replacing_merge_with_cleanup_for_min_age_to_force_merge
により、この種のマージをバックグラウンドで自動的に実行できるようにもなります。
allow_experimental_reverse_key
allow_experimental_reverse_key を有効にすると、MergeTree テーブルの ORDER BY
句内で降順の並び順を定義できます。これにより、降順クエリでは
ReadInReverseOrder の代わりに、より効率的な ReadInOrder 最適化を
使用できます。
例
ORDER BY time DESC を指定すると、ReadInOrder が適用されます。
デフォルト値: false
allow_floating_point_partition_key
0— 浮動小数点数のパーティションキーは許可されません。1— 浮動小数点数のパーティションキーは許可されます。
allow_nullable_key
allow_part_offset_column_in_projections
allow_reduce_blocking_parts_task
allow_remote_fs_zero_copy_replication
allow_summing_columns_in_partition_or_order_key
allow_suspicious_indices
allow_vertical_merges_from_compact_to_wide_parts
alter_column_secondary_index_mode
ALTER コマンドを許可するかどうか、および
許可する場合にどのような処理を行うかを設定します。デフォルトでは、そのような ALTER コマンドは許可され、索引は再構築されます。
設定可能な値:
rebuild(default):ALTERコマンドで変更されるカラムの影響を受けるセカンダリ索引を再構築します。throw: 例外を送出して、明示的なセカンダリ索引の対象となっているカラムに対するALTERをすべて禁止します。暗黙的な索引はこの制限の対象外で、再構築されます。drop: 依存するセカンダリ索引を削除します。新しいパーツには索引が作成されないため、再作成するにはMATERIALIZE INDEXが必要です。compatibility: 元の動作に合わせます。ALTER ... MODIFY COLUMNではthrow、ALTER ... UPDATE/DELETEではrebuildになります。ignore: 上級者向けのオプションです。索引を不整合な状態のまま残すため、誤ったクエリ結果を招く可能性があります。
always_fetch_merged_part
- true, false
always_use_copy_instead_of_hardlinks
apply_patches_on_merge
assign_part_uuids
async_block_ids_cache_update_wait_ms
async_insert
auto_statistics_types
background_task_preferred_step_execution_time_ms
cache_populated_by_fetch
この設定は ClickHouse Cloud でのみ適用されます。
cache_populated_by_fetch が無効 (デフォルト) になっている場合、新しいデータパーツは、それらのパーツを必要とするクエリが実行されたときにのみファイルシステムキャッシュに読み込まれます。
有効にすると、cache_populated_by_fetch により、そのような動作をトリガーするクエリがなくても、すべてのノードが storage から新しいデータパーツを各自のファイルシステムキャッシュに読み込むようになります。
関連項目
cache_populated_by_fetch_filename_regexp
この設定は ClickHouse Cloud にのみ適用されます。
cache_populated_by_fetch が有効な場合) 。
check_delay_period
check_sample_column_is_correct
UInt8, UInt16,
UInt32, UInt64。
設定可能な値:
true— チェックは有効です。false— テーブル作成時のチェックは無効です。
true。
デフォルトでは、ClickHouseサーバーはテーブル作成時に、サンプリングまたはサンプリング式に使用するカラムのデータ型をチェックします。すでに
不正なサンプリング式を持つテーブルがあり、起動時にサーバーが例外を発生させないようにしたい場合は、
check_sample_column_is_correct を false に設定してください。
clean_deleted_rows
cleanup_delay_period
cleanup_delay_period_random_add
cleanup_thread_preferred_points_per_iteration
cleanup_threads
clone_replica_zookeeper_create_get_part_batch_size
columns_and_secondary_indices_sizes_lazy_calculation
columns_to_prewarm_mark_cache
compact_parts_max_bytes_to_buffer
compact_parts_max_granules_to_buffer
compact_parts_merge_max_bytes_to_prefetch_part
compatibility_allow_sampling_expression_not_in_primary_key
compress_marks
compress_per_column_in_compact_parts
compress_primary_key
concurrent_part_removal_threshold
max_part_removal_threadsを参照) は、
非アクティブなデータパーツ数が少なくともこの値に達した場合にのみ有効化されます。
concurrent_part_removal_threshold_for_remote_disk
concurrent_part_removal_threshold と同じですが、削除対象の
パーツのうち少なくとも 1 つがリモートディスクに保存されている場合に使用されます。デフォルト値が低めに
設定されているのは、リモートストレージ上での各パーツ削除では通常ネットワーク
ラウンドトリップが必要になるためです (たとえばオブジェクトストレージでは、パーツごとに 1 回の HTTP DELETE が発生します) 。そのため、
100 パーツでも直列に削除すると、DROP TABLE が数十秒間ブロックされることがあります。
deduplicate_merge_projection_mode
ignore オプションは
純粋に互換性のためのものであり、誤った結果を招く可能性があります。許可する場合は、
PROJECTION の merge 時に何を行うか (drop または rebuild) を指定します。したがって、
classic MergeTree ではこの setting は無視されます。また、OPTIMIZE DEDUPLICATE も
制御しますが、その効果は MergeTree family のすべてのメンバーに及びます。
lightweight_mutation_projection_mode オプションと同様に、これも part level です。
設定可能な値:
ignorethrowdroprebuild
default_compression_codec
- テーブル定義でそのカラムに対して定義された圧縮codec
default_compression_codecで定義された圧縮codec (この設定)compression設定で定義されたデフォルトの圧縮codec デフォルト値: 空文字列 (未定義) 。
detach_not_byte_identical_parts
MergeTree テーブルに適用されます。
設定可能な値:
0— パーツは削除されます。1— パーツはデタッチされます。
detach_old_local_parts_when_cloning_replica
truefalse
disable_detach_partition_for_zero_copy_replication
disable_fetch_partition_for_zero_copy_replication
disable_freeze_partition_for_zero_copy_replication
ディスク
distributed_index_analysis_min_indexes_bytes_to_activate
distributed_index_analysis_min_parts_to_activate
dynamic_serialization_version
v1v2v3
enable_block_number_column
_block_number カラムの永続化を有効にします。
enable_block_offset_column
_block_offset を永続的に保存します。
enable_index_granularity_compression
enable_max_bytes_limit_for_min_age_to_force_merge
min_age_to_force_merge_seconds および
min_age_to_force_merge_on_partition_only に
設定 max_bytes_to_merge_at_max_space_in_pool を
適用するかどうかを指定します。
設定可能な値:
truefalse
enable_mixed_granularity_parts
index_granularity_bytes 設定による granule サイズ制御への移行を有効または無効にします。バージョン 19.11 より前は、granule サイズを制限する設定は index_granularity しかありませんでした。index_granularity_bytes 設定により、大きな行 (数十〜数百メガバイト) を持つテーブルからデータを選択する際の ClickHouse のパフォーマンスが向上します。
大きな行を持つテーブルがある場合は、そのテーブルでこの設定を有効にすると、SELECT クエリの効率を向上できます。
enable_replacing_merge_with_cleanup_for_min_age_to_force_merge
allow_experimental_replacing_merge_with_cleanup、
min_age_to_force_merge_seconds、および min_age_to_force_merge_on_partition_only
を有効にする必要があります。
設定可能な値:
truefalse
enable_the_endpoint_id_with_zookeeper_name_prefix
enable_vertical_merge_algorithm
enforce_index_structure_match_on_partition_manipulation
ATTACH/MOVE/REPLACE PARTITION) の宛先テーブルで有効になっている場合、ソーステーブルと宛先テーブルの索引およびPROJECTIONは同一である必要があります。そうでない場合、宛先テーブルはソーステーブルの索引およびPROJECTIONをすべて含んでいれば問題ありません。
escape_index_filenames
escape_variant_subcolumn_filenames
exclude_deleted_rows_for_part_size_in_merge
DELETE FROM によって削除された行を除いたサイズ) が使用されます。この動作がトリガーされるのは、この設定を有効にした後に実行された DELETE FROM の影響を受けたデータパーツに限られます。
設定可能な値:
truefalse
exclude_materialize_skip_indexes_on_merge
execute_merges_on_single_replica_time_threshold
- 任意の正の整数。
fault_probability_after_part_commit
fault_probability_before_part_commit
finished_mutations_to_keep
force_read_through_cache_for_merges
fsync_after_insert
fsync_part_directory
in_memory_parts_enable_wal
in_memory_parts_insert_sync
inactive_parts_to_delay_insert
inactive_parts_to_delay_insert の値を超えると、INSERT は意図的に
遅延されます。
設定可能な値:
- 任意の正の整数。
inactive_parts_to_throw_insert
inactive_parts_to_throw_insert の値を超えると、INSERT は中断され、
次のエラーになります。
“非アクティブなパーツが多すぎます (N)。パーツのクリーンアップ処理が 挿入処理に比べて著しく遅くなっています” exception.”設定可能な値:
- 任意の正の整数。
index_granularity
index_granularity_bytes
0 に設定します (非推奨) 。
initialization_retry_period
kill_delay_period
kill_delay_period_random_add
kill_threads
lightweight_mutation_projection_mode
DELETE は
プロジェクションを持つテーブルでは動作しません。これは、プロジェクション内の行が
DELETE 操理の影響を受ける可能性があるためです。そのため、デフォルト値は
throw です。ただし、この
オプションを使うと動作を変更できます。値を drop または rebuild
にすると、プロジェクションがある場合でも削除を実行できます。drop を指定すると
プロジェクションは削除されるため、現在のクエリではその削除処理により
高速になる可能性がありますが、以降のクエリではプロジェクションがアタッチされていないため
遅くなる可能性があります。rebuild を指定すると
プロジェクションが再構築されるため、現在のクエリの性能に影響する可能性がありますが、
以降のクエリは高速化される可能性があります。なお、これらのオプションが
作用するのはパートレベルだけです。つまり、変更対象にならないパート内の
プロジェクションは、drop や rebuild
をトリガーすることなく、そのまま維持されます。
設定可能な値:
throwdroprebuild
load_existing_rows_count_for_old_parts
truefalse
lock_acquire_timeout_for_background_operations
map_buckets_coefficient
sqrt および linear map_buckets_strategy で使用される係数です。
sqrt 戦略の場合: round(map_buckets_coefficient * sqrt(avg_map_size))。
linear 戦略の場合: round(map_buckets_coefficient * avg_map_size)。
map_buckets_strategy が constant の場合は無視されます。
map_buckets_min_avg_size
with_buckets シリアライゼーションの適用に必要な最小の平均 Map サイズ (1行あたりのキー数) 。
平均 Map サイズがこの値を下回る場合は、他のバケット設定に関係なく、単一のバケットが使用されます。
値を 0 にすると、このしきい値は無効になり、常にバケット化戦略が適用されます。
この設定は、効果がほとんど見込めない小さな Map に対して、バケット化シリアライゼーションのオーバーヘッドを避けるのに役立ちます。
map_buckets_strategy
with_buckets Map シリアライゼーションにおけるバケット数の選択戦略を制御します。
設定可能な値:
- constant — 平均の Map サイズに関係なく、常に max_buckets_in_map をバケット数として使用します。
- sqrt — バケット数として
round(map_buckets_coefficient * sqrt(avg_map_size))を使用し、値は[1, max_buckets_in_map]の範囲に制限されます。 - linear — バケット数として
round(map_buckets_coefficient * avg_map_size)を使用し、値は[1, max_buckets_in_map]の範囲に制限されます。
map_serialization_version
Map カラムで使用するシリアライゼーション方式を制御します。
設定可能な値:
- basic —
Mapに標準のシリアライゼーションを使用します。 - with_buckets — シリアライゼーション時にキーをバケットに分割します。バケットを使用すると、Map から個々のキーをより効率的に読み取れます。
with_buckets serialization のバケット数は、max_buckets_in_map と map_buckets_strategy によって決まります。
map_serialization_version_for_zero_level_parts
Map カラムに別のシリアル化バージョンを指定できます。
insert 時のパフォーマンス低下を避けるため、ゼロレベルのパーツでは basic シリアライゼーションを維持しつつ、マージ済みパーツでは with_buckets を使用する場合に役立ちます。
marks_compress_block_size
marks_compression_codec
materialize_skip_indexes_on_merge
materialize_statistics_on_merge
materialize_ttl_recalculate_only
max_avg_part_size_for_too_many_parts
max_buckets_in_map
Map シリアライゼーションにおけるバケットの最大数です。with_buckets Map シリアライゼーションで使用されます。
実際のバケット数は map_buckets_strategy によって決まります。
許容される最大値は 256 です。
max_bytes_to_merge_at_max_space_in_pool
- 任意の非負整数。
max_bytes_to_merge_at_max_space_in_pool を超えるまで実行されます。
OPTIMIZE FINAL によって開始されたマージでは、max_bytes_to_merge_at_max_space_in_pool は無視されます (考慮されるのは空きディスク容量のみです) 。
max_bytes_to_merge_at_min_space_in_pool
- 任意の正の整数。
max_bytes_to_merge_at_min_space_in_pool は、利用可能なディスク容量
(プール内) が不足している場合でもマージできるパーツの合計サイズの
上限を定義します。これは、小さなパーツの数を減らし、
Too many parts エラーが発生する可能性を下げるために必要です。
マージでは、マージ対象のパーツの合計サイズの 2 倍のディスク容量が予約されます。
そのため、ディスクの空き容量が少ない場合、空き容量自体はあるものの、
進行中の大規模なマージですでにその容量が予約されているため、
ほかのマージを開始できず、insert のたびに小さなパーツが
増えていく状況が発生することがあります。
max_cleanup_delay_period
max_compress_block_size
max_concurrent_queries
max_concurrent_queries 設定によっても引き続き制限されます。
設定可能な値:
- 正の整数。
0— 制限なし。
0 (制限なし) 。
例
max_delay_to_insert
INSERT の遅延を計算するために使用される、秒単位の値です。
設定可能な値:
- 任意の正の整数。
INSERT の遅延 (ミリ秒) は、次の式で計算されます:
INSERT は
pow( 1 * 1000, (1 + 299 - 150) / (300 - 150) ) = 1000
ミリ秒遅延されます。
バージョン 23.1 以降、この式は次のように変更されました。
INSERT は max( 10, 1 * 1000 * (224 - 150 + 1) / (300 - 150) ) = 500 ミリ秒だけ遅延されます。
max_delay_to_mutate_ms
max_digestion_size_per_segment
max_file_name_length
replace_long_file_name_to_hash が有効な場合にのみ適用されます。
この設定の値には、ファイル拡張子の長さは含まれません。そのため、
ファイルシステムエラーを避けるには、最大ファイル名長 (通常は 255
バイト) よりも少し余裕を持たせて、それより小さい値に設定することを推奨します。
max_files_to_modify_in_alter_columns
- 任意の正の整数。
max_files_to_remove_in_alter_columns
- 任意の正の整数。
max_merge_delayed_streams_for_parallel_write
max_merge_selecting_sleep_ms
max_number_of_merges_with_ttl_in_pool
max_number_of_mutations_for_replica
max_part_loading_threads
max_part_removal_threads
max_partitions_to_read
- 任意の正の整数。
max_parts_in_total
max_parts_in_total の値を超えると、INSERT は Too many parts (N) 例外で中断されます。
設定可能な値:
- 任意の正の整数。
max_parts_to_merge_at_once
max_postpone_time_for_failed_mutations_ms
max_postpone_time_for_failed_replicated_fetches_ms
max_postpone_time_for_failed_replicated_merges_ms
max_postpone_time_for_failed_replicated_tasks_ms
max_projections
max_replicated_fetches_network_bandwidth
max_replicated_fetches_network_bandwidth_for_server
設定とは異なり、特定のテーブルに適用されます。
サーバーネットワークと特定テーブルのネットワークの両方を制限できますが、
その場合は、テーブルレベルの設定値をサーバーレベルの設定値より小さくする必要があります。
そうでない場合、サーバーは
max_replicated_fetches_network_bandwidth_for_server 設定のみを考慮します。
この設定は、厳密に正確に適用されるわけではありません。
設定可能な値:
- 正の整数。
0— 無制限。
0。
用途
データをレプリケートして新しいノードを追加または置き換える際の
速度スロットリングに使用できます。
max_replicated_logs_to_keep
- 任意の正の整数。
max_replicated_merges_in_queue
max_replicated_merges_with_ttl_in_queue
max_replicated_mutations_in_queue
max_replicated_sends_network_bandwidth
max_replicated_sends_network_bandwidth_for_server
設定とは異なり、特定のテーブルに適用されます。
サーバーのネットワークと特定のテーブルのネットワークの両方を制限できますが、
その場合、テーブルレベルの設定値は
サーバーレベルの設定値より小さくする必要があります。
そうしないと、サーバーは
max_replicated_sends_network_bandwidth_for_server 設定のみを考慮します。
この設定は、厳密にそのとおり適用されるわけではありません。
設定可能な値:
- 正の整数。
0— 無制限。
max_suspicious_broken_parts
max_suspicious_broken_parts の値を超えると、自動削除は許可されません。
設定可能な値:
- 任意の正の整数。
max_suspicious_broken_parts_bytes
- 任意の正の整数。
max_uncompressed_bytes_in_patches
merge_max_block_size
- 任意の正の整数。
merge_max_block_size 行ごとの block で行を読み込み、
その後、結果をマージして新しいパーツに書き込みます。読み込まれた block は RAM に配置されるため、
merge_max_block_size はマージに必要な RAM 量に影響します。
そのため、平均行サイズが非常に大きいテーブルでは、マージ時に大量の RAM を消費する可能性があります
(平均行サイズが 100kb の場合、10 個のパーツをマージすると、
(100kb * 10 * 8192) = 約 8GB の RAM になります) 。merge_max_block_size を小さくすると、
マージに必要な RAM 量は減らせますが、マージ速度は低下します。
merge_max_block_size_bytes
index_granularity_bytes と同じ値です。
merge_max_bytes_to_prewarm_cache
merge_max_dynamic_subcolumns_in_compact_part
JSON(max_dynamic_paths=1024) 型のカラムがあり、設定 merge_max_dynamic_subcolumns_in_compact_part が 128 に設定されている場合、
compact データパートへのマージ後、そのパーツ内の動的パス数は 128 に減少し、動的サブカラムとして書き込まれるのも 128 個のパスのみになります。
merge_max_dynamic_subcolumns_in_wide_part
JSON(max_dynamic_paths=1024) 型のカラムがあり、設定 merge_max_dynamic_subcolumns_in_wide_part が 128 に設定されている場合、
wide データパートへのマージ後は、そのパーツ内の動的パス数が 128 まで減り、動的サブカラムとして書き込まれるパスも 128 個のみになります。
merge_selecting_sleep_ms
merge_selecting_sleep_slowdown_factor
merge_selector_algorithm
merge_selector_base
merge_selector_blurry_base_scale_factor
merge_selector_enable_heuristic_to_lower_max_parts_to_merge_at_once
merge_selector_enable_heuristic_to_remove_small_parts_at_right
sum_size の指定された比率 (0.01) 未満である場合に、範囲の右側にあるパーツを除外するマージ対象パーツ選択のヒューリスティックを有効にします。
Simple および StochasticSimple の merge selector で機能します
merge_selector_heuristic_to_lower_max_parts_to_merge_at_once_exponent
merge_selector_window_size
merge_total_max_bytes_to_prewarm_cache
merge_tree_clear_old_broken_detached_parts_ttl_timeout_seconds
merge_tree_clear_old_parts_interval_seconds
- 任意の正の整数。
merge_tree_clear_old_temporary_directories_interval_seconds
- 任意の正の整数。
merge_tree_enable_clear_old_broken_detached
merge_with_recompression_ttl_timeout
merge_with_ttl_timeout
merge_workload
workload 設定の値として使用されます。指定しない場合 (空文字列) は、代わりにサーバー設定 merge_workload が使用されます。
関連項目
min_absolute_delay_to_close
min_age_to_force_merge_on_partition_only
min_age_to_force_merge_seconds を、部分集合ではなくパーティション全体にのみ適用するかどうか。
デフォルトでは、設定 max_bytes_to_merge_at_max_space_in_pool は無視されます (enable_max_bytes_limit_for_min_age_to_force_merge を参照) 。
設定可能な値:
- true, false
min_age_to_force_merge_seconds
min_age_to_force_merge_seconds の値を超えている場合、パーツをマージします。
デフォルトでは、設定 max_bytes_to_merge_at_max_space_in_pool を無視します
(enable_max_bytes_limit_for_min_age_to_force_merge を参照) 。
設定可能な値:
- 正の整数。
min_bytes_for_compact_part
min_bytes_for_full_part_storage
min_bytes_for_wide_part
Wide フォーマットで保存できる データパート の最小バイト数/最小行数です。これら 2 つの設定は、片方だけ設定することも、両方設定することも、どちらも設定しないこともできます。
min_bytes_to_prewarm_caches
min_bytes_to_rebalance_partition_over_jbod
- 正の整数。
0— バランシングは無効です。
min_bytes_to_rebalance_partition_over_jbod 設定の値は、
max_bytes_to_merge_at_max_space_in_pool
の値 / 1024 未満にしてはいけません。そうしないと、ClickHouse は例外をスローします。
min_columns_to_activate_adaptive_write_buffer
- 0 - 無制限
- 1 - 常に有効
min_compress_block_size
min_compressed_bytes_to_fsync_after_fetch
min_compressed_bytes_to_fsync_after_merge
fsync を実行するために必要な、圧縮後の最小バイト数 (0 は無効)
min_delay_to_insert_ms
min_delay_to_mutate_ms
min_free_disk_bytes_to_perform_insert
min_free_disk_bytes_to_perform_insert 未満の場合、例外がスローされ、
insert は実行されません。この設定については、次の点に注意してください。
keep_free_space_bytes設定が考慮されます。INSERT操作によって書き込まれるデータ量は考慮されません。- 正の値 (0 以外のバイト数) が指定されている場合にのみチェックされます
- 任意の正の整数。
min_free_disk_bytes_to_perform_insert と min_free_disk_ratio_to_perform_insert
の両方が指定されている場合、ClickHouse は、より多くの空きメモリで
insert を実行できるほうの値を採用します。min_free_disk_ratio_to_perform_insert
INSERT を実行するために必要な、空きディスク容量の総ディスク容量に対する最小比率です。0 から 1 までの
浮動小数点値である必要があります。なお、この設定には次の特徴があります。
keep_free_space_bytes設定を考慮します。INSERT操作によって書き込まれるデータ量は考慮しません。- 正の (ゼロでない) 比率が指定されている場合にのみチェックされます
- Float, 0.0 - 1.0
min_free_disk_ratio_to_perform_insert と
min_free_disk_bytes_to_perform_insert の両方が指定されている場合、ClickHouse は
より多くの空きディスク容量を確保したまま insert を実行できる方の値を採用します。
min_index_granularity_bytes
index_granularity_bytes
が極端に小さいテーブルを作成してしまうことを防ぐための安全策です。
min_level_for_full_part_storage
min_level_for_wide_part
Compact ではなく Wide フォーマットで作成するために必要な最小のパーツレベル。
min_marks_to_honor_max_concurrent_queries
クエリは引き続き、他の
max_concurrent_queries 設定によって制限されます。- 正の整数。
0— 無効 (どのクエリにもmax_concurrent_queriesの制限は適用されません) 。
min_merge_bytes_to_use_direct_io
min_merge_bytes_to_use_direct_io バイトを超える場合、ClickHouse は
direct I/O インターフェイス (O_DIRECT オプション) を使用して、ストレージディスクにデータを読み書きします。
min_merge_bytes_to_use_direct_io = 0 の場合、direct I/O は無効になります。
min_parts_to_merge_at_once
min_relative_delay_to_close
min_relative_delay_to_measure
min_relative_delay_to_yield_leadership
min_replicated_logs_to_keep
- 任意の正の整数。
min_rows_for_compact_part
min_rows_for_full_part_storage
min_rows_for_wide_part
Compact ではなく Wide フォーマットのデータパーツを作成するために必要な最小行数。
min_rows_to_fsync_after_merge
mutation_workload
workload 設定の値として使用されます。指定しない場合 (空文字列) は、代わりにサーバー設定 mutation_workload が使用されます。
関連項目
non_replicated_deduplication_window
- 任意の正の整数。
0(重複排除を無効化) 。
notify_newest_block_number
nullable_serialization_version
Nullable(T) カラムに使用するシリアライゼーション方式を制御します。
設定可能な値:
-
basic —
Nullable(T)に標準のシリアライゼーションを使用します。 -
allow_sparse —
Nullable(T)でスパースエンコーディングを使用できるようにします。
number_of_free_entries_in_pool_to_execute_mutation
- 任意の正の整数。
number_of_free_entries_in_pool_to_execute_mutation 設定の値は、
background_pool_size の値
- background_merges_mutations_concurrency_ratio より小さく なければなりません。そうでない場合、ClickHouse は例外をスローします。
number_of_free_entries_in_pool_to_execute_optimize_entire_partition
min_age_to_force_merge_seconds を設定し、
min_age_to_force_merge_on_partition_only を有効にすると生成されます) 。
これは、通常のマージ用の空きスレッドを確保し、
「パーツが多すぎる」を回避するためです。
設定可能な値:
- 正の整数。
number_of_free_entries_in_pool_to_execute_optimize_entire_partition
設定の値は、次の値より小さくなければなりません。
background_pool_size
- background_merges_mutations_concurrency_ratio。 そうでない場合、ClickHouse は例外をスローします。
number_of_free_entries_in_pool_to_lower_max_size_of_merge
- 任意の正の整数。
number_of_mutations_to_delay
number_of_mutations_to_throw
number_of_partitions_to_consider_for_merge
object_serialization_version
v1v2v3
v3 のみです。
compact パーツにおける JSON の 共有データ シリアライゼーション用の バケット 数です。map_with_buckets および advanced の 共有データ シリアライゼーションで機能します。
許容される最大値は 256 です。
wide パーツにおける JSON 共有データ シリアライゼーションのバケット数です。map_with_buckets および advanced の 共有データ シリアライゼーションで使用されます。
許容される最大値は 256 です。
JSON データ型内の 共有データ のシリアル化バージョンです。
設定可能な値:
map- 共有データ をMap(String, String)として保存しますmap_with_buckets- 共有データ を複数の独立したMap(String, String)カラムとして保存します。バケットを使用すると、共有データ から個々のパスを読み取る際の効率が向上します。advanced- 共有データ から個々のパスを読み取る性能を大幅に向上させるために設計された、共有データ 向けの特別なシリアライゼーションです。 このシリアライゼーションでは追加情報を多く保存するため、ディスク上で 共有データ の保存サイズが増加する点に注意してください。
map_with_buckets および advanced シリアル化のバケット数は、次の設定によって決まります
object_shared_data_buckets_for_compact_part/object_shared_data_buckets_for_wide_part。
この設定では、insert 時に作成されるゼロレベルのパーツについて、
JSON 型内の共有データに使用するシリアル化バージョンを指定できます。
advanced の共有データシリアライゼーションをゼロレベルのパーツで使用することは推奨されません。
挿入時間が大幅に増加する可能性があるためです。
old_parts_lifetime
- 任意の正の整数。
old_parts_lifetime 秒が経過してから削除します。
非アクティブなパーツは、現在実行中のクエリで使用されていない場合、つまり
そのパーツの refcount が 1 の場合に削除されます。
新しいパーツに対しては fsync が呼び出されないため、しばらくの間、新しいパーツは
サーバーの RAM (OS cache) にのみ存在します。サーバーが予期せず再起動すると、新しい
パーツが失われたり破損したりする可能性があります。データを保護するため、非アクティブなパーツは
すぐには削除されません。
起動時に ClickHouse はパーツの整合性をチェックします。マージされた
パーツが破損している場合、ClickHouse は非アクティブなパーツをアクティブリストに戻し、
その後でもう一度マージします。続いて、破損したパーツは名前が変更され (broken_
プレフィックスが追加され) 、detached フォルダーに移動されます。マージされたパーツが
破損していない場合は、元の非アクティブなパーツの名前が変更され (ignored_
プレフィックスが追加され) 、detached フォルダーに移動されます。
dirty_expire_centisecs のデフォルト値 (Linux カーネルの設定) は 30
秒です (書き込まれたデータが RAM にのみ保持される最大時間) 。ただし、
ディスクシステムに高い負荷がかかっている場合、データの書き込みはさらに遅くなることがあります。実験的に、
old_parts_lifetime には 480 秒という値が選ばれており、この間に
新しいパーツが確実にディスクへ書き込まれるようになっています。
optimize_row_order
DateTime64 型の timestamp カラムを含むような、カーディナリティの高い
主キーでは、この設定による効果はあまり期待できません。
part_minmax_index_columns
partition_key_only— パーティションキーのカラムのみを追跡します。with_block_number_offset— パーティションキーのカラムに加えて、永続化された仮想カラム_block_numberと_block_offsetも対象になります。これらのカラムによるパートレベルの pruning が有効になります。
part_moves_between_shards_delay_seconds
part_moves_between_shards_enable
parts_to_delay_insert
parts_to_delay_insert の値を超えると、INSERT は意図的に遅延されます。
設定可能な値:
- 任意の正の整数。
INSERT の実行を意図的に長引かせ (「sleep」を追加し) 、
バックグラウンドのマージ処理が、パーツの追加よりも速くマージを進められるようにします。
parts_to_throw_insert
parts_to_throw_insert の値を超えると、INSERT は Too many parts (N). Merges are processing significantly slower than inserts
例外で中断されます。
設定可能な値:
- 任意の正の整数。
SELECT クエリのパフォーマンスを最大化するには、処理するパーツ数を最小限に抑える必要があります。詳しくは Merge Tree を参照してください。
バージョン 23.6 より前では、この設定の値は 300 でした。これより大きい値を設定すると、Too many parts
エラーが発生する可能性は低くなりますが、その一方で SELECT のパフォーマンスが低下するおそれがあります。また、マージに問題がある場合 (たとえばディスク容量不足など) 、元の 300 の設定よりも気付くのが遅くなります。
prefer_fetch_merged_part_size_threshold
prefer_fetch_merged_part_time_thresholdを超える場合は、ローカルでマージを行う代わりに、
レプリカからマージ済みパーツを取得することを優先します。これは、非常に長時間かかる
マージを高速化するためです。
設定可能な値:
- 任意の正の整数。
prefer_fetch_merged_part_time_threshold
prefer_fetch_merged_part_size_threshold を上回る場合は、ローカルでマージを実行する代わりに、
レプリカからマージ済みパーツを取得することを優先します。これは、非常に長時間かかる
マージを高速化するためです。
設定可能な値:
- 任意の正の整数。
prewarm_mark_cache
prewarm_primary_key_cache
プライマリキーの圧縮ブロックサイズ。圧縮対象ブロックの実際のサイズです。
primary_key_compression_codec
primary_key_lazy_load
primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columns
propagate_types_serialization_versions_to_nested_types
ratio_of_defaults_for_sparse_serialization
ratio_of_defaults_for_sparse_serialization
設定を 1.0 未満にします。値が 1.0 以上の場合、
カラムは常に通常の完全なシリアライゼーションで書き込まれます。
設定可能な値:
- スパースシリアライゼーションを有効にするには、
0から1の間の Float - スパースシリアライゼーションを使用しない場合は
1.0(またはそれ以上)
s カラムは 95% の
行で空文字列になっていることに注目してください。my_regular_table ではスパースシリアライゼーションを使用せず、
my_sparse_table では
ratio_of_defaults_for_sparse_serialization を
0.95 に設定しています:
my_sparse_table の s カラムが、ディスク上で使用するストレージ容量を抑えられていることに注目してください。
system.parts_columns テーブルの serialization_kind カラムを見ると、
そのカラムでスパースエンコーディングが使われているかどうかを確認できます。
s のどの部分がスパースシリアライゼーションで格納されたかを確認できます。
reduce_blocking_parts_sleep_ms
refresh_parts_interval
refresh_statistics_interval
remote_fs_execute_merges_on_single_replica_time_threshold
ゼロコピー レプリケーションは本番環境で使用できる状態ではありません。
ClickHouse バージョン 22.8 以降では、ゼロコピー レプリケーションは
デフォルトで無効になっています。この機能を本番環境で使用することは推奨されません。
- 任意の正の整数。
remote_fs_zero_copy_path_compatible_mode
remote_fs_zero_copy_zookeeper_path
remove_empty_parts
remove_rolled_back_parts_immediately
remove_unused_patch_parts
replace_long_file_name_to_hash
replicated_can_become_leader
true の場合、このノード上のレプリケートテーブルのレプリカは
リーダーになることを試みます。
設定可能な値:
truefalse
replicated_deduplication_window
- 任意の正の整数。
- 0 (重複排除を無効化)
Insert コマンドは 1 つ以上のブロック (パーツ) を作成します。挿入の重複排除
では、レプリケートテーブルへの書き込み時に、ClickHouse は作成された
パーツのハッシュサムを ClickHouse Keeper に書き込みます。ハッシュサムが
保存されるのは、直近の replicated_deduplication_window ブロックのみです。最も古い
ハッシュサムは ClickHouse Keeper から削除されます。
replicated_deduplication_window に大きな値を設定すると、比較対象の
エントリが増えるため、Inserts は遅くなります。ハッシュサムは、
フィールド名と型の構成、および挿入された
パーツのデータ (バイトストリーム) から計算されます。
replicated_deduplication_window_for_async_inserts
- 任意の正の整数。
- 0 (
async_insertsの重複排除を無効化)
replicated_deduplication_window_for_async_inserts ブロックのみです。最も古いハッシュサムは
ClickHouse Keeper から削除されます。
replicated_deduplication_window_for_async_inserts の値が大きいほど、
比較するエントリ数が増えるため、Async Inserts は遅くなります。
ハッシュサムは、フィールド名と型の構成、および挿入データ
(バイトストリーム) から計算されます。
replicated_deduplication_window_seconds
- 任意の正の整数。
replicated_deduplication_window_seconds は、挿入の重複排除のためにブロックのハッシュサムを
どれくらいの期間保持するかを指定します。
replicated_deduplication_window_seconds より古いハッシュサムは、
replicated_deduplication_window 未満であっても
ClickHouse Keeper から削除されます。
この時間は実時間ではなく、最新のレコードの時刻を基準に計算されます。
レコードが 1 件しかない場合は、永久に保存されます。
replicated_deduplication_window_seconds_for_async_inserts
- 任意の正の整数。
replicated_deduplication_window_seconds_for_async_inserts は、
非同期 INSERT の重複排除のためにブロックのハッシュサムを
どれだけの期間保存するかを指定します。replicated_deduplication_window_seconds_for_async_inserts より古い
ハッシュサムは、
replicated_deduplication_window_for_async_inserts 未満であっても
ClickHouse Keeper から削除されます。
この時間は、実時間ではなく、最新のレコードの時刻を基準にします。
レコードが 1 件しかない場合は、永久に保存されます。
replicated_fetches_http_connection_timeout
replicated_fetches_http_receive_timeout
replicated_fetches_http_send_timeout
replicated_fetches_min_part_level
replicated_fetches_min_part_level_timeout_seconds
replicated_max_mutations_in_one_entry
replicated_max_parallel_fetches
replicated_max_parallel_fetches_for_host
replicated_max_parallel_fetches_for_table
replicated_max_parallel_sends
replicated_max_parallel_sends_for_table
replicated_max_ratio_of_wrong_parts
- Float, 0.0 - 1.0
search_orphaned_parts_disks
- any - 範囲は制限されません。
- local - 範囲はローカルディスクに制限されます。
- none - 範囲は空になり、検索は行われません
serialization_info_version
serialization.json の書き込み時に使用されるシリアル化情報のバージョンです。
この設定は、クラスターのアップグレード中に互換性を保つために必要です。
設定可能な値:
basic- 基本フォーマット。with_types- 追加のtypes_serialization_versionsフィールドを含むフォーマットで、型ごとのシリアル化バージョンを指定できます。 これにより、string_serialization_versionなどの設定が有効になります。
basic に設定して、新しいサーバーが
古いサーバーと互換性のある
データパーツを生成するようにします。アップグレード完了後は、
型ごとのシリアライゼーションバージョンを有効にするため、WITH_TYPES に切り替えます。
有効な場合 (デフォルト) 、共通のプレフィックスを持つドット区切りの名前の Array カラム (例: n.a と n.b) は、
Nested 構造の一部として扱われます。つまり、ディスク上の 1 つのオフセットファイル (例: n.size0) を共有し、
INSERT 時にはそれらの配列サイズが等しいことが検証されます。
無効な場合、各 Array カラムはそれぞれ独立したオフセットファイルを持ち、ドット区切りの名前に特別な
意味はなくなります。また、同じプレフィックスを持つドット区切りの Array カラムと
スカラー カラムを共存させることもできます
(例: n UInt32 と n.a Array(String)) 。この設定はテーブル作成後に変更できません。
協調マージタスクの再スケジューリングを有効にします。これは、
shared_merge_tree_enable_coordinated_merges=0 の場合でも有用です。マージコーディネーターの
統計情報が蓄積され、コールドスタートの助けになるためです。
ZooKeeper で、レプリカごとの /metadata ノードおよび /columns ノードを作成できるようにします。
ClickHouse Cloud でのみ利用できます
shared merge tree のマージおよびミューテーションの割り当てを停止します。ClickHouse
Cloud でのみ使用できます
パーツを持たないパーティションが Keeper に保持される秒数。
空のパーティションに対応する Keeper エントリのクリーンアップを有効にします。
協調マージ戦略を有効にします
仮想パーツへの属性の書き込みと、Keeper 内でのブロックのコミットを有効にします
古いパーツのチェックを有効にします。ClickHouse Cloud でのみ利用できます
shared merge tree において、ZooKeeper の
watch によるトリガーなしでパーツを更新する間隔 (秒) 。ClickHouse Cloud でのみ使用できます
パーツ更新時の初期バックオフ。ClickHouse Cloud でのみ利用できます
サーバー間 HTTP 接続のタイムアウト。ClickHouse Cloud でのみ利用できます
サーバー間の HTTP 通信におけるタイムアウトです。ClickHouse
Cloud
でのみ利用できます。
shared_merge_tree_leader_update_period に 0 〜 x 秒の範囲で一様分布する値を加え、
サンダリングハードの発生を防ぎます。ClickHouse Cloud
でのみ利用できます
パーツ更新におけるリーダーシップを再確認するまでの最大間隔です。ClickHouse Cloudでのみ利用できます
リーダーが 1 回の HTTP リクエストで削除対象として確認を試みる古いパーツの最大数です。ClickHouse Cloud でのみ利用できます。
パーツ更新時の最大バックオフ。ClickHouse Cloud でのみ利用できます
パーツ更新リーダーの最大数。ClickHouse Cloud でのみ利用できます
パーツ更新リーダーの上限数。ClickHouse Cloud でのみ利用できます
パーツ削除 (キラースレッド) に参加するレプリカの最大数。ClickHouse Cloud でのみ
利用できます
競合の可能性がある マージ の割り当てを試行するレプリカの最大数です (マージ の割り当て時に不要な競合を避けるため) 。0 は無効を意味します。ClickHouse Cloud でのみ利用できます
SMT で許容される破損パーツの最大数。これを超えると、自動デタッチは拒否されます。
SMT の破損パーツ全体の最大サイズ。この値を超えると自動 デタッチ を禁止します。
insert の再試行時に誤った actions を防ぐために、insert のメモ化 ID を保持する期間です。
ClickHouse Cloud でのみ利用できます
マージコーディネーター選出スレッドの実行間隔
マージコーディネータースレッドの遅延時間を調整する係数
マージコーディネーターが最新のメタデータを取得するためにZooKeeperと同期する間隔
マージコーディネーターが一度に MergerMutator に要求できるマージ数
マージコーディネータースレッドの実行間隔の最大値
マージコーディネーターが準備し、各ワーカーに分配するマージエントリの数。
auto に設定すると、単一のレプリカで許可されるマージタスクの最大数に、アクティブなレプリカ数を掛けた値になります。
マージコーディネータースレッドの実行間隔の最小時間
マージワーカースレッドが、即時アクションの後に自身の状態を更新する必要がある場合に使用するタイムアウト
マージワーカースレッドの実行間隔
古くなったパーツのクリーンアップ時に、同じランデブーハッシュグループに含まれるレプリカ数。
ClickHouse Cloud でのみ利用できます。
<candidate partitions for mutations only (partitions that cannot be merged)>/<candidate partitions for mutations> の比率がこの設定値を上回る場合、マージ/ミューテーション を選択するタスクで マージ predicate を再読み込みします。ClickHouse Cloud でのみ利用できます
一度にスケジュールする fetch パーツのメタデータ取得ジョブ数。ClickHouse Cloud でのみ利用できます。
ローカルでマージされたパーツを含む新たなマージを開始せずに、そのパーツを保持しておく時間です。
これにより、他のレプリカがそのパーツを取得して、このマージを開始するための猶予が生まれます。
ClickHouse Cloud でのみ利用できます。
ローカルでマージした直後に次のマージの割り当てを延期するための、パーツの最小サイズ (行数) 。ClickHouse Cloud でのみ使用できます。
このパートを含む新たなマージを開始せずに、ローカルでマージ済みのパートを保持する時間です。
これにより、他のレプリカがそのパートを取得して、このマージを開始する猶予が生まれます。
ClickHouse Cloud でのみ利用できます
可能な場合は、リーダー から仮想パーツを読み取ります。ClickHouse
Cloudでのみ利用できます
レプリカがバックグラウンドでレプリカセットの更新を試みる頻度です。次回の実行は、
[0, value] 秒の範囲で一様にジッターが加えられます。例外: value = 0 の場合はこの仕様に従いません。
実装では最小 200 ms が適用されるため、次回の実行には [0, 200] ms の範囲でジッターが加えられます。
有効にすると、すべてのレプリカは、プライマリキーやパーティション情報などのパーツのメモリ内データを、すでに保持している他のレプリカから取得しようとします。
レプリカがバックグラウンドスケジュールに従って自身のフラグを再読み込みする試行頻度。
他のレプリカ上のメモリ内
cache から FS cache ヒントを要求するようにします。ClickHouse Cloud
でのみ利用できます
古くなったパーツに compact フォーマットを使用します。これにより Keeper への負荷が軽減され、
古くなったパーツの処理が改善されます。ClickHouse Cloud でのみ利用できます
有効にすると、パーツが多すぎるカウンターはローカルレプリカの状態ではなく、Keeper 内の共有データを参照します。ClickHouse Cloud でのみ利用できます
有効にすると、SharedMergeTree はサーバーレベルのプールされた ZooKeeper セッションのいずれか 1 つを使用します。
1つのバッチにまとめるパーティション検出の件数
simultaneous_parts_removal_limit
simultaneous_parts_removal_limit 個のパーツを削除しようとします。
simultaneous_parts_removal_limit を 0 に設定すると、上限なしを意味します。
sleep_before_commit_local_part_in_replicated_table_ms
sleep_before_loading_outdated_parts_ms
storage_policy
string_serialization_version
String カラムのシリアライゼーションフォーマットを制御します。
この設定は、serialization_info_version が “with_types” に設定されている場合にのみ有効です。
with_size_stream に設定すると、トップレベルの String カラムは、文字列長を保持する別個の
.size サブカラムにシリアライズされ、インラインでは保持されません。これにより実際の .size
サブカラムを利用できるようになり、圧縮効率が向上する場合があります。
ネストされた String 型 (例: Nullable、LowCardinality、Array、Map の内部)
には影響しませんが、Tuple 内に現れる場合は例外です。
設定可能な値:
single_stream— サイズをインラインで保持する標準のシリアライゼーションフォーマットを使用します。with_size_stream— トップレベルのStringカラムに対して、独立したサイズストリームを使用します。
table_disk
table_readonly
temporary_directories_lifetime
try_fetch_recompressed_part_timeout
- 任意の正の整数。
ttl_only_drop_parts
TTL 設定に従って期限切れになった場合に、MergeTree テーブルでデータパーツ全体を削除するかどうかを制御します。
ttl_only_drop_parts が無効な場合 (デフォルト) は、TTL 設定に基づいて期限切れになった行のみが削除されます。
ttl_only_drop_parts が有効な場合は、各パーツ内のすべての行が TTL 設定に従って期限切れになっていると、そのパーツ全体が削除されます。
use_adaptive_write_buffer_for_dynamic_subcolumns
use_async_block_ids_cache
true の場合、非同期 INSERT の hash sums を cache します。
設定可能な値:
truefalse
use_compact_variant_discriminators_serialization
use_const_adaptive_granularity
use_metadata_cache
use_minimalistic_checksums_in_zookeeper
use_minimalistic_part_header_in_zookeeper
use_primary_key_cache
vertical_merge_algorithm_min_bytes_to_activate
vertical_merge_algorithm_min_columns_to_activate
vertical_merge_algorithm_min_rows_to_activate
vertical_merge_optimize_lightweight_delete
vertical_merge_optimize_ttl_delete
vertical_merge_remote_filesystem_prefetch
wait_for_unique_parts_send_before_shutdown_ms
write_ahead_log_bytes_to_fsync
write_ahead_log_interval_ms_to_fsync
write_ahead_log_max_bytes
write_final_mark
write_marks_for_substreams_in_compact_parts
t Tuple(a String, b UInt32, c Array(Nullable(UInt32))) は次のサブストリームにシリアライズされます。
t.aはタプル要素aの String データt.bはタプル要素bの UInt32 データt.c.size0はタプル要素cの配列サイズt.c.nullはタプル要素cのネストされた配列要素の NULL マップt.cはタプル要素cのネストされた配列要素の UInt32 データ
t.c を読み取りたい場合、
サブストリーム t.c.size0、t.c.null、t.c のデータだけを読み取り、
サブストリーム t.a と t.b のデータは読み取りません。この設定が無効な場合は、
最上位カラム t に対してのみマークを書き込むため、一部のサブストリームのデータだけが必要な場合でも、granule から常にカラム全体のカラムデータを読み取ることになります。
zero_copy_concurrent_part_removal_max_postpone_ratio
zero_copy_concurrent_part_removal_max_split_times
zero_copy_merge_mutation_min_parts_size_sleep_before_lock
zero_copy_merge_mutation_min_parts_size_sleep_no_scale_before_lock
zookeeper_session_expiration_check_period
- 任意の正の整数。