跳到主要内容
跳到主要内容

Log 表引擎系列

Not supported in ClickHouse Cloud

这些引擎适用于这样一种场景:需要快速写入大量小表(单表最多约 100 万行),并在之后整体读取它们。

该系列中的引擎:

Log 引擎
StripeLog
Log
TinyLog

Log 系列表引擎可以将数据存储到 HDFSS3 分布式文件系统中。

此引擎并非用于日志数据。

尽管名称如此,Log 表引擎并非用于存储日志数据。它们应仅用于需要快速写入的小规模数据量。

通用属性

这些引擎:

  • 将数据存储在磁盘上。

  • 在写入时将数据追加到文件末尾。

  • 支持用于并发数据访问的锁。

    在执行 INSERT 查询时,表会被锁定,其他读写数据的查询都会等待表解锁。如果没有数据写入查询在执行,则可以并发执行任意数量的数据读取查询。

  • 不支持变更

  • 不支持索引。

    这意味着针对数据范围的 SELECT 查询效率不高。

  • 不以原子方式写入数据。

    如果写入操作被中断(例如服务器异常关闭),则可能会得到一个数据损坏的表。

差异

TinyLog 引擎是该系列中最简单的一个,提供的功能最少、效率也最低。TinyLog 引擎不支持在单个查询中由多个线程并行读取数据。与该系列中支持在单个查询中并行读取的其他引擎相比,它读取数据的速度更慢,并且由于将每一列存储在单独的文件中,它使用的文件描述符几乎与 Log 引擎一样多。应仅在简单场景中使用它。

LogStripeLog 引擎支持数据的并行读取。在读取数据时,ClickHouse 会使用多个线程。每个线程处理单独的数据块。Log 引擎为表的每一列使用单独的文件,而 StripeLog 将所有数据存储在一个文件中。因此,StripeLog 引擎使用更少的文件描述符,但在读取数据时,Log 引擎的效率更高。