Log Engine Family¶
These engines were developed for scenarios when you need to write many tables with the small amount of data (less than 1 million rows).
Engines of the family:
- Store data on a disk.
- Append data to the end of file when writing.
- Do not support mutation operations.
Do not support indexes.
This means that
SELECTqueries for ranges of data are not efficient.
Do not write data atomically.
You can get a table with corrupted data if something breaks the write operation, for example, abnormal server shutdown.
StripeLog engines support:
Locks for concurrent data access.
INSERTquery the table is locked, and other queries for reading and writing data both wait for unlocking. If there are no writing data queries, any number of reading data queries can be performed concurrently.
Parallel reading of data.
When reading data ClickHouse uses multiple threads. Each thread processes separated data block.
Log engine uses the separate file for each column of the table. The
StripeLog stores all the data in one file. Thus the
StripeLog engine uses fewer descriptors in the operating system, but the
Log engine provides a more efficient reading of the data.
TinyLog engine is the simplest in the family and provides the poorest functionality and lowest efficiency. The
TinyLog engine does not support a parallel reading and concurrent access and stores each column in a separate file. It reads the data slower than both other engines with parallel reading, and it uses almost as many descriptors as the
Log engine. You can use it in simple low-load scenarios.