Движок таблицы (тип таблицы) определяет:
- Как и где хранятся данные, куда они записываются и откуда читаются.
- Какие запросы поддерживаются и каким образом.
- Параллельный доступ к данным.
- Использование индексов, если они есть.
- Возможно ли многопоточное выполнение запросов.
- Параметры репликации данных.
Наиболее универсальные и функциональные движки таблиц для высоконагруженных задач. Общее свойство этих движков — быстрая вставка данных и их последующая фоновая обработка. Движки семейства MergeTree поддерживают репликацию данных (в версиях движков Replicated*), партиционирование, вторичные индексы пропуска данных и другие возможности, недоступные в других движках.
Движки семейства:
Легковесные движки с минимальной функциональностью. Они наиболее эффективны, когда нужно быстро записывать данные во множество небольших таблиц (примерно до 1 миллиона строк), а затем читать их целиком.
Движки семейства Log:
| Движки семейства Log |
|---|
| TinyLog |
| StripeLog |
| Log |
Движки для взаимодействия с другими системами хранения и обработки данных.
Движки семейства:
Движки этого семейства:
Виртуальный столбец — это неотъемлемый атрибут движка таблицы, определяемый в исходном коде движка.
Не следует указывать виртуальные столбцы в запросе CREATE TABLE; они также не отображаются в результатах запросов SHOW CREATE TABLE и DESCRIBE TABLE. Виртуальные столбцы также доступны только для чтения, поэтому вставлять в них данные нельзя.
Чтобы выбрать данные из виртуального столбца, необходимо указать его имя в запросе SELECT. SELECT * не возвращает значения виртуальных столбцов.
Если создать таблицу со столбцом, имеющим то же имя, что и один из виртуальных столбцов таблицы, виртуальный столбец станет недоступен. Мы не рекомендуем этого делать. Чтобы избежать конфликтов, имена виртуальных столбцов обычно начинаются с символа подчёркивания.
-
_table — содержит имя таблицы, из которой были прочитаны данные. Тип: String.
Независимо от используемого движка таблицы, каждая таблица включает универсальный виртуальный столбец с именем _table.
При выполнении запроса к таблице с движком Merge можно задать константные условия для _table в выражении WHERE/PREWHERE (например, WHERE _table='xyz'). В этом случае чтение выполняется только для тех таблиц, которые удовлетворяют условию по _table, поэтому столбец _table действует как индекс.
При использовании запросов вида SELECT ... FROM (... UNION ALL ...) можно определить, из какой именно таблицы происходят возвращаемые строки, указав столбец _table.
Последнее изменение 10 июня 2026 г.