Движок таблиц TinyLog
Движок относится к семейству лог-движков. Общие свойства лог-движков и их различия см. в разделе Log Engine Family.
Этот табличный движок обычно используется по принципу «одна запись»: данные записываются один раз, после чего могут многократно читаться. Например, вы можете использовать таблицы типа TinyLog для промежуточных данных, обрабатываемых небольшими пакетами. Учтите, что хранение данных в большом количестве маленьких таблиц неэффективно.
Запросы выполняются в одном потоке. Другими словами, этот движок предназначен для относительно небольших таблиц (примерно до 1 000 000 строк). Имеет смысл использовать этот табличный движок, если у вас много маленьких таблиц, поскольку он проще, чем движок Log (нужно открыть меньше файлов).
Характеристики
- Более простая структура: В отличие от движка
Log,TinyLogне использует mark-файлы. Это снижает сложность, но также ограничивает возможности оптимизации производительности для больших наборов данных. - Однопоточная обработка запросов: Запросы к таблицам
TinyLogвыполняются в одном потоке, что делает его подходящим для относительно небольших таблиц, обычно до 1 000 000 строк. - Эффективен для небольших таблиц: Простота движка
TinyLogделает его предпочтительным при работе с большим количеством небольших таблиц, так как он требует меньше файловых операций по сравнению с движкомLog.
В отличие от движка Log, TinyLog не использует mark-файлы. Это снижает сложность, но также ограничивает возможности оптимизации производительности для более крупных наборов данных.
Создание таблицы
Подробное описание запроса см. в разделе CREATE TABLE.
Запись данных
Движок TinyLog хранит все столбцы в одном файле. Для каждого запроса INSERT ClickHouse добавляет блок данных в конец файла таблицы, записывая столбцы один за другим.
Для каждой таблицы ClickHouse записывает следующие файлы:
<column>.bin: файл данных для каждого столбца, содержащий сериализованные и сжатые данные.
Движок TinyLog не поддерживает операции ALTER UPDATE и ALTER DELETE.
Пример использования
Создание таблицы:
Добавление данных:
Мы использовали два запроса INSERT, чтобы создать два блока данных внутри файлов <column>.bin.
ClickHouse использует один поток чтения данных. В результате порядок блоков строк на выходе совпадает с порядком этих же блоков на входе. Например: