system.merge_tree_settings mostra as configurações do MergeTree definidas globalmente.
As configurações do MergeTree podem ser definidas na seção merge_tree do arquivo de configuração do servidor ou especificadas individualmente para cada tabela MergeTree na
cláusula SETTINGS da instrução CREATE TABLE.
Exemplo de como personalizar a configuração max_suspicious_broken_parts:
Configure o padrão para todas as tabelas MergeTree no arquivo de configuração do servidor:
ALTER TABLE ... MODIFY SETTING:
Configurações do MergeTree
adaptive_write_buffer_initial_size
add_implicit_sign_column_constraint_for_collapsing_engine
sign de uma tabela CollapsingMergeTree
ou VersionedCollapsingMergeTree para permitir apenas valores válidos (1 e -1).
add_minmax_index_for_block_number_column
_block_number.
Requer enable_block_number_column = 1 para ter efeito. O índice é criado somente durante mesclagens,
não durante inserts: no momento do insert, o número do bloco é provisório e indexaria um valor constante.
add_minmax_index_for_block_offset_column
_block_offset.
Requer enable_block_offset_column = 1 para ter efeito. O índice é criado apenas durante mesclagens,
não durante inserções.
add_minmax_index_for_numeric_columns
add_minmax_index_for_string_columns
add_minmax_index_for_temporal_columns
allow_coalescing_columns_in_partition_or_order_key
allow_commit_order_projection
_block_number e _block_offset, preservando a ordem original de inserção durante as operações de mesclagem.
Requer que enable_block_number_column e enable_block_offset_column estejam habilitados.
allow_experimental_replacing_merge_with_cleanup
is_deleted. Quando habilitada, essa opção permite usar OPTIMIZE ... FINAL CLEANUP para
mesclar manualmente todas as partes de uma partição em uma única parte e remover
quaisquer linhas excluídas.
Também permite habilitar a execução automática dessas mesclagens em segundo plano
com as configurações min_age_to_force_merge_seconds,
min_age_to_force_merge_on_partition_only e
enable_replacing_merge_with_cleanup_for_min_age_to_force_merge.
allow_experimental_reverse_key
allow_floating_point_partition_key
0— Chave de partição com ponto flutuante não permitida.1— Chave de partição com ponto flutuante permitida.
allow_nullable_key
allow_part_offset_column_in_projections
allow_reduce_blocking_parts_task
allow_remote_fs_zero_copy_replication
allow_summing_columns_in_partition_or_order_key
allow_suspicious_indices
allow_tuple_element_aggregation
allow_vertical_merges_from_compact_to_wide_parts
alter_column_secondary_index_mode
ALTER que modificam colunas cobertas por índices secundários devem ser permitidos e qual ação deve ser tomada caso
sejam permitidos. Por padrão, esses comandos ALTER são permitidos, e os índices são reconstruídos.
Valores possíveis:
rebuild(padrão): Reconstrói todos os índices secundários afetados pela coluna no comandoALTER.throw: Impede qualquerALTERde colunas cobertas por índices secundários explícitos, gerando uma exceção. Índices implícitos ficam fora dessa restrição e serão reconstruídos.drop: Remove os índices secundários dependentes. As novas partes não terão os índices, exigindoMATERIALIZE INDEXpara recriá-los.compatibility: Corresponde ao comportamento original:throwemALTER ... MODIFY COLUMNerebuildemALTER ... UPDATE/DELETE.ignore: Destina-se a uso por especialistas. Deixa os índices em um estado inconsistente, o que pode permitir resultados de consulta incorretos.
always_fetch_merged_part
- true, false
always_use_copy_instead_of_hardlinks
apply_patches_on_merge
assign_part_uuids
async_block_ids_cache_update_wait_ms
async_insert
auto_statistics_types
background_task_preferred_step_execution_time_ms
cache_populated_by_fetch
Esta configuração se aplica apenas ao ClickHouse Cloud.
cache_populated_by_fetch está desativada (configuração padrão), novas partes de dados
são carregadas no cache do sistema de arquivos apenas quando uma consulta é executada e precisa
dessas partes.
Se estiver ativada, cache_populated_by_fetch fará com que todos os nós carreguem
novas partes de dados do armazenamento para o cache do sistema de arquivos sem exigir a execução de uma consulta
para acionar esse carregamento.
Veja também
cache_populated_by_fetch_filename_regexp
Esta configuração se aplica apenas ao ClickHouse Cloud.
cache_populated_by_fetch estiver habilitado).
check_delay_period
check_sample_column_is_correct
UInt8, UInt16,
UInt32, UInt64.
Valores possíveis:
true— A verificação está habilitada.false— A verificação é desabilitada na criação da tabela.
true.
Por padrão, o servidor ClickHouse verifica, na criação da tabela, o tipo de dados de
uma coluna de amostragem ou de uma expressão de amostragem. Se você já tiver tabelas com
uma expressão de amostragem incorreta e não quiser que o servidor gere uma exceção
durante a inicialização, defina check_sample_column_is_correct como false.
clean_deleted_rows
cleanup_delay_period
cleanup_delay_period_random_add
cleanup_thread_preferred_points_per_iteration
cleanup_threads
clone_replica_zookeeper_create_get_part_batch_size
columns_and_secondary_indices_sizes_lazy_calculation
columns_to_prewarm_mark_cache
compact_parts_max_bytes_to_buffer
compact_parts_max_granules_to_buffer
compact_parts_merge_max_bytes_to_prefetch_part
compatibility_allow_sampling_expression_not_in_primary_key
compress_marks
compress_per_column_in_compact_parts
compress_primary_key
concurrent_part_removal_threshold
concurrent_part_removal_threshold_for_remote_disk
concurrent_part_removal_threshold, mas usado quando pelo
menos uma parte sendo removida está armazenada em um disco remoto. O valor padrão é menor
porque cada remoção de parte no armazenamento remoto normalmente exige uma ida e volta na
rede (por exemplo, um DELETE HTTP por parte no armazenamento de objetos), então uma
remoção em série de até mesmo 100 partes pode fazer um DROP TABLE ficar bloqueado por dezenas de
segundos.
deduplicate_merge_projection_mode
OPTIMIZE DEDUPLICATE,
mas tem efeito sobre todos os membros da família MergeTree. Assim como a
opção lightweight_mutation_projection_mode, ela também é em nível de part.
Valores possíveis:
ignorethrowdroprebuild
default_compression_codec
- Codec de compressão definido para a coluna na declaração da tabela
- Codec de compressão definido em
default_compression_codec(esta configuração) - Codec de compressão padrão definido nas configurações de
compressionValor padrão: uma string vazia (não definido).
detach_not_byte_identical_parts
MergeTree com
replicação de dados habilitada.
Valores possíveis:
0— As partes são removidas.1— As partes são desanexadas.
detach_old_local_parts_when_cloning_replica
truefalse
disable_detach_partition_for_zero_copy_replication
disable_fetch_partition_for_zero_copy_replication
disable_freeze_partition_for_zero_copy_replication
disco
distributed_index_analysis_min_indexes_bytes_to_activate
distributed_index_analysis_min_parts_to_activate
dynamic_serialization_version
v1v2v3
enable_block_number_column
enable_block_offset_column
_block_offset durante as mesclagens.
enable_index_granularity_compression
enable_max_bytes_limit_for_min_age_to_force_merge
min_age_to_force_merge_seconds e
min_age_to_force_merge_on_partition_only devem respeitar a configuração
max_bytes_to_merge_at_max_space_in_pool.
Valores possíveis:
truefalse
enable_mixed_granularity_parts
index_granularity_bytes. Antes da versão 19.11, havia apenas a
configuração index_granularity para restringir o tamanho do grânulo. A
configuração index_granularity_bytes melhora o desempenho do ClickHouse ao
selecionar dados de tabelas com linhas grandes (dezenas ou centenas de megabytes).
Se você tiver tabelas com linhas grandes, poderá habilitar essa configuração nessas tabelas
para melhorar a eficiência das consultas SELECT.
enable_replacing_merge_with_cleanup_for_min_age_to_force_merge
CLEANUP devem ser usadas para ReplacingMergeTree ao mesclar partições
até uma única parte. Requer que allow_experimental_replacing_merge_with_cleanup,
min_age_to_force_merge_seconds e min_age_to_force_merge_on_partition_only
estejam habilitados.
Valores possíveis:
truefalse
enable_the_endpoint_id_with_zookeeper_name_prefix
enable_vertical_merge_algorithm
enforce_index_structure_match_on_partition_manipulation
ATTACH/MOVE/REPLACE PARTITION), os índices e as
projeções deverão ser idênticos entre as tabelas de origem e de destino. Caso
contrário, a tabela de destino poderá ter um superconjunto dos índices e das
projeções da tabela de origem.
escape_index_filenames
escape_variant_subcolumn_filenames
exclude_deleted_rows_for_part_size_in_merge
DELETE FROM) será usada ao selecionar
partes para mesclagem. Observe que esse comportamento só é acionado para partes de dados
afetadas por DELETE FROM executado depois que esta configuração for habilitada.
Valores possíveis:
truefalse
- load_existing_rows_count_for_old_parts configuração
exclude_materialize_skip_indexes_on_merge
execute_merges_on_single_replica_time_threshold
- Qualquer inteiro positivo.
fault_probability_after_part_commit
fault_probability_before_part_commit
finished_mutations_to_keep
force_read_through_cache_for_merges
fsync_after_insert
fsync_part_directory
in_memory_parts_enable_wal
in_memory_parts_insert_sync
inactive_parts_to_delay_insert
inactive_parts_to_delay_insert, um INSERT será
retardado artificialmente.
Valores possíveis:
- Qualquer número inteiro positivo.
inactive_parts_to_throw_insert
inactive_parts_to_throw_insert, o INSERT é interrompido com o
seguinte erro:
“Muitas partes inativas (N). A limpeza das partes está ocorrendo de forma significativamente mais lenta do que os inserts” exceção.”Valores possíveis:
- Qualquer número inteiro positivo.
index_granularity
index_granularity_bytes
0 (não recomendado).
initialization_retry_period
kill_delay_period
kill_delay_period_random_add
kill_threads
lightweight_mutation_projection_mode
DELETE não funciona em tabelas com
projeções. Isso acontece porque linhas em uma projeção podem ser afetadas por uma
operação DELETE. Por isso, o valor padrão é throw. No entanto, esta
opção pode alterar esse comportamento. Com o valor drop ou rebuild,
as exclusões passarão a funcionar com projeções. drop excluirá a projeção, então
isso pode ser rápido na consulta atual, já que a projeção é removida, mas mais lento em
consultas futuras, pois não haverá nenhuma projeção anexada. rebuild reconstruirá a
projeção, o que pode afetar o desempenho da consulta atual, mas
pode acelerar consultas futuras. Um ponto positivo é que essas opções
funcionam apenas no nível da parte, o que significa que projeções na parte que não
for afetada permanecerão intactas, em vez de acionar alguma ação como
drop ou rebuild.
Valores possíveis:
throwdroprebuild
load_existing_rows_count_for_old_parts
truefalse
- configuração exclude_deleted_rows_for_part_size_in_merge
lock_acquire_timeout_for_background_operations
map_buckets_coefficient
sqrt e linear de map_buckets_strategy para calcular o número de buckets com base no tamanho médio do map.
Para a estratégia sqrt: round(map_buckets_coefficient * sqrt(avg_map_size)).
Para a estratégia linear: round(map_buckets_coefficient * avg_map_size).
Ignorado quando map_buckets_strategy é constant.
map_buckets_min_avg_size
with_buckets.
Se o tamanho médio do map for menor que esse valor, será usado um único bucket, independentemente das outras configurações de bucket.
Um valor de 0 desativa esse limite e sempre aplica a estratégia de bucketing.
Essa configuração é útil para evitar a sobrecarga da serialização em buckets para maps pequenos, em que o benefício é insignificante.
map_buckets_strategy
with_buckets de Map, com base no tamanho médio do Map.
Valores possíveis:
- constant — Sempre usa max_buckets_in_map como número de buckets, independentemente do tamanho médio do Map.
- sqrt — Usa
round(map_buckets_coefficient * sqrt(avg_map_size))como número de buckets, limitado ao intervalo[1, max_buckets_in_map]. - linear — Usa
round(map_buckets_coefficient * avg_map_size)como número de buckets, limitado ao intervalo[1, max_buckets_in_map].
map_serialization_version
Map.
Valores possíveis:
- basic — Usa a serialização padrão de
Map. - with_buckets — Divide as chaves em buckets durante a serialização. O uso de buckets melhora a leitura de chaves individuais no Map.
with_buckets é determinado por max_buckets_in_map e map_buckets_strategy.
map_serialization_version_for_zero_level_parts
Map em partes de nível zero criadas durante as inserções.
Isso pode ser útil para manter a serialização basic nas partes de nível zero, a fim de evitar
queda de desempenho durante as inserções, enquanto se usa with_buckets para partes mescladas.
marks_compress_block_size
marks_compression_codec
materialize_projections_on_insert
materialize_projections_on_merge
materialize_projections_on_insert = 0), para que a parte mesclada passe a ter a projeção.
As mesclagens ainda combinam apenas partes que compartilham o mesmo conjunto de projeções. Para preencher uma projeção em todas as partes existentes,
use um MATERIALIZE PROJECTION explícito. As projeções
também são criadas durante INSERTs com materialize_projections_on_insert.
materialize_skip_indexes_on_merge
materialize_statistics_on_merge
materialize_ttl_recalculate_only
max_avg_part_size_for_too_many_parts
max_buckets_in_map
Map. Funciona com a serialização with_buckets de Map.
O número efetivo de buckets é determinado por map_buckets_strategy.
O valor máximo permitido é 256.
max_bytes_to_merge_at_max_space_in_pool
- Qualquer inteiro não negativo.
max_bytes_to_merge_at_max_space_in_pool.
As mesclagens iniciadas por OPTIMIZE FINAL
ignoram max_bytes_to_merge_at_max_space_in_pool (apenas o espaço livre em disco
é levado em consideração).
max_bytes_to_merge_at_min_space_in_pool
- Qualquer inteiro positivo.
max_bytes_to_merge_at_min_space_in_pool define o tamanho total máximo das
partes que podem ser mescladas apesar da falta de espaço disponível em disco (no pool).
Isso é necessário para reduzir o número de partes pequenas e a chance de erros
Too many parts.
As mesclagens reservam espaço em disco equivalente ao dobro do tamanho total das partes mescladas.
Assim, com uma pequena quantidade de espaço livre em disco, pode ocorrer uma situação
em que há espaço livre, mas esse espaço já está reservado por grandes mesclagens em andamento,
de modo que outras mesclagens não consigam começar, e o número de partes pequenas cresce
a cada inserção.
max_cleanup_delay_period
max_compress_block_size
max_concurrent_queries
max_concurrent_queries.
Valores possíveis:
- Inteiro positivo.
0— Sem limite.
0 (sem limite).
Exemplo
max_delay_to_insert
INSERT caso o
número de partes ativas em uma única partição exceda o
valor de parts_to_delay_insert.
Valores possíveis:
- Qualquer inteiro positivo.
INSERT é calculado pela fórmula:
INSERT é
atrasado em pow( 1 * 1000, (1 + 299 - 150) / (300 - 150) ) = 1000
milissegundos.
A partir da versão 23.1, a fórmula foi alterada para:
INSERT será adiado em max( 10, 1 * 1000 * (224 - 150 + 1) / (300 - 150) ) = 500 milissegundos.
max_delay_to_mutate_ms
max_digestion_size_per_segment
max_file_name_length
replace_long_file_name_to_hash estiver habilitada.
O valor dessa configuração não inclui o comprimento da extensão do arquivo. Portanto,
recomenda-se defini-la abaixo do comprimento máximo do nome de arquivo (geralmente 255
bytes), com alguma margem para evitar erros no sistema de arquivos.
max_files_to_modify_in_alter_columns
- Qualquer número inteiro positivo.
max_files_to_remove_in_alter_columns
- Qualquer número inteiro positivo.
max_merge_delayed_streams_for_parallel_write
max_merge_selecting_sleep_ms
max_number_of_merges_with_ttl_in_pool
max_number_of_mutations_for_replica
max_part_loading_threads
max_part_removal_threads
max_partitions_to_read
- Qualquer número inteiro positivo.
max_parts_in_total
max_parts_in_total, o INSERT será interrompido com a exceção Too many parts (N).
Valores possíveis:
- Qualquer número inteiro positivo.
max_parts_to_merge_at_once
max_postpone_time_for_failed_mutations_ms
max_postpone_time_for_failed_replicated_fetches_ms
max_postpone_time_for_failed_replicated_merges_ms
max_postpone_time_for_failed_replicated_tasks_ms
max_projections
max_replicated_fetches_network_bandwidth
max_replicated_fetches_network_bandwidth_for_server,
que é aplicada ao servidor.
Você pode limitar tanto a rede do servidor quanto a rede de uma tabela específica, mas, para
isso, o valor da configuração no nível da tabela deve ser menor que o
valor no nível do servidor. Caso contrário, o servidor considera apenas a
configuração max_replicated_fetches_network_bandwidth_for_server.
A configuração não é aplicada com total precisão.
Valores possíveis:
- Inteiro positivo.
0— Ilimitado.
0.
Uso
Pode ser usada para limitar a velocidade durante a replicação de dados ao adicionar ou substituir
novos nós.
max_replicated_logs_to_keep
- Qualquer número inteiro positivo.
max_replicated_merges_in_queue
max_replicated_merges_with_ttl_in_queue
max_replicated_mutations_in_queue
max_replicated_sends_network_bandwidth
max_replicated_sends_network_bandwidth_for_server,
que é aplicada ao servidor.
Você pode limitar tanto a rede do servidor quanto a rede de uma tabela específica, mas,
para isso, o valor da configuração no nível da tabela deve ser menor que
o valor no nível do servidor. Caso contrário, o servidor considera apenas a
configuração max_replicated_sends_network_bandwidth_for_server.
A configuração não é aplicada com total precisão.
Valores possíveis:
- Inteiro positivo.
0— Ilimitado.
max_suspicious_broken_parts
max_suspicious_broken_parts, a exclusão automática não será permitida.
Valores possíveis:
- Qualquer número inteiro positivo.
max_suspicious_broken_parts_bytes
- Qualquer número inteiro positivo.
max_uncompressed_bytes_in_patches
merge_max_block_size
- Qualquer inteiro positivo.
merge_max_block_size linhas e, em seguida,
mescla e grava o resultado em uma nova parte. O bloco lido é colocado na RAM,
portanto merge_max_block_size afeta a quantidade de RAM necessária para a mesclagem.
Assim, as mesclagens podem consumir uma grande quantidade de RAM em tabelas com linhas muito largas
(se o tamanho médio da linha for 100kb, então, ao mesclar 10 partes,
(100kb * 10 * 8192) = ~ 8GB de RAM). Ao diminuir merge_max_block_size,
você pode reduzir a quantidade de RAM necessária para uma mesclagem, mas ela ficará mais lenta.
merge_max_block_size_bytes
index_granularity_bytes.
merge_max_bytes_to_prewarm_cache
merge_max_dynamic_subcolumns_in_compact_part
merge_max_dynamic_subcolumns_in_wide_part
merge_selecting_sleep_ms
merge_selecting_sleep_slowdown_factor
merge_selector_algorithm
merge_selector_base
merge_selector_blurry_base_scale_factor
merge_selector_enable_heuristic_to_lower_max_parts_to_merge_at_once
merge_selector_enable_heuristic_to_remove_small_parts_at_right
merge_selector_heuristic_to_lower_max_parts_to_merge_at_once_exponent
merge_selector_window_size
merge_total_max_bytes_to_prewarm_cache
merge_tree_clear_old_broken_detached_parts_ttl_timeout_seconds
merge_tree_clear_old_parts_interval_seconds
- Qualquer número inteiro positivo.
merge_tree_clear_old_temporary_directories_interval_seconds
- Qualquer número inteiro positivo.
merge_tree_enable_clear_old_broken_detached
merge_with_recompression_ttl_timeout
merge_with_ttl_timeout
merge_workload
workload para
as mesclagens em segundo plano desta tabela. Se não for especificado (cadeia vazia), então
é usada a configuração do servidor merge_workload.
Veja também
min_absolute_delay_to_close
min_age_to_force_merge_on_partition_only
min_age_to_force_merge_seconds deve ser aplicado apenas à partição como um todo,
e não a um subconjunto.
Por padrão, ignora a configuração max_bytes_to_merge_at_max_space_in_pool (veja
enable_max_bytes_limit_for_min_age_to_force_merge).
Valores possíveis:
- true, false
min_age_to_force_merge_seconds
min_age_to_force_merge_seconds.
Por padrão, ignora a configuração max_bytes_to_merge_at_max_space_in_pool
(consulte enable_max_bytes_limit_for_min_age_to_force_merge).
Valores possíveis:
- Inteiro positivo.
min_bytes_for_compact_part
min_bytes_for_full_part_storage
min_bytes_for_wide_part
Wide. Você pode definir uma delas, as duas ou nenhuma dessas configurações.
min_bytes_to_prewarm_caches
min_bytes_to_rebalance_partition_over_jbod
- Inteiro positivo.
0— O balanceamento está desabilitado.
min_bytes_to_rebalance_partition_over_jbod não deve
ser menor que o valor de
max_bytes_to_merge_at_max_space_in_pool
/ 1024. Caso contrário, o ClickHouse lança uma exceção.
min_columns_to_activate_adaptive_write_buffer
- 0 - ilimitado
- 1 - sempre ativado
min_compress_block_size
min_compressed_bytes_to_fsync_after_fetch
min_compressed_bytes_to_fsync_after_merge
fsync na parte após o merge (0 - desabilitado)
min_delay_to_insert_ms
min_delay_to_mutate_ms
min_free_disk_bytes_to_perform_insert
min_free_disk_bytes_to_perform_insert, uma exceção será lançada e a
inserção não será executada. Observe que esta configuração:
- leva em conta a configuração
keep_free_space_bytes. - não leva em conta a quantidade de dados que será gravada pela
operação
INSERT. - só é verificada se um número positivo (diferente de zero) de bytes for especificado
- Qualquer inteiro positivo.
Se
min_free_disk_bytes_to_perform_insert e min_free_disk_ratio_to_perform_insert
forem especificados, o ClickHouse considerará o valor que permitirá realizar
inserções com uma quantidade maior de memória livre.min_free_disk_ratio_to_perform_insert
INSERT. Deve ser um
valor de ponto flutuante entre 0 e 1. Observe que esta configuração:
- leva em consideração a configuração
keep_free_space_bytes. - não leva em consideração a quantidade de dados que será gravada pela
operação
INSERT. - só é verificada se uma proporção positiva (não zero) for especificada
- Float, 0.0 - 1.0
min_free_disk_ratio_to_perform_insert e
min_free_disk_bytes_to_perform_insert forem especificadas, o ClickHouse se baseará
no valor que permitir realizar inserts com uma maior quantidade de
espaço livre em disco.
min_index_granularity_bytes
index_granularity_bytes
muito baixo.
min_level_for_full_part_storage
min_level_for_wide_part
Wide em vez de Compact.
min_marks_to_honor_max_concurrent_queries
As consultas ainda serão limitadas por outras configurações de
max_concurrent_queries.- Inteiro positivo.
0— Desativado (o limite demax_concurrent_queriesnão se aplica a nenhuma consulta).
min_merge_bytes_to_use_direct_io
min_merge_bytes_to_use_direct_io bytes, o ClickHouse lê e grava os
dados no disco de armazenamento usando a interface de E/S direta (opção O_DIRECT).
Se min_merge_bytes_to_use_direct_io = 0, a E/S direta será desabilitada.
min_parts_to_merge_at_once
min_relative_delay_to_close
min_relative_delay_to_measure
min_relative_delay_to_yield_leadership
min_replicated_logs_to_keep
- Qualquer número inteiro positivo.
min_rows_for_compact_part
min_rows_for_full_part_storage
min_rows_for_wide_part
Wide em vez de Compact.
min_rows_to_fsync_after_merge
fsync na parte após a mesclagem (0 - desabilitado)
mutation_workload
workload para
as mutações em segundo plano desta tabela. Se não for especificado (string vazia),
será usada a configuração do servidor mutation_workload.
Veja também
non_replicated_deduplication_window
- Qualquer número inteiro positivo.
0(desabilita a desduplicação).
notify_newest_block_number
nullable_serialization_version
Nullable(T).
Valores possíveis:
-
basic — Usa a serialização padrão para
Nullable(T). -
allow_sparse — Permite que
Nullable(T)use codificação esparsa.
number_of_free_entries_in_pool_to_execute_mutation
- Qualquer número inteiro positivo.
number_of_free_entries_in_pool_to_execute_mutation
deve ser menor que o valor de background_pool_size
- background_merges_mutations_concurrency_ratio. Caso contrário, o ClickHouse lançará uma exceção.
number_of_free_entries_in_pool_to_execute_optimize_entire_partition
min_age_to_force_merge_seconds é definido e
min_age_to_force_merge_on_partition_only é habilitado). Isso serve para deixar threads livres
para merges regulares e evitar “Too many parts”.
Valores possíveis:
- Inteiro positivo.
number_of_free_entries_in_pool_to_execute_optimize_entire_partition
deve ser menor que o valor de
background_pool_size
- background_merges_mutations_concurrency_ratio. Caso contrário, ClickHouse lança uma exceção.
number_of_free_entries_in_pool_to_lower_max_size_of_merge
- Qualquer número inteiro positivo.
number_of_mutations_to_delay
number_of_mutations_to_throw
number_of_partitions_to_consider_for_merge
object_serialization_version
v1v2v3
v3 oferece suporte à alteração da versão de serialização dos dados compartilhados.
O número de buckets da serialização de dados compartilhados em JSON em partes compactas. Funciona com as serializações de dados compartilhados map_with_buckets e advanced.
O valor máximo permitido é 256.
O número de buckets usados na serialização de dados compartilhados em JSON em partes Wide. Funciona com as serializações de dados compartilhados map_with_buckets e advanced.
O valor máximo permitido é 256.
Versão de serialização para dado compartilhado no tipo de dado JSON.
Valores possíveis:
map- armazena dado compartilhado comoMap(String, String)map_with_buckets- armazena dado compartilhado como várias colunasMap(String, String)separadas. O uso de buckets melhora a leitura de caminhos individuais de dado compartilhado.advanced- serialização especial de dado compartilhado projetada para melhorar significativamente a leitura de caminhos individuais de dado compartilhado. Observe que essa serialização aumenta o tamanho de armazenamento de dado compartilhado em disco, porque armazenamos muitas informações adicionais.
map_with_buckets e advanced é determinado pelas configurações
object_shared_data_buckets_for_compact_part/object_shared_data_buckets_for_wide_part.
Esta configuração permite especificar diferentes versões de serialização dos
dados compartilhados no tipo JSON para partes de nível zero criadas durante inserções.
Recomenda-se não usar a serialização de dados compartilhados advanced para partes de nível zero, pois isso pode aumentar
significativamente o tempo de inserção.
old_parts_lifetime
- Qualquer número inteiro positivo.
old_parts_lifetime segundos.
As partes inativas são removidas se não estiverem sendo usadas por consultas em execução, ou seja, se
o refcount da parte for 1.
fsync não é chamado para novas partes, portanto, por algum tempo, as novas partes existem apenas
na RAM do servidor (cache do SO). Se o servidor for reiniciado inesperadamente, as novas
partes podem ser perdidas ou danificadas. Para proteger os dados, as partes inativas não são excluídas
imediatamente.
Durante a inicialização, o ClickHouse verifica a integridade das partes. Se a parte
mesclada estiver danificada, o ClickHouse devolve as partes inativas à lista de partes ativas
e depois as mescla novamente. Em seguida, a parte danificada é renomeada (o prefixo broken_
é adicionado) e movida para a pasta detached. Se a parte mesclada não estiver
danificada, então as partes inativas originais são renomeadas (o prefixo ignored_
é adicionado) e movidas para a pasta detached.
O valor padrão de dirty_expire_centisecs (uma configuração do kernel Linux) é de 30
segundos (o tempo máximo em que os dados gravados ficam armazenados apenas na RAM), mas, sob
carga intensa no sistema de disco, os dados podem ser gravados bem mais tarde. Experimentalmente,
foi escolhido o valor de 480 segundos para old_parts_lifetime, período durante o qual
uma nova parte tem gravação garantida em disco.
optimize_row_order
DateTime64, se beneficiem dessa configuração.
packed_skip_index_max_bytes
skp_idx.packed por parte, em vez de ser gravado como um arquivo separado skp_idx_<name>.idx2 / .mrk2.
Subfluxos maiores que isso permanecem no layout legado por arquivo. A decisão é
tomada independentemente por subfluxo no momento da gravação, portanto uma única parte pode ter índices pequenos
(por exemplo, minmax) empacotados e grandes (por exemplo, um bloom_filter pesado) gravados por arquivo. Defina como 0
para desabilitar totalmente o empacotamento (padrão).
Cada subfluxo de skip-index, na prática, consiste em um arquivo de dados e um arquivo de marcas; ambos ficam em buffer
na memória até o limiar antes que a decisão de spill seja tomada. Portanto, a memória de pico durante
a gravação escala com 2 * packed_skip_index_max_bytes * (number of substreams that stay below the threshold).
Índices de texto completo não são compatíveis com esta configuração e nunca são empacotados.
O empacotamento reduz a pressão sobre os inodes quando muitos índices de skipping são definidos em uma tabela (por exemplo,
com add_minmax_index_for_numeric_columns).
O formato em disco é autodescritivo: os leitores detectam skp_idx.packed e leem subfluxos empacotados
a partir dele de forma transparente. Alterar esta configuração afeta apenas partes recém-gravadas;
as partes existentes mantêm o layout que tinham no momento da gravação.
Limitação conhecida: system.data_skipping_indices.data_uncompressed_bytes e
system.parts.secondary_indices_uncompressed_bytes reportam o tamanho comprimido para subfluxos empacotados
(o índice do arquivo não armazena tamanhos descomprimidos). Isso é apenas cosmético no
monitoramento, com uma consequência funcional:
distributed_index_analysis_min_indexes_bytes_to_activate compara com
data_uncompressed, portanto um índice empacotado que comprime bem (set ou bloom_filter em
strings) pode não ultrapassar o limiar de ativação, mesmo que o tamanho real descomprimido ultrapassasse esse limite.
O fallback é o plano de consulta normal, não um resultado incorreto.
part_minmax_index_columns
partition_key_only— apenas as colunas da chave de partição são rastreadas.with_block_number_offset— colunas da chave de partição mais as colunas virtuais persistidas_block_numbere_block_offset. Habilita o pruning em nível de parte por essas colunas.
part_moves_between_shards_delay_seconds
part_moves_between_shards_enable
parts_to_delay_insert
parts_to_delay_insert, um INSERT será artificialmente retardado.
Valores possíveis:
- Qualquer inteiro positivo.
INSERT demore mais (adiciona um ‘sleep’) para que o
processo de mesclagem em segundo plano consiga mesclar as partes mais rapidamente do que elas são adicionadas.
parts_to_throw_insert
parts_to_throw_insert, o INSERT será interrompido com a exceção Too many parts (N). Merges are processing significantly slower than inserts.
Valores possíveis:
- Qualquer inteiro positivo.
SELECT, é necessário
minimizar o número de partes processadas; consulte Merge Tree.
Antes da versão 23.6, essa configuração estava definida como 300. Você pode definir um
valor mais alto; isso reduzirá a probabilidade do erro Too many parts,
mas, ao mesmo tempo, o desempenho de SELECT pode ser degradado. Além disso, em caso
de problema de mesclagem (por exemplo, devido a espaço em disco insuficiente), você
só o perceberá mais tarde do que com o valor original de 300.
prefer_fetch_merged_part_size_threshold
prefer_fetch_merged_part_time_threshold, será preferível buscar a parte mesclada
de uma réplica em vez de fazer a mesclagem localmente. Isso acelera mesclagens muito longas.
Valores possíveis:
- Qualquer inteiro positivo.
prefer_fetch_merged_part_time_threshold
prefer_fetch_merged_part_size_threshold, então prefira obter a
parte mesclada de uma réplica em vez de fazer a mesclagem localmente. Isso ajuda a acelerar
mesclagens muito longas.
Valores possíveis:
- Qualquer inteiro positivo.
prewarm_mark_cache
prewarm_primary_key_cache
Tamanho do bloco de compressão da chave primária, ou seja, o tamanho real do bloco a ser comprimido.
primary_key_compression_codec
primary_key_lazy_load
primary_key_ratio_of_unique_prefix_values_to_skip_suffix_columns
propagate_types_serialization_versions_to_nested_types
ratio_of_defaults_for_sparse_serialization
ratio_of_defaults_for_sparse_serialization
como menor que 1.0. Se o valor for maior ou igual a 1.0,
as colunas sempre serão gravadas usando a serialização completa normal.
Valores possíveis:
- Float entre
0e1para habilitar a serialização esparsa 1.0(ou maior) se você não quiser usar serialização esparsa
s na tabela a seguir é uma string vazia em 95% das
linhas. Em my_regular_table, não usamos serialização esparsa, e em
my_sparse_table, definimos ratio_of_defaults_for_sparse_serialization como
0.95:
s em my_sparse_table ocupa menos espaço em disco:
serialization_kind da tabela system.parts_columns:
s foram armazenadas com a serialização esparsa:
reduce_blocking_parts_sleep_ms
refresh_parts_interval
refresh_statistics_interval
remote_fs_execute_merges_on_single_replica_time_threshold
A replicação zero-copy não está pronta para produção
A replicação zero-copy é desativada por padrão no ClickHouse na versão 22.8 e
posteriores.Este recurso não é recomendado para uso em produção.
- Qualquer inteiro positivo.
remote_fs_zero_copy_path_compatible_mode
remote_fs_zero_copy_zookeeper_path
remove_empty_parts
remove_rolled_back_parts_immediately
remove_unused_patch_parts
replace_long_file_name_to_hash
replicated_can_become_leader
true, as réplicas de tabelas replicadas neste nó tentarão
assumir a liderança.
Valores possíveis:
truefalse
replicated_deduplication_window
- Qualquer inteiro positivo.
- 0 (desabilita a desduplicação)
Insert cria um ou mais blocos (partes). Para
desduplicação de inserção,
ao gravar em tabelas replicadas, o ClickHouse grava as somas de hash das
partes criadas no ClickHouse Keeper. As somas de hash são armazenadas apenas para os
replicated_deduplication_window blocos mais recentes. As somas de hash mais antigas são
removidas do ClickHouse Keeper.
Um valor alto para replicated_deduplication_window torna os Inserts mais lentos,
porque mais entradas precisam ser comparadas. A soma de hash é calculada a partir
da composição dos nomes e tipos dos campos e dos dados da parte
inserida (fluxo de bytes).
replicated_deduplication_window_for_async_inserts
- Qualquer inteiro positivo.
- 0 (desabilita a desduplicação para async_inserts)
replicated_deduplication_window_for_async_inserts blocos mais recentes. As somas de hash
mais antigas são removidas do ClickHouse Keeper.
Um valor alto de replicated_deduplication_window_for_async_inserts torna
Async Inserts mais lento, porque precisa comparar mais entradas.
A soma de hash é calculada com base na composição dos nomes e tipos dos campos
e nos dados do insert (fluxo de bytes).
replicated_deduplication_window_seconds
- Qualquer inteiro positivo.
replicated_deduplication_window_seconds especifica por quanto tempo armazenar somas de hash
de blocos para desduplicação de inserção. Somas de hash mais antigas que
replicated_deduplication_window_seconds são removidas do ClickHouse Keeper,
mesmo que sejam menos de replicated_deduplication_window.
O tempo é relativo ao horário do registro mais recente, não ao tempo
de relógio. Se for o único registro, ele será armazenado para sempre.
replicated_deduplication_window_seconds_for_async_inserts
- Qualquer número inteiro positivo.
replicated_deduplication_window_seconds_for_async_inserts especifica por
quanto tempo armazenar somas de hash de blocos para a desduplicação de async inserts. Somas de hash
mais antigas que replicated_deduplication_window_seconds_for_async_inserts são
removidas do ClickHouse Keeper, mesmo que sejam inferiores a
replicated_deduplication_window_for_async_inserts.
O tempo é relativo ao momento do registro mais recente, não ao tempo
de relógio. Se esse for o único registro, ele será armazenado para sempre.
replicated_fetches_http_connection_timeout
replicated_fetches_http_receive_timeout
replicated_fetches_http_send_timeout
replicated_fetches_min_part_level
replicated_fetches_min_part_level_timeout_seconds
replicated_max_mutations_in_one_entry
replicated_max_parallel_fetches
replicated_max_parallel_fetches_for_host
replicated_max_parallel_fetches_for_table
replicated_max_parallel_sends
replicated_max_parallel_sends_for_table
replicated_max_ratio_of_wrong_parts
- Float, 0.0 - 1.0
search_orphaned_parts_disks
- any - o escopo não é limitado.
- local - o escopo é limitado aos discos locais.
- none - escopo vazio, não pesquisar
serialization_info_version
serialization.json.
Essa configuração é necessária para garantir a compatibilidade durante upgrades do cluster.
Valores possíveis:
basic- Formato básico.with_types- Formato com o campo adicionaltypes_serialization_versions, permitindo versões de serialização por tipo. Isso faz com que configurações comostring_serialization_versiontenham efeito.
basic para que os novos servidores gerem
partes de dados compatíveis com os servidores antigos. Após a conclusão do upgrade,
mude para WITH_TYPES para habilitar versões de serialização por tipo.
Quando habilitada (padrão), colunas Array com nomes pontilhados que compartilham um prefixo comum (por exemplo, n.a e n.b)
são tratadas como parte de uma estrutura Nested: elas compartilham um único arquivo de offsets em disco (por exemplo, n.size0),
e seus tamanhos de array são verificados para garantir que sejam iguais durante o INSERT.
Quando desabilitada, cada coluna Array recebe seu próprio arquivo de offsets independente, nomes pontilhados não têm semântica
especial, e uma coluna escalar pode coexistir com colunas Array pontilhadas que compartilham o mesmo prefixo
(por exemplo, n UInt32 ao lado de n.a Array(String)). Essa configuração é imutável após a criação da tabela.
Ativa o reescalonamento de tarefas de merges coordenados. Isso pode ser útil mesmo quando
shared_merge_tree_enable_coordinated_merges=0, porque isso alimentará as estatísticas do coordenador de merges
e ajudará na inicialização a frio.
Habilita a criação, por réplica, dos nós /metadata e /columns no ZooKeeper.
Disponível apenas no ClickHouse Cloud
Interrompe a atribuição de merges no shared merge tree. Disponível apenas no ClickHouse
Cloud
Por quantos segundos uma partição será armazenada no Keeper se não tiver partes.
Habilita a limpeza das entradas do Keeper de partições vazias.
Habilita a estratégia de mesclagens coordenadas
Habilita a gravação de atributos nas partes virtuais e o commit de blocos no Keeper
Ativa a verificação de partes desatualizadas. Disponível apenas no ClickHouse Cloud
Intervalo, em segundos, para atualização de partes quando ela não é acionada por um watch do ZooKeeper no shared merge tree. Disponível apenas no ClickHouse Cloud
Backoff inicial para atualização das partes. Disponível apenas no ClickHouse Cloud
Tempo limite da conexão HTTP entre servidores. Disponível apenas no ClickHouse Cloud
Limites de tempo para a comunicação HTTP entre servidores. Disponível apenas no ClickHouse
Cloud
Adiciona a shared_merge_tree_leader_update_period um valor com distribuição uniforme de 0 a x segundos para evitar o efeito manada. Disponível apenas no ClickHouse Cloud
Período máximo para verificar novamente a liderança para atualização das partes. Disponível apenas no
ClickHouse Cloud
Número máximo de partes desatualizadas que o líder tentará confirmar para remoção em uma única requisição HTTP. Disponível apenas no ClickHouse Cloud.
Tempo máximo de backoff para atualização de partes. Disponível apenas no ClickHouse Cloud
Número máximo total de líderes de atualização de partes. Disponível apenas no ClickHouse Cloud
Número máximo de líderes de atualização de partes. Disponível apenas no ClickHouse Cloud
Número máximo de réplicas que participarão da exclusão de partes (thread killer). Disponível apenas no ClickHouse Cloud
Número máximo de réplicas que tentarão atribuir merges potencialmente
conflitantes (permite evitar conflitos redundantes na atribuição de merges). 0 significa desativado. Disponível
apenas no ClickHouse Cloud
Número máximo de partes corrompidas para SMT; acima disso, a desanexação automática é negada.
Tamanho máximo total de todas as partes corrompidas do SMT; se for excedido, a desanexação automática será negada.
Por quanto tempo armazenamos os IDs de memoização de insert para evitar ações incorretas durante
novas tentativas de insert. Disponível apenas no ClickHouse Cloud
Intervalo entre execuções da thread de eleição do coordenador de merges
Fator de variação de tempo para o atraso da thread do coordenador
Com que frequência o coordenador de merges deve sincronizar com o ZooKeeper para obter metadados atualizados
Número de merges que o coordenador pode solicitar ao MergerMutator de uma só vez
Tempo máximo entre as execuções da thread do coordenador de merges
Número de entradas de merge que o coordinator deve preparar e distribuir entre os workers.
Quando definido como ‘auto’, equivale ao número máximo de tarefas de merge permitidas em uma única réplica multiplicado pelo número de réplicas ativas.
Tempo mínimo entre execuções da thread do coordenador de merge
Tempo limite que a thread de trabalho de merge usará caso seja necessário atualizar seu estado após uma ação imediata
Tempo entre execuções da thread do merge worker
Número de réplicas que ficarão no mesmo grupo de hash rendezvous para a limpeza de partes desatualizadas.
Disponível apenas no ClickHouse Cloud.
Recarrega o predicado de merge na tarefa de seleção de merge/mutate quando a proporção <candidate partitions for mutations only (partitions that cannot be merged)>/<candidate partitions for mutations> for maior que a configuração. Disponível apenas
no ClickHouse Cloud
Quantidade de jobs de metadados para buscar partes a serem agendados de uma só vez. Disponível apenas no
ClickHouse Cloud
Tempo durante o qual uma parte mesclada localmente é mantida sem iniciar uma nova mesclagem que
inclua essa parte. Isso dá a outras réplicas a oportunidade de buscar a parte e iniciar essa mesclagem.
Disponível apenas no ClickHouse Cloud.
Tamanho mínimo da parte (em linhas) para adiar a atribuição da próxima mesclagem logo após
mesclá-la localmente. Disponível apenas no ClickHouse Cloud.
Tempo para manter uma parte mesclada localmente sem iniciar uma nova mesclagem que contenha
essa parte. Isso dá a outras réplicas a chance de buscar a parte e iniciar essa mesclagem.
Disponível apenas no ClickHouse Cloud
Lê partes virtuais do líder quando possível. Disponível apenas no ClickHouse
Cloud
Com que frequência as réplicas tentarão atualizar o conjunto de réplicas em segundo plano. A próxima execução terá uma variação aleatória
uniforme em [0, value] segundos. Exceção: value = 0 não segue essa regra;
a implementação aplica um mínimo de 200 ms, portanto a próxima execução terá uma variação aleatória em [0, 200] ms.
Se habilitada, todas as réplicas tentam buscar em outras réplicas os dados em memória da parte (como a chave primária,
as informações de partição etc.) quando esses dados já existirem nelas.
Se habilitada, todas as réplicas tentam, na inicialização, buscar de outras réplicas os dados em memória da parte (como
chave primária, informações de partição e assim por diante) quando eles já existirem nelas.
Com que frequência a réplica tentará recarregar suas flags com base no agendamento em segundo plano.
Permite solicitar sugestões de cache do FS a partir do cache em memória de outras réplicas. Disponível apenas no ClickHouse Cloud
Usa o formato compact para partes desatualizadas: reduz a carga sobre o Keeper, melhora
o processamento de partes desatualizadas. Disponível apenas no ClickHouse Cloud
Se estiver habilitado, o contador de excesso de partes usará os dados compartilhados no Keeper, e não o estado da réplica local. Disponível apenas no ClickHouse Cloud
Se habilitada, a SharedMergeTree usa uma das sessões do ZooKeeper em pool no nível do servidor.
Quantas descobertas de partições devem ser agrupadas em um lote
simultaneous_parts_removal_limit
simultaneous_parts_removal_limit partes em uma única iteração.
simultaneous_parts_removal_limit definido como 0 significa sem limite.
sleep_before_commit_local_part_in_replicated_table_ms
sleep_before_loading_outdated_parts_ms
storage_policy
string_serialization_version
String de nível superior.
Essa configuração só tem efeito quando serialization_info_version está definido como “with_types”.
Quando definido como with_size_stream, colunas String de nível superior são serializadas com uma
subcoluna .size separada para armazenar os comprimentos das strings, em vez de inline. Isso permite
subcolunas .size reais e pode melhorar a eficiência da compressão.
Tipos String aninhados (por exemplo, dentro de Nullable, LowCardinality, Array ou Map)
não são afetados, exceto quando aparecem em um Tuple.
Valores possíveis:
single_stream— Usa o formato de serialização padrão com tamanhos inline.with_size_stream— Usa um stream de tamanho separado para colunasStringde nível superior.
table_disk
table_readonly
temporary_directories_lifetime
text_index_dictionary_block_frontcoding_compression
dictionary_block_frontcoding_compression.
text_index_dictionary_block_size
dictionary_block_size.
text_index_posting_list_block_size
posting_list_block_size.
text_index_posting_list_codec
posting_list_codec.
try_fetch_recompressed_part_timeout
- Qualquer número inteiro positivo.
ttl_only_drop_parts
TTL.
Quando ttl_only_drop_parts está desabilitado (padrão), apenas as linhas que
expiraram com base em suas configurações de TTL são removidas.
Quando ttl_only_drop_parts está habilitado, a parte inteira é removida se todas as
linhas dessa parte expiraram de acordo com suas configurações de TTL.
use_adaptive_write_buffer_for_dynamic_subcolumns
use_async_block_ids_cache
true, armazena em cache as somas de hash dos async inserts.
Valores possíveis:
truefalse
use_compact_variant_discriminators_serialization
use_const_adaptive_granularity
use_metadata_cache
use_minimalistic_checksums_in_zookeeper
use_minimalistic_part_header_in_zookeeper
use_primary_key_cache
vertical_merge_algorithm_min_bytes_to_activate
vertical_merge_algorithm_min_columns_to_activate
vertical_merge_algorithm_min_rows_to_activate
vertical_merge_optimize_lightweight_delete
vertical_merge_optimize_ttl_delete
vertical_merge_remote_filesystem_prefetch
wait_for_unique_parts_send_before_shutdown_ms
write_ahead_log_bytes_to_fsync
write_ahead_log_interval_ms_to_fsync
write_ahead_log_max_bytes
write_final_mark
write_marks_for_substreams_in_compact_parts
t Tuple(a String, b UInt32, c Array(Nullable(UInt32))) é serializada nos seguintes substreams:
t.apara dados String do elemento de Tupleat.bpara dados UInt32 do elemento de Tuplebt.c.size0para os tamanhos do array do elemento de Tuplect.c.nullpara o mapa de NULL dos elementos do array aninhado do elemento de Tuplect.cpara dados UInt32 dos elementos do array aninhado do elemento de Tuplec
t.c, leremos apenas os dados dos
substreams t.c.size0, t.c.null e t.c e não leremos dados dos substreams t.a e t.b. Quando essa configuração está desabilitada,
gravaremos uma marca apenas para a coluna de nível superior t, o que significa que sempre leremos todos os dados da coluna a partir do grânulo, mesmo que precisemos apenas dos dados de alguns substreams.
zero_copy_concurrent_part_removal_max_postpone_ratio
zero_copy_concurrent_part_removal_max_split_times
zero_copy_merge_mutation_min_parts_size_sleep_before_lock
zero_copy_merge_mutation_min_parts_size_sleep_no_scale_before_lock
zookeeper_session_expiration_check_period
- Qualquer número inteiro positivo.