Семейство движков журналов
Эти движки были разработаны для сценариев, когда вам необходимо быстро записывать много небольших таблиц (до примерно 1 миллиона строк) и затем читать их целиком.
Движки семейства:
Движки журналов |
---|
StripeLog |
Log |
TinyLog |
Движки таблиц семейства Log
могут хранить данные в распределённых файловых системах HDFS или S3.
Несмотря на название, *движки таблиц журнала не предназначены для хранения данных журналов. Они должны использоваться только для небольших объемов, которые необходимо быстро записывать.
Общие свойства
Движки:
-
Хранят данные на диске.
-
Добавляют данные в конец файла при записи.
-
Поддерживают блокировки для одновременного доступа к данным.
Во время запросов
INSERT
таблица блокируется, и другие запросы на чтение и запись данных ждут разблокировки таблицы. Если нет запросов на запись данных, любое количество запросов на чтение данных может выполняться одновременно. -
Не поддерживают мутации.
-
Не поддерживают индексы.
Это означает, что запросы
SELECT
для диапазонов данных неэффективны. -
Не записывают данные атомарно.
Вы можете получить таблицу с поврежденными данными, если что-то нарушает операцию записи, например, ненормальное завершение работы сервера.
Отличия
Движок TinyLog
является самым простым в семействе и предоставляет наименьшую функциональность и эффективность. Движок TinyLog
не поддерживает параллельное чтение данных несколькими потоками в одном запросе. Он читает данные медленнее, чем другие движки в семействе, которые поддерживают параллельное чтение из одного запроса, и использует почти столько же файловых дескрипторов, сколько и движок Log
, потому что он хранит каждую колонку в отдельном файле. Используйте его только в простых сценариях.
Движки Log
и StripeLog
поддерживают параллельное чтение данных. При чтении данных ClickHouse использует несколько потоков. Каждый поток обрабатывает отдельный блок данных. Движок Log
использует отдельный файл для каждой колонки таблицы. StripeLog
хранит все данные в одном файле. В результате движок StripeLog
использует меньше файловых дескрипторов, но движок Log
обеспечивает более высокую эффективность при чтении данных.