CodeCommitsIssuesPull requestsActionsInsightsSecurity
9851cd9a261a7756daab9fb81d2e7a765107e7bf

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

docs/en/operations/settings/settings.md

1902lines · modecode

1# Settings {#settings}
2
3## distributed\_product\_mode {#distributed-product-mode}
4
5Changes the behavior of [distributed subqueries](../../sql-reference/operators/in.md).
6
7ClickHouse applies this setting when the query contains the product of distributed tables, i.e. when the query for a distributed table contains a non-GLOBAL subquery for the distributed table.
8
9Restrictions:
10
11- Only applied for IN and JOIN subqueries.
12- Only if the FROM section uses a distributed table containing more than one shard.
13- If the subquery concerns a distributed table containing more than one shard.
14- Not used for a table-valued [remote](../../sql-reference/table-functions/remote.md) function.
15
16Possible values:
17
18- `deny` — Default value. Prohibits using these types of subqueries (returns the “Double-distributed in/JOIN subqueries is denied” exception).
19- `local` — Replaces the database and table in the subquery with local ones for the destination server (shard), leaving the normal `IN`/`JOIN.`
20- `global` — Replaces the `IN`/`JOIN` query with `GLOBAL IN`/`GLOBAL JOIN.`
21- `allow` — Allows the use of these types of subqueries.
22
23## enable\_optimize\_predicate\_expression {#enable-optimize-predicate-expression}
24
25Turns on predicate pushdown in `SELECT` queries.
26
27Predicate pushdown may significantly reduce network traffic for distributed queries.
28
29Possible values:
30
31- 0 — Disabled.
32- 1 — Enabled.
33
34Default value: 1.
35
36Usage
37
38Consider the following queries:
39
401. `SELECT count() FROM test_table WHERE date = '2018-10-10'`
412. `SELECT count() FROM (SELECT * FROM test_table) WHERE date = '2018-10-10'`
42
43If `enable_optimize_predicate_expression = 1`, then the execution time of these queries is equal because ClickHouse applies `WHERE` to the subquery when processing it.
44
45If `enable_optimize_predicate_expression = 0`, then the execution time of the second query is much longer, because the `WHERE` clause applies to all the data after the subquery finishes.
46
47## fallback\_to\_stale\_replicas\_for\_distributed\_queries {#settings-fallback_to_stale_replicas_for_distributed_queries}
48
49Forces a query to an out-of-date replica if updated data is not available. See [Replication](../../engines/table-engines/mergetree-family/replication.md).
50
51ClickHouse selects the most relevant from the outdated replicas of the table.
52
53Used when performing `SELECT` from a distributed table that points to replicated tables.
54
55By default, 1 (enabled).
56
57## force\_index\_by\_date {#settings-force_index_by_date}
58
59Disables query execution if the index can’t be used by date.
60
61Works with tables in the MergeTree family.
62
63If `force_index_by_date=1`, ClickHouse checks whether the query has a date key condition that can be used for restricting data ranges. If there is no suitable condition, it throws an exception. However, it does not check whether the condition reduces the amount of data to read. For example, the condition `Date != ' 2000-01-01 '` is acceptable even when it matches all the data in the table (i.e., running the query requires a full scan). For more information about ranges of data in MergeTree tables, see [MergeTree](../../engines/table-engines/mergetree-family/mergetree.md).
64
65## force\_primary\_key {#force-primary-key}
66
67Disables query execution if indexing by the primary key is not possible.
68
69Works with tables in the MergeTree family.
70
71If `force_primary_key=1`, ClickHouse checks to see if the query has a primary key condition that can be used for restricting data ranges. If there is no suitable condition, it throws an exception. However, it does not check whether the condition reduces the amount of data to read. For more information about data ranges in MergeTree tables, see [MergeTree](../../engines/table-engines/mergetree-family/mergetree.md).
72
73## format\_schema {#format-schema}
74
75This parameter is useful when you are using formats that require a schema definition, such as [Cap’n Proto](https://capnproto.org/) or [Protobuf](https://developers.google.com/protocol-buffers/). The value depends on the format.
76
77## fsync\_metadata {#fsync-metadata}
78
79Enables or disables [fsync](http://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html) when writing `.sql` files. Enabled by default.
80
81It makes sense to disable it if the server has millions of tiny tables that are constantly being created and destroyed.
82
83## enable\_http\_compression {#settings-enable_http_compression}
84
85Enables or disables data compression in the response to an HTTP request.
86
87For more information, read the [HTTP interface description](../../interfaces/http.md).
88
89Possible values:
90
91- 0 — Disabled.
92- 1 — Enabled.
93
94Default value: 0.
95
96## http\_zlib\_compression\_level {#settings-http_zlib_compression_level}
97
98Sets the level of data compression in the response to an HTTP request if [enable\_http\_compression = 1](#settings-enable_http_compression).
99
100Possible values: Numbers from 1 to 9.
101
102Default value: 3.
103
104## http\_native\_compression\_disable\_checksumming\_on\_decompress {#settings-http_native_compression_disable_checksumming_on_decompress}
105
106Enables or disables checksum verification when decompressing the HTTP POST data from the client. Used only for ClickHouse native compression format (not used with `gzip` or `deflate`).
107
108For more information, read the [HTTP interface description](../../interfaces/http.md).
109
110Possible values:
111
112- 0 — Disabled.
113- 1 — Enabled.
114
115Default value: 0.
116
117## send\_progress\_in\_http\_headers {#settings-send_progress_in_http_headers}
118
119Enables or disables `X-ClickHouse-Progress` HTTP response headers in `clickhouse-server` responses.
120
121For more information, read the [HTTP interface description](../../interfaces/http.md).
122
123Possible values:
124
125- 0 — Disabled.
126- 1 — Enabled.
127
128Default value: 0.
129
130## max\_http\_get\_redirects {#setting-max_http_get_redirects}
131
132Limits the maximum number of HTTP GET redirect hops for [URL](../../engines/table-engines/special/url.md)-engine tables. The setting applies to both types of tables: those created by the [CREATE TABLE](../../sql-reference/statements/create/table.md) query and by the [url](../../sql-reference/table-functions/url.md) table function.
133
134Possible values:
135
136- Any positive integer number of hops.
137- 0 — No hops allowed.
138
139Default value: 0.
140
141## input\_format\_allow\_errors\_num {#settings-input_format_allow_errors_num}
142
143Sets the maximum number of acceptable errors when reading from text formats (CSV, TSV, etc.).
144
145The default value is 0.
146
147Always pair it with `input_format_allow_errors_ratio`.
148
149If an error occurred while reading rows but the error counter is still less than `input_format_allow_errors_num`, ClickHouse ignores the row and moves on to the next one.
150
151If both `input_format_allow_errors_num` and `input_format_allow_errors_ratio` are exceeded, ClickHouse throws an exception.
152
153## input\_format\_allow\_errors\_ratio {#settings-input_format_allow_errors_ratio}
154
155Sets the maximum percentage of errors allowed when reading from text formats (CSV, TSV, etc.).
156The percentage of errors is set as a floating-point number between 0 and 1.
157
158The default value is 0.
159
160Always pair it with `input_format_allow_errors_num`.
161
162If an error occurred while reading rows but the error counter is still less than `input_format_allow_errors_ratio`, ClickHouse ignores the row and moves on to the next one.
163
164If both `input_format_allow_errors_num` and `input_format_allow_errors_ratio` are exceeded, ClickHouse throws an exception.
165
166## input\_format\_values\_interpret\_expressions {#settings-input_format_values_interpret_expressions}
167
168Enables or disables the full SQL parser if the fast stream parser can’t parse the data. This setting is used only for the [Values](../../interfaces/formats.md#data-format-values) format at the data insertion. For more information about syntax parsing, see the [Syntax](../../sql-reference/syntax.md) section.
169
170Possible values:
171
172- 0 — Disabled.
173
174 In this case, you must provide formatted data. See the [Formats](../../interfaces/formats.md) section.
175
176- 1 — Enabled.
177
178 In this case, you can use an SQL expression as a value, but data insertion is much slower this way. If you insert only formatted data, then ClickHouse behaves as if the setting value is 0.
179
180Default value: 1.
181
182Example of Use
183
184Insert the [DateTime](../../sql-reference/data-types/datetime.md) type value with the different settings.
185
186``` sql
187SET input_format_values_interpret_expressions = 0;
188INSERT INTO datetime_t VALUES (now())
189```
190
191``` text
192Exception on client:
193Code: 27. DB::Exception: Cannot parse input: expected ) before: now()): (at row 1)
194```
195
196``` sql
197SET input_format_values_interpret_expressions = 1;
198INSERT INTO datetime_t VALUES (now())
199```
200
201``` text
202Ok.
203```
204
205The last query is equivalent to the following:
206
207``` sql
208SET input_format_values_interpret_expressions = 0;
209INSERT INTO datetime_t SELECT now()
210```
211
212``` text
213Ok.
214```
215
216## input\_format\_values\_deduce\_templates\_of\_expressions {#settings-input_format_values_deduce_templates_of_expressions}
217
218Enables or disables template deduction for SQL expressions in [Values](../../interfaces/formats.md#data-format-values) format. It allows parsing and interpreting expressions in `Values` much faster if expressions in consecutive rows have the same structure. ClickHouse tries to deduce template of an expression, parse the following rows using this template and evaluate the expression on a batch of successfully parsed rows.
219
220Possible values:
221
222- 0 — Disabled.
223- 1 — Enabled.
224
225Default value: 1.
226
227For the following query:
228
229``` sql
230INSERT INTO test VALUES (lower('Hello')), (lower('world')), (lower('INSERT')), (upper('Values')), ...
231```
232
233- If `input_format_values_interpret_expressions=1` and `format_values_deduce_templates_of_expressions=0`, expressions are interpreted separately for each row (this is very slow for large number of rows).
234- If `input_format_values_interpret_expressions=0` and `format_values_deduce_templates_of_expressions=1`, expressions in the first, second and third rows are parsed using template `lower(String)` and interpreted together, expression in the forth row is parsed with another template (`upper(String)`).
235- If `input_format_values_interpret_expressions=1` and `format_values_deduce_templates_of_expressions=1`, the same as in previous case, but also allows fallback to interpreting expressions separately if it’s not possible to deduce template.
236
237## input\_format\_values\_accurate\_types\_of\_literals {#settings-input-format-values-accurate-types-of-literals}
238
239This setting is used only when `input_format_values_deduce_templates_of_expressions = 1`. It can happen, that expressions for some column have the same structure, but contain numeric literals of different types, e.g.
240
241``` sql
242(..., abs(0), ...), -- UInt64 literal
243(..., abs(3.141592654), ...), -- Float64 literal
244(..., abs(-1), ...), -- Int64 literal
245```
246
247Possible values:
248
249- 0 — Disabled.
250
251 In this case, ClickHouse may use a more general type for some literals (e.g., `Float64` or `Int64` instead of `UInt64` for `42`), but it may cause overflow and precision issues.
252
253- 1 — Enabled.
254
255 In this case, ClickHouse checks the actual type of literal and uses an expression template of the corresponding type. In some cases, it may significantly slow down expression evaluation in `Values`.
256
257Default value: 1.
258
259## input\_format\_defaults\_for\_omitted\_fields {#session_settings-input_format_defaults_for_omitted_fields}
260
261When performing `INSERT` queries, replace omitted input column values with default values of the respective columns. This option only applies to [JSONEachRow](../../interfaces/formats.md#jsoneachrow), [CSV](../../interfaces/formats.md#csv) and [TabSeparated](../../interfaces/formats.md#tabseparated) formats.
262
263!!! note "Note"
264 When this option is enabled, extended table metadata are sent from server to client. It consumes additional computing resources on the server and can reduce performance.
265
266Possible values:
267
268- 0 — Disabled.
269- 1 — Enabled.
270
271Default value: 1.
272
273## input\_format\_tsv\_empty\_as\_default {#settings-input-format-tsv-empty-as-default}
274
275When enabled, replace empty input fields in TSV with default values. For complex default expressions `input_format_defaults_for_omitted_fields` must be enabled too.
276
277Disabled by default.
278
279## input\_format\_null\_as\_default {#settings-input-format-null-as-default}
280
281Enables or disables using default values if input data contain `NULL`, but data type of the corresponding column in not `Nullable(T)` (for text input formats).
282
283## input\_format\_skip\_unknown\_fields {#settings-input-format-skip-unknown-fields}
284
285Enables or disables skipping insertion of extra data.
286
287When writing data, ClickHouse throws an exception if input data contain columns that do not exist in the target table. If skipping is enabled, ClickHouse doesn’t insert extra data and doesn’t throw an exception.
288
289Supported formats:
290
291- [JSONEachRow](../../interfaces/formats.md#jsoneachrow)
292- [CSVWithNames](../../interfaces/formats.md#csvwithnames)
293- [TabSeparatedWithNames](../../interfaces/formats.md#tabseparatedwithnames)
294- [TSKV](../../interfaces/formats.md#tskv)
295
296Possible values:
297
298- 0 — Disabled.
299- 1 — Enabled.
300
301Default value: 0.
302
303## input\_format\_import\_nested\_json {#settings-input_format_import_nested_json}
304
305Enables or disables the insertion of JSON data with nested objects.
306
307Supported formats:
308
309- [JSONEachRow](../../interfaces/formats.md#jsoneachrow)
310
311Possible values:
312
313- 0 — Disabled.
314- 1 — Enabled.
315
316Default value: 0.
317
318See also:
319
320- [Usage of Nested Structures](../../interfaces/formats.md#jsoneachrow-nested) with the `JSONEachRow` format.
321
322## input\_format\_with\_names\_use\_header {#settings-input-format-with-names-use-header}
323
324Enables or disables checking the column order when inserting data.
325
326To improve insert performance, we recommend disabling this check if you are sure that the column order of the input data is the same as in the target table.
327
328Supported formats:
329
330- [CSVWithNames](../../interfaces/formats.md#csvwithnames)
331- [TabSeparatedWithNames](../../interfaces/formats.md#tabseparatedwithnames)
332
333Possible values:
334
335- 0 — Disabled.
336- 1 — Enabled.
337
338Default value: 1.
339
340## date\_time\_input\_format {#settings-date_time_input_format}
341
342Allows choosing a parser of the text representation of date and time.
343
344The setting doesn’t apply to [date and time functions](../../sql-reference/functions/date-time-functions.md).
345
346Possible values:
347
348- `'best_effort'` — Enables extended parsing.
349
350 ClickHouse can parse the basic `YYYY-MM-DD HH:MM:SS` format and all [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date and time formats. For example, `'2018-06-08T01:02:03.000Z'`.
351
352- `'basic'` — Use basic parser.
353
354 ClickHouse can parse only the basic `YYYY-MM-DD HH:MM:SS` format. For example, `'2019-08-20 10:18:56'`.
355
356Default value: `'basic'`.
357
358See also:
359
360- [DateTime data type.](../../sql-reference/data-types/datetime.md)
361- [Functions for working with dates and times.](../../sql-reference/functions/date-time-functions.md)
362
363## join\_default\_strictness {#settings-join_default_strictness}
364
365Sets default strictness for [JOIN clauses](../../sql-reference/statements/select/join.md#select-join).
366
367Possible values:
368
369- `ALL` — If the right table has several matching rows, ClickHouse creates a [Cartesian product](https://en.wikipedia.org/wiki/Cartesian_product) from matching rows. This is the normal `JOIN` behaviour from standard SQL.
370- `ANY` — If the right table has several matching rows, only the first one found is joined. If the right table has only one matching row, the results of `ANY` and `ALL` are the same.
371- `ASOF` — For joining sequences with an uncertain match.
372- `Empty string` — If `ALL` or `ANY` is not specified in the query, ClickHouse throws an exception.
373
374Default value: `ALL`.
375
376## join\_any\_take\_last\_row {#settings-join_any_take_last_row}
377
378Changes behaviour of join operations with `ANY` strictness.
379
380!!! warning "Attention"
381 This setting applies only for `JOIN` operations with [Join](../../engines/table-engines/special/join.md) engine tables.
382
383Possible values:
384
385- 0 — If the right table has more than one matching row, only the first one found is joined.
386- 1 — If the right table has more than one matching row, only the last one found is joined.
387
388Default value: 0.
389
390See also:
391
392- [JOIN clause](../../sql-reference/statements/select/join.md#select-join)
393- [Join table engine](../../engines/table-engines/special/join.md)
394- [join\_default\_strictness](#settings-join_default_strictness)
395
396## join\_use\_nulls {#join_use_nulls}
397
398Sets the type of [JOIN](../../sql-reference/statements/select/join.md) behavior. When merging tables, empty cells may appear. ClickHouse fills them differently based on this setting.
399
400Possible values:
401
402- 0 — The empty cells are filled with the default value of the corresponding field type.
403- 1 — `JOIN` behaves the same way as in standard SQL. The type of the corresponding field is converted to [Nullable](../../sql-reference/data-types/nullable.md#data_type-nullable), and empty cells are filled with [NULL](../../sql-reference/syntax.md).
404
405Default value: 0.
406
407## partial\_merge\_join\_optimizations {#partial_merge_join_optimizations}
408
409Disables optimizations in partial merge join algorithm for [JOIN](../../sql-reference/statements/select/join.md) queries.
410
411By default, this setting enables improvements that could lead to wrong results. If you see suspicious results in your queries, disable optimizations by this setting. Optimizations can be different in different versions of the ClickHouse server.
412
413Possible values:
414
415- 0 — Optimizations disabled.
416- 1 — Optimizations enabled.
417
418Default value: 1.
419
420## partial\_merge\_join\_rows\_in\_right\_blocks {#partial_merge_join_rows_in_right_blocks}
421
422Limits sizes of right-hand join data blocks in partial merge join algorithm for [JOIN](../../sql-reference/statements/select/join.md) queries.
423
424ClickHouse server:
425
4261. Splits right-hand join data into blocks with up to the specified number of rows.
4272. Indexes each block with their minimum and maximum values
4283. Unloads prepared blocks to disk if possible.
429
430Possible values:
431
432- Any positive integer. Recommended range of values: \[1000, 100000\].
433
434Default value: 65536.
435
436## join\_on\_disk\_max\_files\_to\_merge {#join_on_disk_max_files_to_merge}
437
438Limits the number of files allowed for parallel sorting in MergeJoin operations when they are executed on disk.
439
440The bigger the value of the setting, the more RAM used and the less disk I/O needed.
441
442Possible values:
443
444- Any positive integer, starting from 2.
445
446Default value: 64.
447
448## any\_join\_distinct\_right\_table\_keys {#any_join_distinct_right_table_keys}
449
450Enables legacy ClickHouse server behavior in `ANY INNER|LEFT JOIN` operations.
451
452!!! note "Warning"
453 Use this setting only for the purpose of backward compatibility if your use cases depend on legacy `JOIN` behavior.
454
455When the legacy behavior enabled:
456
457- Results of `t1 ANY LEFT JOIN t2` and `t2 ANY RIGHT JOIN t1` operations are not equal because ClickHouse uses the logic with many-to-one left-to-right table keys mapping.
458- Results of `ANY INNER JOIN` operations contain all rows from the left table like the `SEMI LEFT JOIN` operations do.
459
460When the legacy behavior disabled:
461
462- Results of `t1 ANY LEFT JOIN t2` and `t2 ANY RIGHT JOIN t1` operations are equal because ClickHouse uses the logic which provides one-to-many keys mapping in `ANY RIGHT JOIN` operations.
463- Results of `ANY INNER JOIN` operations contain one row per key from both left and right tables.
464
465Possible values:
466
467- 0 — Legacy behavior is disabled.
468- 1 — Legacy behavior is enabled.
469
470Default value: 0.
471
472See also:
473
474- [JOIN strictness](../../sql-reference/statements/select/join.md#join-settings)
475
476## temporary\_files\_codec {#temporary_files_codec}
477
478Sets compression codec for temporary files used in sorting and joining operations on disk.
479
480Possible values:
481
482- LZ4 — [LZ4](https://en.wikipedia.org/wiki/LZ4_(compression_algorithm)) compression is applied.
483- NONE — No compression is applied.
484
485Default value: LZ4.
486
487## max\_block\_size {#setting-max_block_size}
488
489In ClickHouse, data is processed by blocks (sets of column parts). The internal processing cycles for a single block are efficient enough, but there are noticeable expenditures on each block. The `max_block_size` setting is a recommendation for what size of the block (in a count of rows) to load from tables. The block size shouldn’t be too small, so that the expenditures on each block are still noticeable, but not too large so that the query with LIMIT that is completed after the first block is processed quickly. The goal is to avoid consuming too much memory when extracting a large number of columns in multiple threads and to preserve at least some cache locality.
490
491Default value: 65,536.
492
493Blocks the size of `max_block_size` are not always loaded from the table. If it is obvious that less data needs to be retrieved, a smaller block is processed.
494
495## preferred\_block\_size\_bytes {#preferred-block-size-bytes}
496
497Used for the same purpose as `max_block_size`, but it sets the recommended block size in bytes by adapting it to the number of rows in the block.
498However, the block size cannot be more than `max_block_size` rows.
499By default: 1,000,000. It only works when reading from MergeTree engines.
500
501## merge\_tree\_min\_rows\_for\_concurrent\_read {#setting-merge-tree-min-rows-for-concurrent-read}
502
503If the number of rows to be read from a file of a [MergeTree](../../engines/table-engines/mergetree-family/mergetree.md) table exceeds `merge_tree_min_rows_for_concurrent_read` then ClickHouse tries to perform a concurrent reading from this file on several threads.
504
505Possible values:
506
507- Any positive integer.
508
509Default value: 163840.
510
511## merge\_tree\_min\_bytes\_for\_concurrent\_read {#setting-merge-tree-min-bytes-for-concurrent-read}
512
513If the number of bytes to read from one file of a [MergeTree](../../engines/table-engines/mergetree-family/mergetree.md)-engine table exceeds `merge_tree_min_bytes_for_concurrent_read`, then ClickHouse tries to concurrently read from this file in several threads.
514
515Possible value:
516
517- Any positive integer.
518
519Default value: 251658240.
520
521## merge\_tree\_min\_rows\_for\_seek {#setting-merge-tree-min-rows-for-seek}
522
523If the distance between two data blocks to be read in one file is less than `merge_tree_min_rows_for_seek` rows, then ClickHouse does not seek through the file but reads the data sequentially.
524
525Possible values:
526
527- Any positive integer.
528
529Default value: 0.
530
531## merge\_tree\_min\_bytes\_for\_seek {#setting-merge-tree-min-bytes-for-seek}
532
533If the distance between two data blocks to be read in one file is less than `merge_tree_min_bytes_for_seek` bytes, then ClickHouse sequentially reads a range of file that contains both blocks, thus avoiding extra seek.
534
535Possible values:
536
537- Any positive integer.
538
539Default value: 0.
540
541## merge\_tree\_coarse\_index\_granularity {#setting-merge-tree-coarse-index-granularity}
542
543When searching for data, ClickHouse checks the data marks in the index file. If ClickHouse finds that required keys are in some range, it divides this range into `merge_tree_coarse_index_granularity` subranges and searches the required keys there recursively.
544
545Possible values:
546
547- Any positive even integer.
548
549Default value: 8.
550
551## merge\_tree\_max\_rows\_to\_use\_cache {#setting-merge-tree-max-rows-to-use-cache}
552
553If ClickHouse should read more than `merge_tree_max_rows_to_use_cache` rows in one query, it doesn’t use the cache of uncompressed blocks.
554
555The cache of uncompressed blocks stores data extracted for queries. ClickHouse uses this cache to speed up responses to repeated small queries. This setting protects the cache from trashing by queries that read a large amount of data. The [uncompressed\_cache\_size](../../operations/server-configuration-parameters/settings.md#server-settings-uncompressed_cache_size) server setting defines the size of the cache of uncompressed blocks.
556
557Possible values:
558
559- Any positive integer.
560
561Default value: 128 ✕ 8192.
562
563## merge\_tree\_max\_bytes\_to\_use\_cache {#setting-merge-tree-max-bytes-to-use-cache}
564
565If ClickHouse should read more than `merge_tree_max_bytes_to_use_cache` bytes in one query, it doesn’t use the cache of uncompressed blocks.
566
567The cache of uncompressed blocks stores data extracted for queries. ClickHouse uses this cache to speed up responses to repeated small queries. This setting protects the cache from trashing by queries that read a large amount of data. The [uncompressed\_cache\_size](../../operations/server-configuration-parameters/settings.md#server-settings-uncompressed_cache_size) server setting defines the size of the cache of uncompressed blocks.
568
569Possible value:
570
571- Any positive integer.
572
573Default value: 2013265920.
574
575## min\_bytes\_to\_use\_direct\_io {#settings-min-bytes-to-use-direct-io}
576
577The minimum data volume required for using direct I/O access to the storage disk.
578
579ClickHouse uses this setting when reading data from tables. If the total storage volume of all the data to be read exceeds `min_bytes_to_use_direct_io` bytes, then ClickHouse reads the data from the storage disk with the `O_DIRECT` option.
580
581Possible values:
582
583- 0 — Direct I/O is disabled.
584- Positive integer.
585
586Default value: 0.
587
588## network_compression_method {#network_compression_method}
589
590Sets the method of data compression that is used for communication between servers and between server and [clickhouse-client](../../interfaces/cli.md).
591
592Possible values:
593
594- `LZ4` — sets LZ4 compression method.
595- `ZSTD` — sets ZSTD compression method.
596
597Default value: `LZ4`.
598
599**See Also**
600
601- [network_zstd_compression_level](#network_zstd_compression_level)
602
603## network_zstd_compression_level {#network_zstd_compression_level}
604
605Adjusts the level of ZSTD compression. Used only when [network_compression_method](#network_compression_method) is set to `ZSTD`.
606
607Possible values:
608
609- Positive integer from 1 to 15.
610
611Default value: `1`.
612
613## log\_queries {#settings-log-queries}
614
615Setting up query logging.
616
617Queries sent to ClickHouse with this setup are logged according to the rules in the [query\_log](../../operations/server-configuration-parameters/settings.md#server_configuration_parameters-query-log) server configuration parameter.
618
619Example:
620
621``` text
622log_queries=1
623```
624
625## log\_queries\_min\_type {#settings-log-queries-min-type}
626
627`query_log` minimal type to log.
628
629Possible values:
630- `QUERY_START` (`=1`)
631- `QUERY_FINISH` (`=2`)
632- `EXCEPTION_BEFORE_START` (`=3`)
633- `EXCEPTION_WHILE_PROCESSING` (`=4`)
634
635Default value: `QUERY_START`.
636
637Can be used to limit which entiries will goes to `query_log`, say you are interesting only in errors, then you can use `EXCEPTION_WHILE_PROCESSING`:
638
639``` text
640log_queries_min_type='EXCEPTION_WHILE_PROCESSING'
641```
642
643## log\_query\_threads {#settings-log-query-threads}
644
645Setting up query threads logging.
646
647Queries’ threads runned by ClickHouse with this setup are logged according to the rules in the [query\_thread\_log](../../operations/server-configuration-parameters/settings.md#server_configuration_parameters-query_thread_log) server configuration parameter.
648
649Example:
650
651``` text
652log_query_threads=1
653```
654
655## max\_insert\_block\_size {#settings-max_insert_block_size}
656
657The size of blocks (in a count of rows) to form for insertion into a table.
658This setting only applies in cases when the server forms the blocks.
659For example, for an INSERT via the HTTP interface, the server parses the data format and forms blocks of the specified size.
660But when using clickhouse-client, the client parses the data itself, and the ‘max\_insert\_block\_size’ setting on the server doesn’t affect the size of the inserted blocks.
661The setting also doesn’t have a purpose when using INSERT SELECT, since data is inserted using the same blocks that are formed after SELECT.
662
663Default value: 1,048,576.
664
665The default is slightly more than `max_block_size`. The reason for this is because certain table engines (`*MergeTree`) form a data part on the disk for each inserted block, which is a fairly large entity. Similarly, `*MergeTree` tables sort data during insertion and a large enough block size allow sorting more data in RAM.
666
667## min\_insert\_block\_size\_rows {#min-insert-block-size-rows}
668
669Sets minimum number of rows in block which can be inserted into a table by an `INSERT` query. Smaller-sized blocks are squashed into bigger ones.
670
671Possible values:
672
673- Positive integer.
674- 0 — Squashing disabled.
675
676Default value: 1048576.
677
678## min\_insert\_block\_size\_bytes {#min-insert-block-size-bytes}
679
680Sets minimum number of bytes in block which can be inserted into a table by an `INSERT` query. Smaller-sized blocks are squashed into bigger ones.
681
682Possible values:
683
684- Positive integer.
685- 0 — Squashing disabled.
686
687Default value: 268435456.
688
689## max\_replica\_delay\_for\_distributed\_queries {#settings-max_replica_delay_for_distributed_queries}
690
691Disables lagging replicas for distributed queries. See [Replication](../../engines/table-engines/mergetree-family/replication.md).
692
693Sets the time in seconds. If a replica lags more than the set value, this replica is not used.
694
695Default value: 300.
696
697Used when performing `SELECT` from a distributed table that points to replicated tables.
698
699## max\_threads {#settings-max_threads}
700
701The maximum number of query processing threads, excluding threads for retrieving data from remote servers (see the ‘max\_distributed\_connections’ parameter).
702
703This parameter applies to threads that perform the same stages of the query processing pipeline in parallel.
704For example, when reading from a table, if it is possible to evaluate expressions with functions, filter with WHERE and pre-aggregate for GROUP BY in parallel using at least ‘max\_threads’ number of threads, then ‘max\_threads’ are used.
705
706Default value: the number of physical CPU cores.
707
708If less than one SELECT query is normally run on a server at a time, set this parameter to a value slightly less than the actual number of processor cores.
709
710For queries that are completed quickly because of a LIMIT, you can set a lower ‘max\_threads’. For example, if the necessary number of entries are located in every block and max\_threads = 8, then 8 blocks are retrieved, although it would have been enough to read just one.
711
712The smaller the `max_threads` value, the less memory is consumed.
713
714## max\_insert\_threads {#settings-max-insert-threads}
715
716The maximum number of threads to execute the `INSERT SELECT` query.
717
718Possible values:
719
720- 0 (or 1) — `INSERT SELECT` no parallel execution.
721- Positive integer. Bigger than 1.
722
723Default value: 0.
724
725Parallel `INSERT SELECT` has effect only if the `SELECT` part is executed in parallel, see [max\_threads](#settings-max_threads) setting.
726Higher values will lead to higher memory usage.
727
728## max\_compress\_block\_size {#max-compress-block-size}
729
730The maximum size of blocks of uncompressed data before compressing for writing to a table. By default, 1,048,576 (1 MiB). If the size is reduced, the compression rate is significantly reduced, the compression and decompression speed increases slightly due to cache locality, and memory consumption is reduced. There usually isn’t any reason to change this setting.
731
732Don’t confuse blocks for compression (a chunk of memory consisting of bytes) with blocks for query processing (a set of rows from a table).
733
734## min\_compress\_block\_size {#min-compress-block-size}
735
736For [MergeTree](../../engines/table-engines/mergetree-family/mergetree.md)" tables. In order to reduce latency when processing queries, a block is compressed when writing the next mark if its size is at least ‘min\_compress\_block\_size’. By default, 65,536.
737
738The actual size of the block, if the uncompressed data is less than ‘max\_compress\_block\_size’, is no less than this value and no less than the volume of data for one mark.
739
740Let’s look at an example. Assume that ‘index\_granularity’ was set to 8192 during table creation.
741
742We are writing a UInt32-type column (4 bytes per value). When writing 8192 rows, the total will be 32 KB of data. Since min\_compress\_block\_size = 65,536, a compressed block will be formed for every two marks.
743
744We are writing a URL column with the String type (average size of 60 bytes per value). When writing 8192 rows, the average will be slightly less than 500 KB of data. Since this is more than 65,536, a compressed block will be formed for each mark. In this case, when reading data from the disk in the range of a single mark, extra data won’t be decompressed.
745
746There usually isn’t any reason to change this setting.
747
748## max\_query\_size {#settings-max_query_size}
749
750The maximum part of a query that can be taken to RAM for parsing with the SQL parser.
751The INSERT query also contains data for INSERT that is processed by a separate stream parser (that consumes O(1) RAM), which is not included in this restriction.
752
753Default value: 256 KiB.
754
755## max\_parser\_depth {#max_parser_depth}
756
757Limits maximum recursion depth in the recursive descent parser. Allows to control stack size.
758
759Possible values:
760
761- Positive integer.
762- 0 — Recursion depth is unlimited.
763
764Default value: 1000.
765
766## interactive\_delay {#interactive-delay}
767
768The interval in microseconds for checking whether request execution has been cancelled and sending the progress.
769
770Default value: 100,000 (checks for cancelling and sends the progress ten times per second).
771
772## connect\_timeout, receive\_timeout, send\_timeout {#connect-timeout-receive-timeout-send-timeout}
773
774Timeouts in seconds on the socket used for communicating with the client.
775
776Default value: 10, 300, 300.
777
778## cancel\_http\_readonly\_queries\_on\_client\_close {#cancel-http-readonly-queries-on-client-close}
779
780Cancels HTTP read-only queries (e.g. SELECT) when a client closes the connection without waiting for the response.
781
782Default value: 0
783
784## poll\_interval {#poll-interval}
785
786Lock in a wait loop for the specified number of seconds.
787
788Default value: 10.
789
790## max\_distributed\_connections {#max-distributed-connections}
791
792The maximum number of simultaneous connections with remote servers for distributed processing of a single query to a single Distributed table. We recommend setting a value no less than the number of servers in the cluster.
793
794Default value: 1024.
795
796The following parameters are only used when creating Distributed tables (and when launching a server), so there is no reason to change them at runtime.
797
798## distributed\_connections\_pool\_size {#distributed-connections-pool-size}
799
800The maximum number of simultaneous connections with remote servers for distributed processing of all queries to a single Distributed table. We recommend setting a value no less than the number of servers in the cluster.
801
802Default value: 1024.
803
804## connect\_timeout\_with\_failover\_ms {#connect-timeout-with-failover-ms}
805
806The timeout in milliseconds for connecting to a remote server for a Distributed table engine, if the ‘shard’ and ‘replica’ sections are used in the cluster definition.
807If unsuccessful, several attempts are made to connect to various replicas.
808
809Default value: 50.
810
811## connection\_pool\_max\_wait\_ms {#connection-pool-max-wait-ms}
812
813The wait time in milliseconds for a connection when the connection pool is full.
814
815Possible values:
816
817- Positive integer.
818- 0 — Infinite timeout.
819
820Default value: 0.
821
822## connections\_with\_failover\_max\_tries {#connections-with-failover-max-tries}
823
824The maximum number of connection attempts with each replica for the Distributed table engine.
825
826Default value: 3.
827
828## extremes {#extremes}
829
830Whether to count extreme values (the minimums and maximums in columns of a query result). Accepts 0 or 1. By default, 0 (disabled).
831For more information, see the section “Extreme values”.
832
833## kafka\_max\_wait\_ms {#kafka-max-wait-ms}
834
835The wait time in milliseconds for reading messages from [Kafka](../../engines/table-engines/integrations/kafka.md#kafka) before retry.
836
837Possible values:
838
839- Positive integer.
840- 0 — Infinite timeout.
841
842Default value: 5000.
843
844See also:
845
846- [Apache Kafka](https://kafka.apache.org/)
847
848## use\_uncompressed\_cache {#setting-use_uncompressed_cache}
849
850Whether to use a cache of uncompressed blocks. Accepts 0 or 1. By default, 0 (disabled).
851Using the uncompressed cache (only for tables in the MergeTree family) can significantly reduce latency and increase throughput when working with a large number of short queries. Enable this setting for users who send frequent short requests. Also pay attention to the [uncompressed\_cache\_size](../../operations/server-configuration-parameters/settings.md#server-settings-uncompressed_cache_size) configuration parameter (only set in the config file) – the size of uncompressed cache blocks. By default, it is 8 GiB. The uncompressed cache is filled in as needed and the least-used data is automatically deleted.
852
853For queries that read at least a somewhat large volume of data (one million rows or more), the uncompressed cache is disabled automatically to save space for truly small queries. This means that you can keep the ‘use\_uncompressed\_cache’ setting always set to 1.
854
855## replace\_running\_query {#replace-running-query}
856
857When using the HTTP interface, the ‘query\_id’ parameter can be passed. This is any string that serves as the query identifier.
858If a query from the same user with the same ‘query\_id’ already exists at this time, the behaviour depends on the ‘replace\_running\_query’ parameter.
859
860`0` (default) – Throw an exception (don’t allow the query to run if a query with the same ‘query\_id’ is already running).
861
862`1` – Cancel the old query and start running the new one.
863
864Yandex.Metrica uses this parameter set to 1 for implementing suggestions for segmentation conditions. After entering the next character, if the old query hasn’t finished yet, it should be cancelled.
865
866## replace\_running\_query\_max\_wait\_ms {#replace-running-query-max-wait-ms}
867
868The wait time for running query with the same `query_id` to finish, when the [replace_running_query](#replace-running-query) setting is active.
869
870Possible values:
871
872- Positive integer.
873- 0 — Throwing an exception that does not allow to run a new query if the server already executes a query with the same `query_id`.
874
875Default value: 5000.
876
877## stream\_flush\_interval\_ms {#stream-flush-interval-ms}
878
879Works for tables with streaming in the case of a timeout, or when a thread generates [max\_insert\_block\_size](#settings-max_insert_block_size) rows.
880
881The default value is 7500.
882
883The smaller the value, the more often data is flushed into the table. Setting the value too low leads to poor performance.
884
885## load\_balancing {#settings-load_balancing}
886
887Specifies the algorithm of replicas selection that is used for distributed query processing.
888
889ClickHouse supports the following algorithms of choosing replicas:
890
891- [Random](#load_balancing-random) (by default)
892- [Nearest hostname](#load_balancing-nearest_hostname)
893- [In order](#load_balancing-in_order)
894- [First or random](#load_balancing-first_or_random)
895- [Round robin](#load_balancing-round_robin)
896
897See also:
898
899- [distributed\_replica\_max\_ignored\_errors](#settings-distributed_replica_max_ignored_errors)
900
901### Random (by Default) {#load_balancing-random}
902
903``` sql
904load_balancing = random
905```
906
907The number of errors is counted for each replica. The query is sent to the replica with the fewest errors, and if there are several of these, to anyone of them.
908Disadvantages: Server proximity is not accounted for; if the replicas have different data, you will also get different data.
909
910### Nearest Hostname {#load_balancing-nearest_hostname}
911
912``` sql
913load_balancing = nearest_hostname
914```
915
916The number of errors is counted for each replica. Every 5 minutes, the number of errors is integrally divided by 2. Thus, the number of errors is calculated for a recent time with exponential smoothing. If there is one replica with a minimal number of errors (i.e. errors occurred recently on the other replicas), the query is sent to it. If there are multiple replicas with the same minimal number of errors, the query is sent to the replica with a hostname that is most similar to the server’s hostname in the config file (for the number of different characters in identical positions, up to the minimum length of both hostnames).
917
918For instance, example01-01-1 and example01-01-2.yandex.ru are different in one position, while example01-01-1 and example01-02-2 differ in two places.
919This method might seem primitive, but it doesn’t require external data about network topology, and it doesn’t compare IP addresses, which would be complicated for our IPv6 addresses.
920
921Thus, if there are equivalent replicas, the closest one by name is preferred.
922We can also assume that when sending a query to the same server, in the absence of failures, a distributed query will also go to the same servers. So even if different data is placed on the replicas, the query will return mostly the same results.
923
924### In Order {#load_balancing-in_order}
925
926``` sql
927load_balancing = in_order
928```
929
930Replicas with the same number of errors are accessed in the same order as they are specified in the configuration.
931This method is appropriate when you know exactly which replica is preferable.
932
933### First or Random {#load_balancing-first_or_random}
934
935``` sql
936load_balancing = first_or_random
937```
938
939This algorithm chooses the first replica in the set or a random replica if the first is unavailable. It’s effective in cross-replication topology setups, but useless in other configurations.
940
941The `first_or_random` algorithm solves the problem of the `in_order` algorithm. With `in_order`, if one replica goes down, the next one gets a double load while the remaining replicas handle the usual amount of traffic. When using the `first_or_random` algorithm, the load is evenly distributed among replicas that are still available.
942
943### Round Robin {#load_balancing-round_robin}
944
945``` sql
946load_balancing = round_robin
947```
948
949This algorithm uses round robin policy across replicas with the same number of errors (only the queries with `round_robin` policy is accounted).
950
951## prefer\_localhost\_replica {#settings-prefer-localhost-replica}
952
953Enables/disables preferable using the localhost replica when processing distributed queries.
954
955Possible values:
956
957- 1 — ClickHouse always sends a query to the localhost replica if it exists.
958- 0 — ClickHouse uses the balancing strategy specified by the [load\_balancing](#settings-load_balancing) setting.
959
960Default value: 1.
961
962!!! warning "Warning"
963 Disable this setting if you use [max\_parallel\_replicas](#settings-max_parallel_replicas).
964
965## totals\_mode {#totals-mode}
966
967How to calculate TOTALS when HAVING is present, as well as when max\_rows\_to\_group\_by and group\_by\_overflow\_mode = ‘any’ are present.
968See the section “WITH TOTALS modifier”.
969
970## totals\_auto\_threshold {#totals-auto-threshold}
971
972The threshold for `totals_mode = 'auto'`.
973See the section “WITH TOTALS modifier”.
974
975## max\_parallel\_replicas {#settings-max_parallel_replicas}
976
977The maximum number of replicas for each shard when executing a query.
978For consistency (to get different parts of the same data split), this option only works when the sampling key is set.
979Replica lag is not controlled.
980
981## compile {#compile}
982
983Enable compilation of queries. By default, 0 (disabled).
984
985The compilation is only used for part of the query-processing pipeline: for the first stage of aggregation (GROUP BY).
986If this portion of the pipeline was compiled, the query may run faster due to deployment of short cycles and inlining aggregate function calls. The maximum performance improvement (up to four times faster in rare cases) is seen for queries with multiple simple aggregate functions. Typically, the performance gain is insignificant. In very rare cases, it may slow down query execution.
987
988## min\_count\_to\_compile {#min-count-to-compile}
989
990How many times to potentially use a compiled chunk of code before running compilation. By default, 3.
991For testing, the value can be set to 0: compilation runs synchronously and the query waits for the end of the compilation process before continuing execution. For all other cases, use values ​​starting with 1. Compilation normally takes about 5-10 seconds.
992If the value is 1 or more, compilation occurs asynchronously in a separate thread. The result will be used as soon as it is ready, including queries that are currently running.
993
994Compiled code is required for each different combination of aggregate functions used in the query and the type of keys in the GROUP BY clause.
995The results of the compilation are saved in the build directory in the form of .so files. There is no restriction on the number of compilation results since they don’t use very much space. Old results will be used after server restarts, except in the case of a server upgrade – in this case, the old results are deleted.
996
997## output\_format\_json\_quote\_64bit\_integers {#session_settings-output_format_json_quote_64bit_integers}
998
999If the value is true, integers appear in quotes when using JSON\* Int64 and UInt64 formats (for compatibility with most JavaScript implementations); otherwise, integers are output without the quotes.
1000
1001## output\_format\_json\_quote\_denormals {#settings-output_format_json_quote_denormals}
1002
1003Enables `+nan`, `-nan`, `+inf`, `-inf` outputs in [JSON](../../interfaces/formats.md#json) output format.
1004
1005Possible values:
1006
1007- 0 — Disabled.
1008- 1 — Enabled.
1009
1010Default value: 0.
1011
1012**Example**
1013
1014Consider the following table `account_orders`:
1015
1016```text
1017┌─id─┬─name───┬─duration─┬─period─┬─area─┐
1018│ 1 │ Andrew │ 20 │ 0 │ 400 │
1019│ 2 │ John │ 40 │ 0 │ 0 │
1020│ 3 │ Bob │ 15 │ 0 │ -100 │
1021└────┴────────┴──────────┴────────┴──────┘
1022```
1023
1024When `output_format_json_quote_denormals = 0`, the query returns `null` values in output:
1025
1026```sql
1027SELECT area/period FROM account_orders FORMAT JSON;
1028```
1029
1030```json
1031{
1032 "meta":
1033 [
1034 {
1035 "name": "divide(area, period)",
1036 "type": "Float64"
1037 }
1038 ],
1039
1040 "data":
1041 [
1042 {
1043 "divide(area, period)": null
1044 },
1045 {
1046 "divide(area, period)": null
1047 },
1048 {
1049 "divide(area, period)": null
1050 }
1051 ],
1052
1053 "rows": 3,
1054
1055 "statistics":
1056 {
1057 "elapsed": 0.003648093,
1058 "rows_read": 3,
1059 "bytes_read": 24
1060 }
1061}
1062```
1063
1064When `output_format_json_quote_denormals = 1`, the query returns:
1065
1066```json
1067{
1068 "meta":
1069 [
1070 {
1071 "name": "divide(area, period)",
1072 "type": "Float64"
1073 }
1074 ],
1075
1076 "data":
1077 [
1078 {
1079 "divide(area, period)": "inf"
1080 },
1081 {
1082 "divide(area, period)": "-nan"
1083 },
1084 {
1085 "divide(area, period)": "-inf"
1086 }
1087 ],
1088
1089 "rows": 3,
1090
1091 "statistics":
1092 {
1093 "elapsed": 0.000070241,
1094 "rows_read": 3,
1095 "bytes_read": 24
1096 }
1097}
1098```
1099
1100## format\_csv\_delimiter {#settings-format_csv_delimiter}
1101
1102The character interpreted as a delimiter in the CSV data. By default, the delimiter is `,`.
1103
1104## input\_format\_csv\_unquoted\_null\_literal\_as\_null {#settings-input_format_csv_unquoted_null_literal_as_null}
1105
1106For CSV input format enables or disables parsing of unquoted `NULL` as literal (synonym for `\N`).
1107
1108## output\_format\_csv\_crlf\_end\_of\_line {#settings-output-format-csv-crlf-end-of-line}
1109
1110Use DOS/Windows-style line separator (CRLF) in CSV instead of Unix style (LF).
1111
1112## output\_format\_tsv\_crlf\_end\_of\_line {#settings-output-format-tsv-crlf-end-of-line}
1113
1114Use DOC/Windows-style line separator (CRLF) in TSV instead of Unix style (LF).
1115
1116## insert\_quorum {#settings-insert_quorum}
1117
1118Enables the quorum writes.
1119
1120- If `insert_quorum < 2`, the quorum writes are disabled.
1121- If `insert_quorum >= 2`, the quorum writes are enabled.
1122
1123Default value: 0.
1124
1125Quorum writes
1126
1127`INSERT` succeeds only when ClickHouse manages to correctly write data to the `insert_quorum` of replicas during the `insert_quorum_timeout`. If for any reason the number of replicas with successful writes does not reach the `insert_quorum`, the write is considered failed and ClickHouse will delete the inserted block from all the replicas where data has already been written.
1128
1129All the replicas in the quorum are consistent, i.e., they contain data from all previous `INSERT` queries. The `INSERT` sequence is linearized.
1130
1131When reading the data written from the `insert_quorum`, you can use the [select\_sequential\_consistency](#settings-select_sequential_consistency) option.
1132
1133ClickHouse generates an exception
1134
1135- If the number of available replicas at the time of the query is less than the `insert_quorum`.
1136- At an attempt to write data when the previous block has not yet been inserted in the `insert_quorum` of replicas. This situation may occur if the user tries to perform an `INSERT` before the previous one with the `insert_quorum` is completed.
1137
1138See also:
1139
1140- [insert\_quorum\_timeout](#settings-insert_quorum_timeout)
1141- [select\_sequential\_consistency](#settings-select_sequential_consistency)
1142
1143## insert\_quorum\_timeout {#settings-insert_quorum_timeout}
1144
1145Write to quorum timeout in seconds. If the timeout has passed and no write has taken place yet, ClickHouse will generate an exception and the client must repeat the query to write the same block to the same or any other replica.
1146
1147Default value: 60 seconds.
1148
1149See also:
1150
1151- [insert\_quorum](#settings-insert_quorum)
1152- [select\_sequential\_consistency](#settings-select_sequential_consistency)
1153
1154## select\_sequential\_consistency {#settings-select_sequential_consistency}
1155
1156Enables or disables sequential consistency for `SELECT` queries:
1157
1158Possible values:
1159
1160- 0 — Disabled.
1161- 1 — Enabled.
1162
1163Default value: 0.
1164
1165Usage
1166
1167When sequential consistency is enabled, ClickHouse allows the client to execute the `SELECT` query only for those replicas that contain data from all previous `INSERT` queries executed with `insert_quorum`. If the client refers to a partial replica, ClickHouse will generate an exception. The SELECT query will not include data that has not yet been written to the quorum of replicas.
1168
1169See also:
1170
1171- [insert\_quorum](#settings-insert_quorum)
1172- [insert\_quorum\_timeout](#settings-insert_quorum_timeout)
1173
1174## insert\_deduplicate {#settings-insert-deduplicate}
1175
1176Enables or disables block deduplication of `INSERT` (for Replicated\* tables).
1177
1178Possible values:
1179
1180- 0 — Disabled.
1181- 1 — Enabled.
1182
1183Default value: 1.
1184
1185By default, blocks inserted into replicated tables by the `INSERT` statement are deduplicated (see [Data Replication](../../engines/table-engines/mergetree-family/replication.md)).
1186
1187## deduplicate\_blocks\_in\_dependent\_materialized\_views {#settings-deduplicate-blocks-in-dependent-materialized-views}
1188
1189Enables or disables the deduplication check for materialized views that receive data from Replicated\* tables.
1190
1191Possible values:
1192
1193 0 — Disabled.
1194 1 — Enabled.
1195
1196Default value: 0.
1197
1198Usage
1199
1200By default, deduplication is not performed for materialized views but is done upstream, in the source table.
1201If an INSERTed block is skipped due to deduplication in the source table, there will be no insertion into attached materialized views. This behaviour exists to enable insertion of highly aggregated data into materialized views, for cases where inserted blocks are the same after materialized view aggregation but derived from different INSERTs into the source table.
1202At the same time, this behaviour “breaks” `INSERT` idempotency. If an `INSERT` into the main table was successful and `INSERT` into a materialized view failed (e.g. because of communication failure with Zookeeper) a client will get an error and can retry the operation. However, the materialized view won’t receive the second insert because it will be discarded by deduplication in the main (source) table. The setting `deduplicate_blocks_in_dependent_materialized_views` allows for changing this behaviour. On retry, a materialized view will receive the repeat insert and will perform deduplication check by itself,
1203ignoring check result for the source table, and will insert rows lost because of the first failure.
1204
1205## max\_network\_bytes {#settings-max-network-bytes}
1206
1207Limits the data volume (in bytes) that is received or transmitted over the network when executing a query. This setting applies to every individual query.
1208
1209Possible values:
1210
1211- Positive integer.
1212- 0 — Data volume control is disabled.
1213
1214Default value: 0.
1215
1216## max\_network\_bandwidth {#settings-max-network-bandwidth}
1217
1218Limits the speed of the data exchange over the network in bytes per second. This setting applies to every query.
1219
1220Possible values:
1221
1222- Positive integer.
1223- 0 — Bandwidth control is disabled.
1224
1225Default value: 0.
1226
1227## max\_network\_bandwidth\_for\_user {#settings-max-network-bandwidth-for-user}
1228
1229Limits the speed of the data exchange over the network in bytes per second. This setting applies to all concurrently running queries performed by a single user.
1230
1231Possible values:
1232
1233- Positive integer.
1234- 0 — Control of the data speed is disabled.
1235
1236Default value: 0.
1237
1238## max\_network\_bandwidth\_for\_all\_users {#settings-max-network-bandwidth-for-all-users}
1239
1240Limits the speed that data is exchanged at over the network in bytes per second. This setting applies to all concurrently running queries on the server.
1241
1242Possible values:
1243
1244- Positive integer.
1245- 0 — Control of the data speed is disabled.
1246
1247Default value: 0.
1248
1249## count\_distinct\_implementation {#settings-count_distinct_implementation}
1250
1251Specifies which of the `uniq*` functions should be used to perform the [COUNT(DISTINCT …)](../../sql-reference/aggregate-functions/reference/count.md#agg_function-count) construction.
1252
1253Possible values:
1254
1255- [uniq](../../sql-reference/aggregate-functions/reference/uniq.md#agg_function-uniq)
1256- [uniqCombined](../../sql-reference/aggregate-functions/reference/uniqcombined.md#agg_function-uniqcombined)
1257- [uniqCombined64](../../sql-reference/aggregate-functions/reference/uniqcombined64.md#agg_function-uniqcombined64)
1258- [uniqHLL12](../../sql-reference/aggregate-functions/reference/uniqhll12.md#agg_function-uniqhll12)
1259- [uniqExact](../../sql-reference/aggregate-functions/reference/uniqexact.md#agg_function-uniqexact)
1260
1261Default value: `uniqExact`.
1262
1263## skip\_unavailable\_shards {#settings-skip_unavailable_shards}
1264
1265Enables or disables silently skipping of unavailable shards.
1266
1267Shard is considered unavailable if all its replicas are unavailable. A replica is unavailable in the following cases:
1268
1269- ClickHouse can’t connect to replica for any reason.
1270
1271 When connecting to a replica, ClickHouse performs several attempts. If all these attempts fail, the replica is considered unavailable.
1272
1273- Replica can’t be resolved through DNS.
1274
1275 If replica’s hostname can’t be resolved through DNS, it can indicate the following situations:
1276
1277 - Replica’s host has no DNS record. It can occur in systems with dynamic DNS, for example, [Kubernetes](https://kubernetes.io), where nodes can be unresolvable during downtime, and this is not an error.
1278
1279 - Configuration error. ClickHouse configuration file contains a wrong hostname.
1280
1281Possible values:
1282
1283- 1 — skipping enabled.
1284
1285 If a shard is unavailable, ClickHouse returns a result based on partial data and doesn’t report node availability issues.
1286
1287- 0 — skipping disabled.
1288
1289 If a shard is unavailable, ClickHouse throws an exception.
1290
1291Default value: 0.
1292
1293## optimize\_skip\_unused\_shards {#optimize-skip-unused-shards}
1294
1295Enables or disables skipping of unused shards for [SELECT](../../sql-reference/statements/select/index.md) queries that have sharding key condition in `WHERE/PREWHERE` (assuming that the data is distributed by sharding key, otherwise does nothing).
1296
1297Possible values:
1298
1299- 0 — Disabled.
1300- 1 — Enabled.
1301
1302Default value: 0
1303
1304## optimize\_skip\_unused\_shards\_nesting {#optimize-skip-unused-shards-nesting}
1305
1306Controls [`optimize_skip_unused_shards`](#optimize-skip-unused-shards) (hence still requires [`optimize_skip_unused_shards`](#optimize-skip-unused-shards)) depends on the nesting level of the distributed query (case when you have `Distributed` table that look into another `Distributed` table).
1307
1308Possible values:
1309
1310- 0 — Disabled, `optimize_skip_unused_shards` works always.
1311- 1 — Enables `optimize_skip_unused_shards` only for the first level.
1312- 2 — Enables `optimize_skip_unused_shards` up to the second level.
1313
1314Default value: 0
1315
1316## force\_optimize\_skip\_unused\_shards {#force-optimize-skip-unused-shards}
1317
1318Enables or disables query execution if [optimize\_skip\_unused\_shards](#optimize-skip-unused-shards) is enabled and skipping of unused shards is not possible. If the skipping is not possible and the setting is enabled, an exception will be thrown.
1319
1320Possible values:
1321
1322- 0 — Disabled. ClickHouse doesn’t throw an exception.
1323- 1 — Enabled. Query execution is disabled only if the table has a sharding key.
1324- 2 — Enabled. Query execution is disabled regardless of whether a sharding key is defined for the table.
1325
1326Default value: 0
1327
1328## force\_optimize\_skip\_unused\_shards\_nesting {#settings-force_optimize_skip_unused_shards_nesting}
1329
1330Controls [`force_optimize_skip_unused_shards`](#force-optimize-skip-unused-shards) (hence still requires [`force_optimize_skip_unused_shards`](#force-optimize-skip-unused-shards)) depends on the nesting level of the distributed query (case when you have `Distributed` table that look into another `Distributed` table).
1331
1332Possible values:
1333
1334- 0 - Disabled, `force_optimize_skip_unused_shards` works always.
1335- 1 — Enables `force_optimize_skip_unused_shards` only for the first level.
1336- 2 — Enables `force_optimize_skip_unused_shards` up to the second level.
1337
1338Default value: 0
1339
1340## optimize\_throw\_if\_noop {#setting-optimize_throw_if_noop}
1341
1342Enables or disables throwing an exception if an [OPTIMIZE](../../sql-reference/statements/misc.md#misc_operations-optimize) query didn’t perform a merge.
1343
1344By default, `OPTIMIZE` returns successfully even if it didn’t do anything. This setting lets you differentiate these situations and get the reason in an exception message.
1345
1346Possible values:
1347
1348- 1 — Throwing an exception is enabled.
1349- 0 — Throwing an exception is disabled.
1350
1351Default value: 0.
1352
1353## distributed\_replica\_error\_half\_life {#settings-distributed_replica_error_half_life}
1354
1355- Type: seconds
1356- Default value: 60 seconds
1357
1358Controls how fast errors in distributed tables are zeroed. If a replica is unavailable for some time, accumulates 5 errors, and distributed\_replica\_error\_half\_life is set to 1 second, then the replica is considered normal 3 seconds after last error.
1359
1360See also:
1361
1362- [load\_balancing](#load_balancing-round_robin)
1363- [Table engine Distributed](../../engines/table-engines/special/distributed.md)
1364- [distributed\_replica\_error\_cap](#settings-distributed_replica_error_cap)
1365- [distributed\_replica\_max\_ignored\_errors](#settings-distributed_replica_max_ignored_errors)
1366
1367## distributed\_replica\_error\_cap {#settings-distributed_replica_error_cap}
1368
1369- Type: unsigned int
1370- Default value: 1000
1371
1372Error count of each replica is capped at this value, preventing a single replica from accumulating too many errors.
1373
1374See also:
1375
1376- [load\_balancing](#load_balancing-round_robin)
1377- [Table engine Distributed](../../engines/table-engines/special/distributed.md)
1378- [distributed\_replica\_error\_half\_life](#settings-distributed_replica_error_half_life)
1379- [distributed\_replica\_max\_ignored\_errors](#settings-distributed_replica_max_ignored_errors)
1380
1381## distributed\_replica\_max\_ignored\_errors {#settings-distributed_replica_max_ignored_errors}
1382
1383- Type: unsigned int
1384- Default value: 0
1385
1386Number of errors that will be ignored while choosing replicas (according to `load_balancing` algorithm).
1387
1388See also:
1389
1390- [load\_balancing](#load_balancing-round_robin)
1391- [Table engine Distributed](../../engines/table-engines/special/distributed.md)
1392- [distributed\_replica\_error\_cap](#settings-distributed_replica_error_cap)
1393- [distributed\_replica\_error\_half\_life](#settings-distributed_replica_error_half_life)
1394
1395## distributed\_directory\_monitor\_sleep\_time\_ms {#distributed_directory_monitor_sleep_time_ms}
1396
1397Base interval for the [Distributed](../../engines/table-engines/special/distributed.md) table engine to send data. The actual interval grows exponentially in the event of errors.
1398
1399Possible values:
1400
1401- A positive integer number of milliseconds.
1402
1403Default value: 100 milliseconds.
1404
1405## distributed\_directory\_monitor\_max\_sleep\_time\_ms {#distributed_directory_monitor_max_sleep_time_ms}
1406
1407Maximum interval for the [Distributed](../../engines/table-engines/special/distributed.md) table engine to send data. Limits exponential growth of the interval set in the [distributed\_directory\_monitor\_sleep\_time\_ms](#distributed_directory_monitor_sleep_time_ms) setting.
1408
1409Possible values:
1410
1411- A positive integer number of milliseconds.
1412
1413Default value: 30000 milliseconds (30 seconds).
1414
1415## distributed\_directory\_monitor\_batch\_inserts {#distributed_directory_monitor_batch_inserts}
1416
1417Enables/disables sending of inserted data in batches.
1418
1419When batch sending is enabled, the [Distributed](../../engines/table-engines/special/distributed.md) table engine tries to send multiple files of inserted data in one operation instead of sending them separately. Batch sending improves cluster performance by better-utilizing server and network resources.
1420
1421Possible values:
1422
1423- 1 — Enabled.
1424- 0 — Disabled.
1425
1426Default value: 0.
1427
1428## os\_thread\_priority {#setting-os-thread-priority}
1429
1430Sets the priority ([nice](https://en.wikipedia.org/wiki/Nice_(Unix))) for threads that execute queries. The OS scheduler considers this priority when choosing the next thread to run on each available CPU core.
1431
1432!!! warning "Warning"
1433 To use this setting, you need to set the `CAP_SYS_NICE` capability. The `clickhouse-server` package sets it up during installation. Some virtual environments don’t allow you to set the `CAP_SYS_NICE` capability. In this case, `clickhouse-server` shows a message about it at the start.
1434
1435Possible values:
1436
1437- You can set values in the range `[-20, 19]`.
1438
1439Lower values mean higher priority. Threads with low `nice` priority values are executed more frequently than threads with high values. High values are preferable for long-running non-interactive queries because it allows them to quickly give up resources in favour of short interactive queries when they arrive.
1440
1441Default value: 0.
1442
1443## query\_profiler\_real\_time\_period\_ns {#query_profiler_real_time_period_ns}
1444
1445Sets the period for a real clock timer of the [query profiler](../../operations/optimizing-performance/sampling-query-profiler.md). Real clock timer counts wall-clock time.
1446
1447Possible values:
1448
1449- Positive integer number, in nanoseconds.
1450
1451 Recommended values:
1452
1453 - 10000000 (100 times a second) nanoseconds and less for single queries.
1454 - 1000000000 (once a second) for cluster-wide profiling.
1455
1456- 0 for turning off the timer.
1457
1458Type: [UInt64](../../sql-reference/data-types/int-uint.md).
1459
1460Default value: 1000000000 nanoseconds (once a second).
1461
1462See also:
1463
1464- System table [trace\_log](../../operations/system-tables/trace_log.md#system_tables-trace_log)
1465
1466## query\_profiler\_cpu\_time\_period\_ns {#query_profiler_cpu_time_period_ns}
1467
1468Sets the period for a CPU clock timer of the [query profiler](../../operations/optimizing-performance/sampling-query-profiler.md). This timer counts only CPU time.
1469
1470Possible values:
1471
1472- A positive integer number of nanoseconds.
1473
1474 Recommended values:
1475
1476 - 10000000 (100 times a second) nanoseconds and more for single queries.
1477 - 1000000000 (once a second) for cluster-wide profiling.
1478
1479- 0 for turning off the timer.
1480
1481Type: [UInt64](../../sql-reference/data-types/int-uint.md).
1482
1483Default value: 1000000000 nanoseconds.
1484
1485See also:
1486
1487- System table [trace\_log](../../operations/system-tables/trace_log.md#system_tables-trace_log)
1488
1489## allow\_introspection\_functions {#settings-allow_introspection_functions}
1490
1491Enables of disables [introspections functions](../../sql-reference/functions/introspection.md) for query profiling.
1492
1493Possible values:
1494
1495- 1 — Introspection functions enabled.
1496- 0 — Introspection functions disabled.
1497
1498Default value: 0.
1499
1500**See Also**
1501
1502- [Sampling Query Profiler](../../operations/optimizing-performance/sampling-query-profiler.md)
1503- System table [trace\_log](../../operations/system-tables/trace_log.md#system_tables-trace_log)
1504
1505## input\_format\_parallel\_parsing {#input-format-parallel-parsing}
1506
1507- Type: bool
1508- Default value: True
1509
1510Enable order-preserving parallel parsing of data formats. Supported only for TSV, TKSV, CSV and JSONEachRow formats.
1511
1512## min\_chunk\_bytes\_for\_parallel\_parsing {#min-chunk-bytes-for-parallel-parsing}
1513
1514- Type: unsigned int
1515- Default value: 1 MiB
1516
1517The minimum chunk size in bytes, which each thread will parse in parallel.
1518
1519## output\_format\_avro\_codec {#settings-output_format_avro_codec}
1520
1521Sets the compression codec used for output Avro file.
1522
1523Type: string
1524
1525Possible values:
1526
1527- `null` — No compression
1528- `deflate` — Compress with Deflate (zlib)
1529- `snappy` — Compress with [Snappy](https://google.github.io/snappy/)
1530
1531Default value: `snappy` (if available) or `deflate`.
1532
1533## output\_format\_avro\_sync\_interval {#settings-output_format_avro_sync_interval}
1534
1535Sets minimum data size (in bytes) between synchronization markers for output Avro file.
1536
1537Type: unsigned int
1538
1539Possible values: 32 (32 bytes) - 1073741824 (1 GiB)
1540
1541Default value: 32768 (32 KiB)
1542
1543## format\_avro\_schema\_registry\_url {#format_avro_schema_registry_url}
1544
1545Sets [Confluent Schema Registry](https://docs.confluent.io/current/schema-registry/index.html) URL to use with [AvroConfluent](../../interfaces/formats.md#data-format-avro-confluent) format.
1546
1547Default value: `Empty`.
1548
1549## input_format_avro_allow_missing_fields {#input_format_avro_allow_missing_fields}
1550
1551Enables using fields that are not specified in [Avro](../../interfaces/formats.md#data-format-avro) or [AvroConfluent](../../interfaces/formats.md#data-format-avro-confluent) format schema. When a field is not found in the schema, ClickHouse uses the default value instead of throwing an exception.
1552
1553Possible values:
1554
1555- 0 — Disabled.
1556- 1 — Enabled.
1557
1558Default value: 0.
1559
1560## background\_pool\_size {#background_pool_size}
1561
1562Sets the number of threads performing background operations in table engines (for example, merges in [MergeTree engine](../../engines/table-engines/mergetree-family/index.md) tables). This setting is applied from `default` profile at ClickHouse server start and can’t be changed in a user session. By adjusting this setting, you manage CPU and disk load. Smaller pool size utilizes less CPU and disk resources, but background processes advance slower which might eventually impact query performance.
1563
1564Before changing it, please also take a look at related [MergeTree settings](../../operations/server-configuration-parameters/settings.md#server_configuration_parameters-merge_tree), such as `number_of_free_entries_in_pool_to_lower_max_size_of_merge` and `number_of_free_entries_in_pool_to_execute_mutation`.
1565
1566Possible values:
1567
1568- Any positive integer.
1569
1570Default value: 16.
1571
1572## parallel_distributed_insert_select {#parallel_distributed_insert_select}
1573
1574Enables parallel distributed `INSERT ... SELECT` query.
1575
1576If we execute `INSERT INTO distributed_table_a SELECT ... FROM distributed_table_b` queries and both tables use the same cluster, and both tables are either [replicated](../../engines/table-engines/mergetree-family/replication.md) or non-replicated, then this query is processed locally on every shard.
1577
1578Possible values:
1579
1580- 0 — Disabled.
1581- 1 — `SELECT` will be executed on each shard from underlying table of the distributed engine.
1582- 2 — `SELECT` and `INSERT` will be executed on each shard from/to underlying table of the distributed engine.
1583
1584Default value: 0.
1585
1586## insert_distributed_sync {#insert_distributed_sync}
1587
1588Enables or disables synchronous data insertion into a [Distributed](../../engines/table-engines/special/distributed.md#distributed) table.
1589
1590By default, when inserting data into a `Distributed` table, the ClickHouse server sends data to cluster nodes in asynchronous mode. When `insert_distributed_sync=1`, the data is processed synchronously, and the `INSERT` operation succeeds only after all the data is saved on all shards (at least one replica for each shard if `internal_replication` is true).
1591
1592Possible values:
1593
1594- 0 — Data is inserted in asynchronous mode.
1595- 1 — Data is inserted in synchronous mode.
1596
1597Default value: `0`.
1598
1599**See Also**
1600
1601- [Distributed Table Engine](../../engines/table-engines/special/distributed.md#distributed)
1602- [Managing Distributed Tables](../../sql-reference/statements/system.md#query-language-system-distributed)
1603## background\_buffer\_flush\_schedule\_pool\_size {#background_buffer_flush_schedule_pool_size}
1604
1605Sets the number of threads performing background flush in [Buffer](../../engines/table-engines/special/buffer.md)-engine tables. This setting is applied at ClickHouse server start and can’t be changed in a user session.
1606
1607Possible values:
1608
1609- Any positive integer.
1610
1611Default value: 16.
1612
1613## background\_move\_pool\_size {#background_move_pool_size}
1614
1615Sets the number of threads performing background moves of data parts for [MergeTree](../../engines/table-engines/mergetree-family/mergetree.md#table_engine-mergetree-multiple-volumes)-engine tables. This setting is applied at ClickHouse server start and can’t be changed in a user session.
1616
1617Possible values:
1618
1619- Any positive integer.
1620
1621Default value: 8.
1622
1623## background\_schedule\_pool\_size {#background_schedule_pool_size}
1624
1625Sets the number of threads performing background tasks for [replicated](../../engines/table-engines/mergetree-family/replication.md) tables, [Kafka](../../engines/table-engines/integrations/kafka.md) streaming, [DNS cache updates](../../operations/server-configuration-parameters/settings.md#server-settings-dns-cache-update-period). This setting is applied at ClickHouse server start and can’t be changed in a user session.
1626
1627Possible values:
1628
1629- Any positive integer.
1630
1631Default value: 16.
1632
1633## always\_fetch\_merged\_part {#always_fetch_merged_part}
1634
1635Prohibits data parts merging in [Replicated\*MergeTree](../../engines/table-engines/mergetree-family/replication.md)-engine tables.
1636
1637When merging is prohibited, the replica never merges parts and always downloads merged parts from other replicas. If there is no required data yet, the replica waits for it. CPU and disk load on the replica server decreases, but the network load on cluster increases. This setting can be useful on servers with relatively weak CPUs or slow disks, such as servers for backups storage.
1638
1639Possible values:
1640
1641- 0 — `Replicated*MergeTree`-engine tables merge data parts at the replica.
1642- 1 — `Replicated*MergeTree`-engine tables don’t merge data parts at the replica. The tables download merged data parts from other replicas.
1643
1644Default value: 0.
1645
1646**See Also**
1647
1648- [Data Replication](../../engines/table-engines/mergetree-family/replication.md)
1649
1650## background\_distributed\_schedule\_pool\_size {#background_distributed_schedule_pool_size}
1651
1652Sets the number of threads performing background tasks for [distributed](../../engines/table-engines/special/distributed.md) sends. This setting is applied at ClickHouse server start and can’t be changed in a user session.
1653
1654Possible values:
1655
1656- Any positive integer.
1657
1658Default value: 16.
1659
1660## validate\_polygons {#validate_polygons}
1661
1662Enables or disables throwing an exception in the [pointInPolygon](../../sql-reference/functions/geo/index.md#pointinpolygon) function, if the polygon is self-intersecting or self-tangent.
1663
1664Possible values:
1665
1666- 0 — Throwing an exception is disabled. `pointInPolygon` accepts invalid polygons and returns possibly incorrect results for them.
1667- 1 — Throwing an exception is enabled.
1668
1669Default value: 1.
1670
1671## transform\_null\_in {#transform_null_in}
1672
1673Enables equality of [NULL](../../sql-reference/syntax.md#null-literal) values for [IN](../../sql-reference/operators/in.md) operator.
1674
1675By default, `NULL` values can’t be compared because `NULL` means undefined value. Thus, comparison `expr = NULL` must always return `false`. With this setting `NULL = NULL` returns `true` for `IN` operator.
1676
1677Possible values:
1678
1679- 0 — Comparison of `NULL` values in `IN` operator returns `false`.
1680- 1 — Comparison of `NULL` values in `IN` operator returns `true`.
1681
1682Default value: 0.
1683
1684**Example**
1685
1686Consider the `null_in` table:
1687
1688``` text
1689┌──idx─┬─────i─┐
1690│ 1 │ 1 │
1691│ 2 │ NULL │
1692│ 3 │ 3 │
1693└──────┴───────┘
1694```
1695
1696Query:
1697
1698``` sql
1699SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 0;
1700```
1701
1702Result:
1703
1704``` text
1705┌──idx─┬────i─┐
1706│ 1 │ 1 │
1707└──────┴──────┘
1708```
1709
1710Query:
1711
1712``` sql
1713SELECT idx, i FROM null_in WHERE i IN (1, NULL) SETTINGS transform_null_in = 1;
1714```
1715
1716Result:
1717
1718``` text
1719┌──idx─┬─────i─┐
1720│ 1 │ 1 │
1721│ 2 │ NULL │
1722└──────┴───────┘
1723```
1724
1725**See Also**
1726
1727- [NULL Processing in IN Operators](../../sql-reference/operators/in.md#in-null-processing)
1728
1729## low\_cardinality\_max\_dictionary\_size {#low_cardinality_max_dictionary_size}
1730
1731Sets a maximum size in rows of a shared global dictionary for the [LowCardinality](../../sql-reference/data-types/lowcardinality.md) data type that can be written to a storage file system. This setting prevents issues with RAM in case of unlimited dictionary growth. All the data that can’t be encoded due to maximum dictionary size limitation ClickHouse writes in an ordinary method.
1732
1733Possible values:
1734
1735- Any positive integer.
1736
1737Default value: 8192.
1738
1739## low\_cardinality\_use\_single\_dictionary\_for\_part {#low_cardinality_use_single_dictionary_for_part}
1740
1741Turns on or turns off using of single dictionary for the data part.
1742
1743By default, ClickHouse server monitors the size of dictionaries and if a dictionary overflows then the server starts to write the next one. To prohibit creating several dictionaries set `low_cardinality_use_single_dictionary_for_part = 1`.
1744
1745Possible values:
1746
1747- 1 — Creating several dictionaries for the data part is prohibited.
1748- 0 — Creating several dictionaries for the data part is not prohibited.
1749
1750Default value: 0.
1751
1752## low\_cardinality\_allow\_in\_native\_format {#low_cardinality_allow_in_native_format}
1753
1754Allows or restricts using the [LowCardinality](../../sql-reference/data-types/lowcardinality.md) data type with the [Native](../../interfaces/formats.md#native) format.
1755
1756If usage of `LowCardinality` is restricted, ClickHouse server converts `LowCardinality`-columns to ordinary ones for `SELECT` queries, and convert ordinary columns to `LowCardinality`-columns for `INSERT` queries.
1757
1758This setting is required mainly for third-party clients which don’t support `LowCardinality` data type.
1759
1760Possible values:
1761
1762- 1 — Usage of `LowCardinality` is not restricted.
1763- 0 — Usage of `LowCardinality` is restricted.
1764
1765Default value: 1.
1766
1767## allow\_suspicious\_low\_cardinality\_types {#allow_suspicious_low_cardinality_types}
1768
1769Allows or restricts using [LowCardinality](../../sql-reference/data-types/lowcardinality.md) with data types with fixed size of 8 bytes or less: numeric data types and `FixedString(8_bytes_or_less)`.
1770
1771For small fixed values using of `LowCardinality` is usually inefficient, because ClickHouse stores a numeric index for each row. As a result:
1772
1773- Disk space usage can rise.
1774- RAM consumption can be higher, depending on a dictionary size.
1775- Some functions can work slower due to extra coding/encoding operations.
1776
1777Merge times in [MergeTree](../../engines/table-engines/mergetree-family/mergetree.md)-engine tables can grow due to all the reasons described above.
1778
1779Possible values:
1780
1781- 1 — Usage of `LowCardinality` is not restricted.
1782- 0 — Usage of `LowCardinality` is restricted.
1783
1784Default value: 0.
1785
1786## min\_insert\_block\_size\_rows\_for\_materialized\_views {#min-insert-block-size-rows-for-materialized-views}
1787
1788Sets minimum number of rows in block which can be inserted into a table by an `INSERT` query. Smaller-sized blocks are squashed into bigger ones. This setting is applied only for blocks inserted into [materialized view](../../sql-reference/statements/create/view.md). By adjusting this setting, you control blocks squashing while pushing to materialized view and avoid excessive memory usage.
1789
1790Possible values:
1791
1792- Any positive integer.
1793- 0 — Squashing disabled.
1794
1795Default value: 1048576.
1796
1797**See Also**
1798
1799- [min\_insert\_block\_size\_rows](#min-insert-block-size-rows)
1800
1801## min\_insert\_block\_size\_bytes\_for\_materialized\_views {#min-insert-block-size-bytes-for-materialized-views}
1802
1803Sets minimum number of bytes in block which can be inserted into a table by an `INSERT` query. Smaller-sized blocks are squashed into bigger ones. This setting is applied only for blocks inserted into [materialized view](../../sql-reference/statements/create/view.md). By adjusting this setting, you control blocks squashing while pushing to materialized view and avoid excessive memory usage.
1804
1805Possible values:
1806
1807- Any positive integer.
1808- 0 — Squashing disabled.
1809
1810Default value: 268435456.
1811
1812**See also**
1813
1814- [min\_insert\_block\_size\_bytes](#min-insert-block-size-bytes)
1815
1816## output\_format\_pretty\_grid\_charset {#output-format-pretty-grid-charset}
1817
1818Allows to change a charset which is used for printing grids borders. Available charsets are following: UTF-8, ASCII.
1819
1820**Example**
1821
1822``` text
1823SET output_format_pretty_grid_charset = 'UTF-8';
1824SELECT * FROM a;
1825┌─a─┐
1826│ 1 │
1827└───┘
1828
1829SET output_format_pretty_grid_charset = 'ASCII';
1830SELECT * FROM a;
1831+-a-+
1832| 1 |
1833+---+
1834```
1835## optimize_read_in_order {#optimize_read_in_order}
1836
1837Enables [ORDER BY](../../sql-reference/statements/select/order-by.md#optimize_read_in_order) optimization in [SELECT](../../sql-reference/statements/select/index.md) queries for reading data from [MergeTree](../../engines/table-engines/mergetree-family/mergetree.md) tables.
1838
1839Possible values:
1840
1841- 0 — `ORDER BY` optimization is disabled.
1842- 1 — `ORDER BY` optimization is enabled.
1843
1844Default value: `1`.
1845
1846**See Also**
1847
1848- [ORDER BY Clause](../../sql-reference/statements/select/order-by.md#optimize_read_in_order)
1849
1850## mutations_sync {#mutations_sync}
1851
1852Allows to execute `ALTER TABLE ... UPDATE|DELETE` queries ([mutations](../../sql-reference/statements/alter/index.md#mutations)) synchronously.
1853
1854Possible values:
1855
1856- 0 - Mutations execute asynchronously.
1857- 1 - The query waits for all mutations to complete on the current server.
1858- 2 - The query waits for all mutations to complete on all replicas (if they exist).
1859
1860Default value: `0`.
1861
1862**See Also**
1863
1864- [Synchronicity of ALTER Queries](../../sql-reference/statements/alter/index.md#synchronicity-of-alter-queries)
1865- [Mutations](../../sql-reference/statements/alter/index.md#mutations)
1866
1867## ttl_only_drop_parts {#ttl_only_drop_parts}
1868
1869Enables or disables complete dropping of data parts where all rows are expired in [MergeTree](../../engines/table-engines/mergetree-family/mergetree.md) tables.
1870
1871When `ttl_only_drop_parts` is disabled (by default), the ClickHouse server only deletes expired rows according to their TTL.
1872
1873When `ttl_only_drop_parts` is enabled, the ClickHouse server drops a whole part when all rows in it are expired.
1874
1875Dropping whole parts instead of partial cleaning TTL-d rows allows to have shorter `merge_with_ttl_timeout` times and lower impact on system performance.
1876
1877Possible values:
1878
1879- 0 — Complete dropping of data parts is disabled.
1880- 1 — Complete dropping of data parts is enabled.
1881
1882Default value: `0`.
1883
1884**See Also**
1885
1886- [CREATE TABLE query clauses and settings](../../engines/table-engines/mergetree-family/mergetree.md#mergetree-query-clauses) (`merge_with_ttl_timeout` setting)
1887- [Table TTL](../../engines/table-engines/mergetree-family/mergetree.md#mergetree-table-ttl)
1888
1889## lock_acquire_timeout {#lock_acquire_timeout}
1890
1891Defines how many seconds locking request waits before failing.
1892
1893Locking timeout is used to protect from deadlocks while executing read/write operations with tables. When timeout expires and locking request fails, the ClickHouse server throws an exeption "Locking attempt timed out! Possible deadlock avoided. Client should retry." with error code `DEADLOCK_AVOIDED`.
1894
1895Possible values:
1896
1897- Positive integer (in seconds).
1898- 0 — No locking timeout.
1899
1900Default value: `120` seconds.
1901
1902[Original article](https://clickhouse.tech/docs/en/operations/settings/settings/) <!-- hide -->