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

Семейство логов

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

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

Движки логов
StripeLog
Log
TinyLog

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

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

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

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

Движки:

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

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

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

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

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

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

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

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

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

Отличия

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

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