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