Двигатель таблицы Merge
Двигатель Merge
(не путать с MergeTree
) сам по себе не хранит данные, но позволяет одновременно читать данные из любого количества других таблиц.
Чтение автоматически параллелизуется. Запись в таблицу не поддерживается. При чтении используются индексы таблиц, которые на самом деле читаются, если они существуют.
Создание таблицы
Параметры двигателя
db_name
db_name
— Возможные значения:
- имя базы данных,
- константное выражение, возвращающее строку с именем базы данных, например,
currentDatabase()
, REGEXP(expression)
, гдеexpression
является регулярным выражением для соответствия именам БД.
tables_regexp
tables_regexp
— Регулярное выражение для соответствия именам таблиц в указанной БД или БД.
Регулярные выражения — re2 (поддерживает подмножество PCRE), чувствительны к регистру. См. примечания о экранировании символов в регулярных выражениях в разделе "соответствие".
Использование
При выборе таблиц для чтения сама таблица Merge
не выбирается, даже если она соответствует регулярному выражению. Это сделано для предотвращения зацикливания. Возможно создание двух таблиц Merge
, которые будут безконечно пытаться читать данные друг у друга, но это плохая идея.
Типичный способ использования двигателя Merge
— это работа с большим количеством таблиц TinyLog
, как если бы это была одна таблица.
Примеры
Пример 1
Рассмотрим две базы данных ABC_corporate_site
и ABC_store
. Таблица all_visitors
будет содержать ID из таблиц visitors
в обеих базах данных.
Пример 2
Предположим, у вас есть старая таблица WatchLog_old
, и вы решили изменить партиционирование без перемещения данных в новую таблицу WatchLog_new
, и вам нужно видеть данные из обеих таблиц.
Виртуальные столбцы
-
_table
— Содержит имя таблицы, из которой были прочитаны данные. Тип: String.Вы можете установить постоянные условия на
_table
в условииWHERE/PREWHERE
(например,WHERE _table='xyz'
). В этом случае операция чтения выполняется только для тех таблиц, где условие на_table
удовлетворяется, так что столбец_table
действует как индекс.
См. также
- Виртуальные столбцы
- Функция таблицы merge