Перейти к основному содержанию
Перейти к основному содержанию

Семейство движков таблиц Log

Not supported in ClickHouse Cloud

Эти движки разработаны для сценариев, когда требуется быстро записывать множество небольших таблиц (до примерно 1 миллиона строк) и затем считывать их целиком.

Движки семейства:

Движки семейства Log
StripeLog
Log
TinyLog

Движки таблиц семейства Log могут хранить данные в распределённых файловых системах HDFS или S3.

Этот движок не предназначен для логов.

Несмотря на название, *движки таблиц Log не предназначены для хранения логов. Их следует использовать только для небольших объёмов данных, которые нужно быстро записывать.

Общие свойства

Движки:

  • Хранят данные на диске.

  • При записи добавляют данные в конец файла.

  • Поддерживают блокировки для конкурентного доступа к данным.

    Во время выполнения запросов INSERT таблица блокируется, и другие запросы на чтение и запись данных ожидают её разблокировки. Если нет запросов на запись данных, любое количество запросов на чтение может выполняться одновременно.

  • Не поддерживают мутации.

  • Не поддерживают индексы.

    Это означает, что запросы SELECT по диапазонам данных неэффективны.

  • Не выполняют запись данных атомарно.

    Вы можете получить таблицу с повреждёнными данными, если что-то прервёт операцию записи, например, аварийное выключение сервера.

Отличия

Движок TinyLog является самым простым в семействе и предоставляет минимальный набор функций и наименьшую производительность. Движок TinyLog не поддерживает параллельное чтение данных несколькими потоками в рамках одного запроса. Он читает данные медленнее, чем другие движки из семейства, которые поддерживают параллельное чтение в рамках одного запроса, и использует почти столько же файловых дескрипторов, сколько движок Log, поскольку хранит каждый столбец в отдельном файле. Используйте его только в простых сценариях.

Движки Log и StripeLog поддерживают параллельное чтение данных. При чтении данных ClickHouse использует несколько потоков. Каждый поток обрабатывает отдельный блок данных. Движок Log использует отдельный файл для каждого столбца таблицы. StripeLog хранит все данные в одном файле. В результате движок StripeLog использует меньше файловых дескрипторов, но движок Log обеспечивает более высокую производительность при чтении данных.