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