Tous les produits
Search
Centre de documentation

ApsaraDB for ClickHouse:SharedMergeTree table engine family

Dernière mise à jour :Aug 11, 2026

SharedMergeTree est la famille de moteurs de table par défaut d'ApsaraDB for ClickHouse Enterprise Edition. Cette alternative cloud-native aux moteurs ReplicatedMergeTree s'appuie sur Object Storage Service (OSS).

Fonctionnement

ReplicatedMergeTree stocke les données dans le stockage objet, mais conserve les métadonnées sur chaque serveur ClickHouse. Chaque événement de réplication implique la copie des métadonnées vers tous les réplicas.

image

SharedMergeTree supprime la communication directe entre réplicas. Tous les réplicas se coordonnent via un stockage partagé et ClickHouse Keeper, qui centralise les métadonnées.

image

Cette architecture — réplication asynchrone sans leader avec métadonnées centralisées — offre plusieurs avantages par rapport à ReplicatedMergeTree :

  • Débit d'insertion plus élevé

  • Meilleur débit des fusions en arrière-plan

  • Meilleur débit des mutations

  • Mise à l'échelle plus rapide — les métadonnées n'ayant pas besoin d'être redistribuées lors de l'extension du cluster, chaque table peut gérer des centaines de réplicas et monter en charge sans resharding. Cela permet également d'exécuter les requêtes de manière distribuée sur davantage de ressources de calcul.

  • Cohérence forte des données plus légère pour les requêtes SELECT

Créer une table

Les moteurs basés sur SharedMergeTree sont activés par défaut dans ApsaraDB for ClickHouse Enterprise Edition. Aucune modification de configuration n'est nécessaire : créez une table comme à l'accoutumée, le moteur s'applique automatiquement.

Table de base

CREATE TABLE my_table(
  key UInt64,
  value String
)
ENGINE = MergeTree
ORDER BY key

Comme default_table_engine est défini sur MergeTree dans Enterprise Edition, la clause ENGINE est facultative :

CREATE TABLE my_table(
  key UInt64,
  value String
)
ORDER BY key

Moteurs variantes

Les moteurs suivants sont automatiquement convertis en leurs équivalents SharedMergeTree : ReplacingMergeTree, CollapsingMergeTree, AggregatingMergeTree, SummingMergeTree, VersionedCollapsingMergeTree et GraphiteMergeTree.

CREATE TABLE myFirstReplacingMT
(
    `key` Int64,
    `someCol` String,
    `eventTime` DateTime
)
ENGINE = ReplacingMergeTree
ORDER BY key;

Exécutez SHOW CREATE TABLE pour vérifier le moteur effectivement utilisé :

SHOW CREATE TABLE myFirstReplacingMT;

Le résultat affiche l'équivalent 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

Introspection

La plupart des tables système utilisées pour l'introspection de ReplicatedMergeTree sont disponibles pour SharedMergeTree. Deux tables font exception — system.replication_queue et system.replicated_fetches — car la réplication des données et des métadonnées n'a pas lieu. SharedMergeTree propose des replacements directs :

Table ReplicatedMergeTree Remplacement SharedMergeTree Description
system.replication_queue system.virtual_parts Stocke l'ensemble le plus récent des parties de données actuelles et futures en cours, y compris les fusions, modifications et suppressions de partitions
system.replicated_fetches system.shared_merge_tree_fetches Contient les clés primaires et les sommes de contrôle en cours de chargement en mémoire

Modifications de la configuration du moteur

SharedMergeTree modifie le comportement de trois paramètres.

**insert_quorum**

Non requis. Toutes les insertions dans SharedMergeTree utilisent le quorum (données écrites dans le stockage partagé). Il n'est pas nécessaire de configurer ce paramètre explicitement.

**insert_quorum_parallel**

Non requis pour la même raison : toutes les insertions utilisent déjà le quorum (données écrites dans le stockage partagé).

**select_sequential_consistency**

Les insertions avec quorum ne sont pas requises. Définissez ce paramètre pour envoyer des requêtes supplémentaires à ClickHouse Keeper lors des requêtes SELECT.