Passer au contenu principal
Le moteur Merge (à ne pas confondre avec MergeTree) ne stocke pas lui-même les données, mais permet de lire simultanément dans un nombre quelconque d’autres tables. La lecture est automatiquement parallélisée. L’écriture dans une telle table n’est pas prise en charge. Lors de la lecture, les index des tables effectivement lues sont utilisés, s’ils existent.

Créer une table

Paramètres du moteur

db_name

db_name — Valeurs possibles :
  • nom de base de données,
    • expression constante qui renvoie une chaîne contenant un nom de base de données, par exemple currentDatabase(),
    • REGEXP(expression), où expression est une expression régulière permettant de faire correspondre les noms de DB.

tables_regexp

tables_regexp — Une expression régulière permettant de faire correspondre les noms de table dans la ou les DB spécifiées. Expressions régulières — re2 (prend en charge un sous-ensemble de PCRE), sensible à la casse. Voir les notes sur l’échappement des symboles dans les expressions régulières dans la section « match ».

Utilisation

Lors de la sélection des tables à lire, la table Merge elle-même n’est pas sélectionnée, même si elle correspond à la regex. Cela permet d’éviter les boucles. Il est possible de créer deux tables Merge qui essaieront indéfiniment de lire les données l’une de l’autre, mais ce n’est pas une bonne idée. La manière habituelle d’utiliser le moteur Merge consiste à manipuler un grand nombre de tables TinyLog comme s’il s’agissait d’une seule table.

Exemples

Exemple 1 Considérez deux bases de données, ABC_corporate_site et ABC_store. La table all_visitors contiendra les ID des tables visitors de ces deux bases de données.
Exemple 2 Supposons que vous ayez une ancienne table WatchLog_old et que vous ayez décidé de modifier le partitionnement sans déplacer les données vers une nouvelle table WatchLog_new, et que vous deviez consulter les données des deux tables.

Colonnes virtuelles

  • _table — Nom de la table à partir de laquelle les données ont été lues. Type : String. Si vous filtrez sur _table (par exemple WHERE _table='xyz'), seules les tables qui satisfont la condition de filtrage sont lues.
  • _database — Contient le nom de la base de données à partir de laquelle les données ont été lues. Type : String.
Voir aussi
Dernière modification le 25 juin 2026