M(UInt64,min_compress_block_size,0,"When granule is written, compress the data in buffer if the size of pending uncompressed data is larger or equal than the specified threshold. If this setting is not set, the corresponding global setting is used.",0) \
M(UInt64,max_compress_block_size,0,"Compress the pending uncompressed data in buffer if its size is larger or equal than the specified threshold. Block of data will be compressed even if the current granule is not finished. If this setting is not set, the corresponding global setting is used.",0) \
M(UInt64,min_rows_for_wide_part,0,"Minimal number of rows to create part in wide format instead of compact",0) \
M(UInt64,min_bytes_for_compact_part,0,"Experimental. Minimal uncompressed size in bytes to create part in compact format instead of saving it in RAM",0) \
M(UInt64,min_rows_for_compact_part,0,"Experimental. Minimal number of rows to create part in compact format instead of saving it in RAM",0) \
M(Bool,in_memory_parts_enable_wal,true,"Whether to write blocks in Native format to write-ahead-log before creation in-memory part",0) \
M(UInt64,write_ahead_log_max_bytes,1024*1024*1024,"Rotate WAL, if it exceeds that amount of bytes",0) \
M(UInt64,merge_max_block_size,DEFAULT_MERGE_BLOCK_SIZE,"How many rows in blocks should be formed for merge operations.",0) \
M(UInt64,max_bytes_to_merge_at_max_space_in_pool,150ULL*1024*1024*1024,"Maximum in total size of parts to merge, when there are maximum free threads in background pool (or entries in replication queue).",0) \
M(UInt64,max_bytes_to_merge_at_min_space_in_pool,1024*1024,"Maximum in total size of parts to merge, when there are minimum free threads in background pool (or entries in replication queue).",0) \
M(UInt64,max_replicated_merges_in_queue,16,"How many tasks of merging and mutating parts are allowed simultaneously in ReplicatedMergeTree queue.",0) \
M(UInt64,max_replicated_mutations_in_queue,8,"How many tasks of mutating parts are allowed simultaneously in ReplicatedMergeTree queue.",0) \
M(UInt64,max_replicated_merges_with_ttl_in_queue,1,"How many tasks of merging parts with TTL are allowed simultaneously in ReplicatedMergeTree queue.",0) \
M(UInt64,number_of_free_entries_in_pool_to_lower_max_size_of_merge,8,"When there is less than specified number of free entries in pool (or replicated queue), start to lower maximum size of merge to process (or to put in queue). This is to allow small merges to process - not filling the pool with long running merges.",0) \
M(UInt64,number_of_free_entries_in_pool_to_execute_mutation,10,"When there is less than specified number of free entries in pool, do not execute part mutations. This is to leave free threads for regular merges and avoid \"Too many parts\"",0) \
M(UInt64,max_number_of_merges_with_ttl_in_pool,2,"When there is more than specified number of merges with TTL entries in pool, do not assign new merge with TTL. This is to leave free threads for regular merges and avoid \"Too many parts\"",0) \
M(Seconds,old_parts_lifetime,8*60,"How many seconds to keep obsolete parts.",0) \
M(Seconds,temporary_directories_lifetime,86400,"How many seconds to keep tmp_-directories.",0) \
M(Seconds,lock_acquire_timeout_for_background_operations,DBMS_DEFAULT_LOCK_ACQUIRE_TIMEOUT_SEC,"For background operations like merges, mutations etc. How many seconds before failing to acquire table locks.",0) \
M(UInt64,min_rows_to_fsync_after_merge,0,"Minimal number of rows to do fsync for part after merge (0 - disabled)",0) \
M(UInt64,min_compressed_bytes_to_fsync_after_merge,0,"Minimal number of compressed bytes to do fsync for part after merge (0 - disabled)",0) \
M(UInt64,min_compressed_bytes_to_fsync_after_fetch,0,"Minimal number of compressed bytes to do fsync for part after fetch (0 - disabled)",0) \
M(Bool,fsync_after_insert,false,"Do fsync for every inserted part. Significantly decreases performance of inserts, not recommended to use with wide parts.",0) \
M(Bool,fsync_part_directory,false,"Do fsync for part directory after all part operations (writes, renames, etc.).",0) \
M(UInt64,parts_to_delay_insert,150,"If table contains at least that many active parts in single partition, artificially slow down insert into table.",0) \
M(UInt64,parts_to_throw_insert,300,"If more than this number active parts in single partition, throw 'Too many parts ...' exception.",0) \
M(UInt64,max_delay_to_insert,1,"Max delay of inserting data into MergeTree table in seconds, if there are a lot of unmerged parts in single partition.",0) \
M(UInt64,max_parts_in_total,100000,"If more than this number active parts in all partitions in total, throw 'Too many parts ...' exception.",0) \
M(UInt64,replicated_deduplication_window,100,"How many last blocks of hashes should be kept in ZooKeeper (old blocks will be deleted).",0) \
M(UInt64,replicated_deduplication_window_seconds,7*24*60*60/* one week */,"Similar to \"replicated_deduplication_window\", but determines old blocks by their lifetime. Hash of an inserted block will be deleted (and the block will not be deduplicated after) if it outside of one \"window\". You can set very big replicated_deduplication_window to avoid duplicating INSERTs during that period of time.",0) \
M(UInt64,max_replicated_logs_to_keep,1000,"How many records may be in log, if there is inactive replica. Inactive replica becomes lost when when this number exceed.",0) \
M(UInt64,min_replicated_logs_to_keep,10,"Keep about this number of last records in ZooKeeper log, even if they are obsolete. It doesn't affect work of tables: used only to diagnose ZooKeeper log before cleaning.",0) \
M(Seconds,prefer_fetch_merged_part_time_threshold,3600,"If time passed after replication log entry creation exceeds this threshold and sum size of parts is greater than \"prefer_fetch_merged_part_size_threshold\", prefer fetching merged part from replica instead of doing merge locally. To speed up very long merges.",0) \
M(UInt64,prefer_fetch_merged_part_size_threshold,10ULL*1024*1024*1024,"If sum size of parts exceeds this threshold and time passed after replication log entry creation is greater than \"prefer_fetch_merged_part_time_threshold\", prefer fetching merged part from replica instead of doing merge locally. To speed up very long merges.",0) \
M(Seconds,execute_merges_on_single_replica_time_threshold,0,"When greater than zero only a single replica starts the merge immediately, others wait up to that amount of time to download the result instead of doing merges locally. If the chosen replica doesn't finish the merge during that amount of time, fallback to standard behavior happens.",0) \
M(Seconds,try_fetch_recompressed_part_timeout,7200,"Recompression works slow in most cases, so we don't start merge with recompression until this timeout and trying to fetch recompressed part from replica which assigned this merge with recompression.",0) \
M(UInt64,replicated_max_parallel_fetches_for_table,0,"Limit parallel fetches for one table.",0) \
M(UInt64,replicated_max_parallel_fetches_for_host,DEFAULT_COUNT_OF_HTTP_CONNECTIONS_PER_ENDPOINT,"Limit parallel fetches from endpoint (actually pool size).",0) \
M(UInt64,min_relative_delay_to_measure,120,"Calculate relative replica delay only if absolute delay is not less that this value.",0) \
M(UInt64,cleanup_delay_period,30,"Period to clean old queue logs, blocks hashes and parts.",0) \
M(UInt64,cleanup_delay_period_random_add,10,"Add uniformly distributed value from 0 to x seconds to cleanup_delay_period to avoid thundering herd effect and subsequent DoS of ZooKeeper in case of very large number of tables.",0) \
M(UInt64,min_relative_delay_to_close,300,"Minimal delay from other replicas to close, stop serving requests and not return Ok during status check.",0) \
M(UInt64,min_absolute_delay_to_close,0,"Minimal absolute delay to close, stop serving requests and not return Ok during status check.",0) \
M(UInt64,enable_vertical_merge_algorithm,1,"Enable usage of Vertical merge algorithm.",0) \
M(UInt64,vertical_merge_algorithm_min_rows_to_activate,16*DEFAULT_MERGE_BLOCK_SIZE,"Minimal (approximate) sum of rows in merging parts to activate Vertical merge algorithm.",0) \
M(UInt64,vertical_merge_algorithm_min_columns_to_activate,11,"Minimal amount of non-PK columns to activate Vertical merge algorithm.",0) \
M(Bool,compatibility_allow_sampling_expression_not_in_primary_key,false,"Allow to create a table with sampling expression not in primary key. This is needed only to temporarily allow to run the server with wrong tables for backward compatibility.",0) \
M(Bool,use_minimalistic_checksums_in_zookeeper,true,"Use small format (dozens bytes) for part checksums in ZooKeeper instead of ordinary ones (dozens KB). Before enabling check that all replicas support new format.",0) \
M(Bool,use_minimalistic_part_header_in_zookeeper,true,"Store part header (checksums and columns) in a compact format and a single part znode instead of separate znodes (<part>/columns and <part>/checksums). This can dramatically reduce snapshot size in ZooKeeper. Before enabling check that all replicas support new format.",0) \
M(UInt64,finished_mutations_to_keep,100,"How many records about mutations that are done to keep. If zero, then keep all of them.",0) \
M(UInt64,min_merge_bytes_to_use_direct_io,10ULL*1024*1024*1024,"Minimal amount of bytes to enable O_DIRECT in merge (0 - disabled).",0) \
M(UInt64,index_granularity_bytes,10*1024*1024,"Approximate amount of bytes in single granule (0 - disabled).",0) \
M(MaxThreads,max_part_loading_threads,0,"The number of threads to load data parts at startup.",0) \
M(MaxThreads,max_part_removal_threads,0,"The number of threads for concurrent removal of inactive data parts. One is usually enough, but in 'Google Compute Environment SSD Persistent Disks' file removal (unlink) operation is extraordinarily slow and you probably have to increase this number (recommended is up to 16).",0) \
M(UInt64,concurrent_part_removal_threshold,100,"Activate concurrent part removal (see 'max_part_removal_threads') only if the number of inactive data parts is at least this.",0) \
M(String,storage_policy,"default","Name of storage disk policy",0) \
M(Bool,allow_nullable_key,false,"Allow Nullable types as primary keys.",0) \