Движок таблицы (тип таблицы) определяет:
- Как и где хранятся данные, куда они записываются и откуда читаются.
- Какие запросы поддерживаются и каким образом.
- Параллельный доступ к данным.
- Использование индексов, если они есть.
- Возможно ли многопоточное выполнение запросов.
- Параметры репликации данных.
Семейства движков
MergeTree
Наиболее универсальные и функциональные движки таблиц для высоконагруженных задач. Общее свойство этих движков — быстрая вставка данных и их последующая фоновая обработка. Движки семейства MergeTree поддерживают репликацию данных (в версиях движков Replicated*), партиционирование, вторичные индексы пропуска данных и другие возможности, недоступные в других движках.
Движки семейства:
Log
Легковесные движки с минимальной функциональностью. Они наиболее эффективны, когда нужно быстро записывать данные во множество небольших таблиц (примерно до 1 миллиона строк), а затем читать их целиком.
Движки семейства Log:
| Движки семейства Log |
|---|
| Семейство движков Log |
| TinyLog |
| StripeLog |
| Log |
Интеграционные движки
Движки для взаимодействия с другими системами хранения и обработки данных.
Движки семейства:
Специальные движки
Движки этого семейства:
| Специальные движки |
|---|
| Специальные движки таблиц |
| Псевдоним |
| Distributed |
| Словарь |
| Merge |
| Executable |
| File |
| Null |
| Set |
| JOIN |
| URL |
| View |
| Memory |
| Buffer |
| Внешние данные |
| GenerateRandom |
| KeeperMap |
| FileLog |
Виртуальные столбцы
Виртуальный столбец — это неотъемлемый атрибут движка таблицы, определяемый в исходном коде движка.
Не следует указывать виртуальные столбцы в запросе 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.