Merge (no debe confundirse con MergeTree) no almacena datos por sí mismo, sino que permite leer al mismo tiempo de cualquier número de otras tablas.
La lectura se paraleliza automáticamente. No se admite la escritura en una tabla. Al leer, se utilizan los índices de las tablas que efectivamente se están leyendo, si existen.
Crear una tabla
Parámetros del motor
db_name
db_name — Valores posibles:
- nombre de la base de datos,
- expresión constante que devuelve una cadena con el nombre de una base de datos; por ejemplo,
currentDatabase(), REGEXP(expression), dondeexpressiones una expresión regular para hacer coincidir los nombres de las bases de datos.
- expresión constante que devuelve una cadena con el nombre de una base de datos; por ejemplo,
tables_regexp
tables_regexp — Una expresión regular para coincidir con los nombres de las tablas en la DB o las DB especificadas.
Expresiones regulares: re2 (admite un subconjunto de PCRE), sensible a mayúsculas y minúsculas.
Consulte las notas sobre el escape de símbolos en las expresiones regulares en la sección “match”.
Uso
Al seleccionar tablas para leer, la propia tablaMerge no se selecciona, aunque coincida con la expresión regular. Esto se hace para evitar bucles.
Es posible crear dos tablas Merge que intenten leer indefinidamente los datos de la otra, pero no es una buena idea.
La forma habitual de usar el motor Merge es trabajar con una gran cantidad de tablas TinyLog como si fueran una sola tabla.
Ejemplos
Ejemplo 1 Considere dos bases de datos:ABC_corporate_site y ABC_store. La tabla all_visitors contendrá los ID de las tablas visitors de ambas bases de datos.
WatchLog_old, y que decidió cambiar el esquema de particionado sin mover los datos a una tabla nueva, WatchLog_new, y necesita ver los datos de ambas tablas.
Columnas virtuales
-
_table— El nombre de la tabla desde la que se leyeron los datos. Tipo: String. Si filtra por_table(por ejemplo,WHERE _table='xyz'), solo se leen las tablas que cumplen la condición de filtrado. Una tabla que a su vez lee de otras tablas (Distributed,Merge,Buffer,Alias) devuelve filas con el nombre de la tabla que realmente las produjo, por lo que dichas tablas siempre se leen y el filtro se aplica a sus filas. -
_database— Contiene el nombre de la base de datos desde la que se leyeron los datos. Tipo: String.
- Columnas virtuales
- merge table function