O SharedMergeTree é a família de mecanismos de tabela padrão no ApsaraDB for ClickHouse Enterprise Edition. Trata-se de uma substituição nativa da nuvem para os mecanismos ReplicatedMergeTree, construída sobre o Object Storage Service (OSS).
Como funciona
O ReplicatedMergeTree armazena dados no armazenamento de objetos, mas mantém os metadados em cada servidor ClickHouse. Todo evento de replicação exige a cópia dos metadados entre todas as réplicas.

O SharedMergeTree elimina a comunicação direta entre réplicas. Em vez disso, todas as réplicas se coordenam por meio do armazenamento compartilhado e do ClickHouse Keeper, que centraliza os metadados.

Essa arquitetura — com replicação assíncrona sem líder e metadados centralizados — oferece diversas vantagens em relação ao ReplicatedMergeTree:
Maior throughput de inserção
Throughput aprimorado para mesclagens em segundo plano
Throughput otimizado para mutações
Operações de dimensionamento mais rápidas — como os metadados não precisam ser redistribuídos conforme o cluster cresce, cada tabela suporta centenas de réplicas e escala horizontalmente sem necessidade de resharding. Isso também permite executar consultas distribuídas utilizando mais recursos computacionais.
Consistência forte de dados mais leve para consultas SELECT
Crie uma tabela
Os mecanismos baseados em SharedMergeTree são o padrão no ApsaraDB for ClickHouse Enterprise Edition. Não é necessário alterar configurações — crie a tabela da mesma forma habitual e o mecanismo será aplicado automaticamente.
Tabela básica
CREATE TABLE my_table(
key UInt64,
value String
)
ENGINE = MergeTree
ORDER BY key
Como o parâmetro default_table_engine está definido como MergeTree na Enterprise Edition, a cláusula ENGINE é opcional:
CREATE TABLE my_table(
key UInt64,
value String
)
ORDER BY key
Mecanismos variantes
Os seguintes mecanismos são convertidos automaticamente para seus equivalentes SharedMergeTree: ReplacingMergeTree, CollapsingMergeTree, AggregatingMergeTree, SummingMergeTree, VersionedCollapsingMergeTree e GraphiteMergeTree.
CREATE TABLE myFirstReplacingMT
(
`key` Int64,
`someCol` String,
`eventTime` DateTime
)
ENGINE = ReplacingMergeTree
ORDER BY key;
Execute SHOW CREATE TABLE para confirmar o mecanismo real em uso:
SHOW CREATE TABLE myFirstReplacingMT;
A saída exibe o equivalente SharedMergeTree:
CREATE TABLE default.myFirstReplacingMT
( `key` Int64, `someCol` String, `eventTime` DateTime )
ENGINE = SharedReplacingMergeTree('/clickhouse/tables/{uuid}/{shard}', '{replica}')
ORDER BY key
SETTINGS index_granularity = 8192
Introspecção
A maioria das tabelas de sistema usadas para introspecção do ReplicatedMergeTree também está disponível para o SharedMergeTree. Duas tabelas não estão presentes — system.replication_queue e system.replicated_fetches — pois a replicação de dados e metadados não ocorre nesse modelo. O SharedMergeTree fornece substituições diretas:
|
Tabela ReplicatedMergeTree |
Substituição SharedMergeTree |
Descrição |
|
|
|
Armazena o conjunto mais recente de partes de dados atuais e futuras em andamento, incluindo mesclagens, modificações e exclusões de partições |
|
|
|
Contém chaves primárias e checksums carregados na memória |
Alterações na configuração do mecanismo
O SharedMergeTree altera o comportamento de três configurações.
**insert_quorum**
Não é necessário. Todas as inserções no SharedMergeTree são inserções com quórum (dados gravados no armazenamento compartilhado). Não há necessidade de configurar esse parâmetro explicitamente.
**insert_quorum_parallel**
Também desnecessário pelo mesmo motivo: todas as inserções já ocorrem com quórum (dados gravados no armazenamento compartilhado).
**select_sequential_consistency**
Inserções com quórum não são obrigatórias. Defina este parâmetro para enviar solicitações adicionais ao ClickHouse Keeper durante consultas SELECT.