- Maior taxa de transferência de inserção
- Maior taxa de transferência nas mesclagens em segundo plano
- Maior taxa de transferência nas mutações
- Operações de escalonamento vertical e horizontal mais rápidas
- Consistência forte mais leve para consultas
select
Introspecção
A maioria das tabelas de sistema usadas para introspecção do ReplicatedMergeTree também existe no SharedMergeTree, excetosystem.replication_queue e system.replicated_fetches, já que não há replicação de dados nem de metadados. No entanto, o SharedMergeTree tem alternativas correspondentes para essas duas tabelas.
system.virtual_parts
Esta tabela funciona como alternativa a system.replication_queue no SharedMergeTree. Ela armazena informações sobre o conjunto mais recente de partes atuais, bem como sobre partes futuras em andamento, como mesclagens, mutações e partições removidas.
system.shared_merge_tree_fetches
Esta tabela é a alternativa a system.replicated_fetches no SharedMergeTree. Ela contém informações sobre carregamentos em andamento de chaves primárias e checksums na memória.
Habilitando o SharedMergeTree
SharedMergeTree vem habilitado por padrão.
Nos serviços compatíveis com o mecanismo de tabela SharedMergeTree, você não precisa habilitar nada manualmente. Pode criar tabelas da mesma forma que antes, e ele usará automaticamente um mecanismo de tabela baseado em SharedMergeTree correspondente ao mecanismo especificado na sua consulta CREATE TABLE.
my_table usando o mecanismo de tabela SharedMergeTree.
Você não precisa especificar ENGINE=MergeTree, já que default_table_engine=MergeTree é o padrão no ClickHouse Cloud. A consulta a seguir é idêntica à consulta acima.
CREATE TABLE com SHOW CREATE TABLE:
Configurações
O comportamento de algumas configurações mudou significativamente:insert_quorum— todas as inserções no SharedMergeTree são inserções com quórum (gravadas no armazenamento compartilhado), portanto essa configuração não é necessária ao usar o mecanismo de tabela SharedMergeTree.insert_quorum_parallel— todas as inserções no SharedMergeTree são inserções com quórum (gravadas no armazenamento compartilhado), portanto essa configuração não é necessária ao usar o mecanismo de tabela SharedMergeTree.select_sequential_consistency— não requer inserções com quórum e gerará carga adicional no clickhouse-keeper em consultasSELECT
Consistência
O SharedMergeTree oferece uma consistência leve superior à do ReplicatedMergeTree. Ao inserir no SharedMergeTree, você não precisa fornecer configurações comoinsert_quorum ou insert_quorum_parallel. As inserções são inserções com quórum, o que significa que os metadados serão armazenados no ClickHouse-Keeper e replicados para pelo menos um quórum de instâncias do ClickHouse-Keeper. Cada réplica no cluster buscará novas informações do ClickHouse-Keeper de forma assíncrona.
Na maior parte do tempo, você não deve usar select_sequential_consistency nem SYSTEM SYNC REPLICA LIGHTWEIGHT. A replicação assíncrona deve atender à maioria dos cenários e tem latência muito baixa. No raro caso de você realmente precisar evitar leituras desatualizadas, siga estas recomendações em ordem de preferência:
-
Se você executar as consultas na mesma sessão ou no mesmo nó para leituras e gravações, não será necessário usar
select_sequential_consistency, porque sua réplica já terá os metadados mais recentes. -
Se você gravar em uma réplica e ler de outra, poderá usar
SYSTEM SYNC REPLICA LIGHTWEIGHTpara forçar a réplica a buscar os metadados do ClickHouse-Keeper. -
Use
select_sequential_consistencycomo configuração da consulta.
Visibilidade de ALTER e de mutações
O SharedMergeTree coordena alterações de metadados por meio do ClickHouse Keeper. As réplicas buscam os metadados alterados de forma assíncrona, portanto uma alteração de metadados não fica necessariamente visível de imediato em todas as réplicas. Leituras na mesma sessão e no mesmo nó já utilizam os metadados atuais. Quando uma leitura precisar ser executada em outra réplica logo após uma alteração de metadados, use SYSTEM SYNC REPLICA LIGHTWEIGHT para que essa réplica busque os metadados no ClickHouse Keeper.
Operações ALTER que geram mutações executam, em segundo plano, um trabalho que cria novas partes no armazenamento compartilhado e coordena a visibilidade delas por meio do ClickHouse Keeper. Não se trata de um processo de reescrita ou de transferência de dados por réplica, como ocorre no ReplicatedMergeTree.
No ClickHouse Cloud, o valor padrão de alter_sync é 0; defina essa configuração quando um cliente precisar aguardar a conclusão de operações de metadados ou de uma reescrita MODIFY COLUMN que não se limite aos metadados. Para operações UPDATE, DELETE e MATERIALIZE ..., use mutations_sync para controlar a espera e acompanhe o progresso em system.mutations.