M(SettingUInt64,merge_max_block_size,DEFAULT_MERGE_BLOCK_SIZE,"How many rows in blocks should be formed for merge operations.",0) \
M(SettingUInt64,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(SettingUInt64,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(SettingUInt64,max_replicated_merges_in_queue,16,"How many tasks of merging and mutating parts are allowed simultaneously in ReplicatedMergeTree queue.",0) \
M(SettingUInt64,max_replicated_mutations_in_queue,8,"How many tasks of mutating parts are allowed simultaneously in ReplicatedMergeTree queue.",0) \
M(SettingUInt64,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(SettingUInt64,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(SettingSeconds,old_parts_lifetime,8*60,"How many seconds to keep obsolete parts.",0) \
M(SettingSeconds,temporary_directories_lifetime,86400,"How many seconds to keep tmp_-directories.",0) \
M(SettingSeconds,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(SettingUInt64,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(SettingUInt64,parts_to_throw_insert,300,"If more than this number active parts in single partition, throw 'Too many parts ...' exception.",0) \
M(SettingUInt64,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(SettingUInt64,max_parts_in_total,100000,"If more than this number active parts in all partitions in total, throw 'Too many parts ...' exception.",0) \
M(SettingUInt64,replicated_deduplication_window,100,"How many last blocks of hashes should be kept in ZooKeeper (old blocks will be deleted).",0) \
M(SettingUInt64,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(SettingUInt64,max_replicated_logs_to_keep,10000,"How many records may be in log, if there is inactive replica.",0) \
M(SettingUInt64,min_replicated_logs_to_keep,100,"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(SettingSeconds,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(SettingUInt64,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(SettingUInt64,max_suspicious_broken_parts,10,"Max broken parts, if more - deny automatic deletion.",0) \
M(SettingUInt64,max_files_to_modify_in_alter_columns,75,"Not apply ALTER if number of files for modification(deletion, addition) more than this.",0) \
M(SettingUInt64,max_files_to_remove_in_alter_columns,50,"Not apply ALTER, if number of files for deletion more than this.",0) \
M(SettingFloat,replicated_max_ratio_of_wrong_parts,0.5,"If ratio of wrong parts to total number of parts is less than this - allow to start.",0) \
M(SettingUInt64,replicated_max_parallel_fetches_for_table,0,"Limit parallel fetches for one table.",0) \
M(SettingUInt64,replicated_max_parallel_fetches_for_host,DEFAULT_COUNT_OF_HTTP_CONNECTIONS_PER_ENDPOINT,"Limit parallel fetches from endpoint (actually pool size).",0) \
M(SettingUInt64,check_delay_period,60,"Period to check replication delay and compare with other replicas.",0) \
M(SettingUInt64,cleanup_delay_period,30,"Period to clean old queue logs, blocks hashes and parts.",0) \
M(SettingUInt64,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(SettingUInt64,min_relative_delay_to_yield_leadership,120,"Minimal delay from other replicas to yield leadership. Here and further 0 means unlimited.",0) \
M(SettingUInt64,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(SettingUInt64,min_absolute_delay_to_close,0,"Minimal absolute delay to close, stop serving requests and not return Ok during status check.",0) \
M(SettingUInt64,enable_vertical_merge_algorithm,1,"Enable usage of Vertical merge algorithm.",0) \
M(SettingUInt64,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(SettingUInt64,vertical_merge_algorithm_min_columns_to_activate,11,"Minimal amount of non-PK columns to activate Vertical merge algorithm.",0) \
M(SettingBool,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(SettingBool,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(SettingBool,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(SettingMaxThreads,max_part_loading_threads,0,"The number of threads to load data parts at startup.",0) \
M(SettingMaxThreads,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(SettingUInt64,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(SettingString,storage_policy,"default","Name of storage disk policy",0)