日志引擎家族
这些引擎是为需要快速写入许多小型表(最多约 100 万行)并在以后整体读取它们的场景而开发的。
家族的引擎
Log
家族表引擎可以将数据存储到 HDFS 或 S3 分布式文件系统。
通用属性
引擎
将数据存储在磁盘上。
写入时将数据追加到文件末尾。
支持锁定以实现并发数据访问。
在
INSERT
查询期间,表将被锁定,其他读取和写入数据的查询都将等待表解锁。如果没有任何数据写入查询,则可以并发执行任意数量的数据读取查询。不支持 更改。
不支持索引。
这意味着
SELECT
查询数据范围效率不高。不以原子方式写入数据。
如果某些操作导致写入操作中断,例如服务器异常关闭,则可能会得到包含损坏数据的表。
差异
TinyLog
引擎是该家族中最简单的引擎,功能最差,效率最低。TinyLog
引擎不支持单个查询中多个线程并发读取数据。它读取数据的速度比该家族中支持从单个查询并行读取的其他引擎慢,并且它使用的文件描述符几乎与 Log
引擎一样多,因为它将每列存储在单独的文件中。仅在简单场景中使用它。
Log
和 StripeLog
引擎支持并行读取数据。ClickHouse 在读取数据时使用多个线程。每个线程处理一个单独的数据块。Log
引擎为表的每一列使用一个单独的文件。StripeLog
将所有数据存储在一个文件中。因此,StripeLog
引擎使用的文件描述符更少,但 Log
引擎在读取数据时效率更高。