Passer au contenu principal
Le moteur de table (type de table) détermine :
  • Comment et où les données sont stockées, où elles sont écrites et d’où elles sont lues.
  • Quelles requêtes sont prises en charge, et de quelle manière.
  • L’accès concurrent aux données.
  • L’utilisation des index, s’ils sont présents.
  • Si l’exécution multithread des requêtes est possible.
  • Les paramètres de réplication.

Familles de moteurs

MergeTree

Les moteurs de table les plus polyvalents et les plus complets pour les charges de travail intensives. Leur caractéristique commune est une insertion rapide des données, suivie d’un traitement en arrière-plan. Les moteurs de la famille MergeTree prennent en charge la réplication des données (via les versions Replicated* des moteurs), le partitionnement, les index secondaires de saut de données et d’autres fonctionnalités absentes des autres moteurs. Moteurs de la famille :

Log

Des moteurs légers offrant un minimum de fonctionnalités. Ils sont particulièrement efficaces lorsque vous devez alimenter rapidement de nombreuses petites tables (jusqu’à environ 1 million de lignes), puis les lire ultérieurement dans leur intégralité. Moteurs de la famille :

Moteurs d’intégration

Moteurs permettant de communiquer avec d’autres systèmes de stockage et de traitement de données. Moteurs de cette famille :

Moteurs spéciaux

Moteurs de cette famille :

Colonnes virtuelles

Une colonne virtuelle est un attribut inhérent au moteur de table, défini dans le code source du moteur. Vous ne devez pas spécifier de colonnes virtuelles dans la requête CREATE TABLE, et elles n’apparaissent pas dans les résultats des requêtes SHOW CREATE TABLE et DESCRIBE TABLE. Les colonnes virtuelles sont également en lecture seule, vous ne pouvez donc pas y insérer de données. Pour sélectionner des données depuis une colonne virtuelle, vous devez spécifier son nom dans la requête SELECT. SELECT * ne renvoie pas les valeurs des colonnes virtuelles. Si vous créez une table avec une colonne portant le même nom que l’une des colonnes virtuelles de la table, la colonne virtuelle devient inaccessible. Nous ne recommandons pas de le faire. Pour éviter les conflits, les noms des colonnes virtuelles sont généralement préfixés par un trait de soulignement.
  • _table — Contient le nom de la table depuis laquelle les données ont été lues. Type : String. Quel que soit le moteur de table utilisé, chaque table inclut une colonne virtuelle universelle nommée _table. Lorsqu’une requête porte sur une table utilisant le moteur de table Merge, vous pouvez définir des conditions constantes sur _table dans la clause WHERE/PREWHERE (par exemple, WHERE _table='xyz'). Dans ce cas, l’opération de lecture est effectuée uniquement pour les tables pour lesquelles la condition sur _table est satisfaite, de sorte que la colonne _table agit comme un index. Lorsque vous utilisez des requêtes de la forme SELECT ... FROM (... UNION ALL ...), vous pouvez déterminer de quelle table réelle proviennent les lignes renvoyées en spécifiant la colonne _table.
Dernière modification le 29 juin 2026