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