Движок таблицы StripeLog
Этот движок относится к семейству лог-движков. Общие свойства лог-движков и их различия см. в статье Log Engine Family.
Используйте этот движок в сценариях, когда необходимо создавать большое количество таблиц с небольшим объёмом данных (менее 1 миллиона строк). Например, такую таблицу можно использовать для хранения входящих пакетов данных для последующей трансформации, когда требуется их атомарная обработка. До 100 тыс. экземпляров таблиц этого типа являются нормальной конфигурацией для одного сервера ClickHouse. Этот табличный движок следует предпочесть движку Log, когда требуется большое количество таблиц, однако это происходит за счёт эффективности чтения.
Создание таблицы
См. подробное описание запроса CREATE TABLE.
Запись данных
Движок StripeLog хранит все столбцы в одном файле. Для каждого запроса INSERT ClickHouse добавляет блок данных в конец файла таблицы, записывая столбцы по отдельности.
Для каждой таблицы ClickHouse создает следующие файлы:
data.bin— файл с данными.index.mrk— файл с метками. Метки содержат смещения для каждого столбца каждого вставленного блока данных.
Движок StripeLog не поддерживает операции ALTER UPDATE и ALTER DELETE.
Чтение данных
Файл с метками позволяет ClickHouse параллелизировать чтение данных. Это означает, что запрос SELECT возвращает строки в непредсказуемом порядке. Используйте оператор ORDER BY для сортировки строк.
Пример использования
Создание таблицы:
Вставка данных:
Мы использовали два запроса INSERT, чтобы создать два блока данных в файле data.bin.
ClickHouse использует несколько потоков при выборке данных. Каждый поток читает отдельный блок данных и по мере завершения возвращает соответствующие строки независимо от других. В результате порядок блоков строк в выходных данных в большинстве случаев не совпадает с порядком этих же блоков во входных данных. Например:
Сортировка результатов (по умолчанию — по возрастанию):