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

TinyLog

该引擎属于日志引擎家族。请参见 Log Engine Family 以获取日志引擎的共有属性及其差异。

此表引擎通常使用写一次(write-once)的方法:一次性写入数据,然后根据需要读取多次。例如,您可以使用 TinyLog 类型的表来存储以小批量处理的中间数据。请注意,存储大量小表的数据效率不高。

查询以单一流方式执行。换句话说,该引擎适用于相对较小的表(最多约 1,000,000 行)。如果您有许多小表,使用此表引擎是有意义的,因为它比 Log 引擎更简单(需要打开的文件更少)。

特性

  • 结构更简单:与 Log 引擎不同,TinyLog 不使用标记文件。这减少了复杂性,但也限制了对大数据集的性能优化。
  • 单流查询:对 TinyLog 表的查询以单一流执行,使其适合相对较小的表,通常最多 1,000,000 行。
  • 小表高效:TinyLog 引擎的简单性使其在管理许多小表时具有优势,因为它相比 Log 引擎需要更少的文件操作。

与 Log 引擎不同,TinyLog 不使用标记文件。这减少了复杂性,但也限制了对较大数据集的性能优化。

创建表

有关 CREATE TABLE 查询的详细描述,请参见相关文档。

写入数据

TinyLog 引擎将所有列存储在一个文件中。对于每个 INSERT 查询,ClickHouse 会将数据块附加到表文件的末尾,逐列写入数据。

对于每个表,ClickHouse 写入文件:

  • <column>.bin:每列的数据文件,包含序列化和压缩的数据。

TinyLog 引擎不支持 ALTER UPDATEALTER DELETE 操作。

使用示例

创建表:

插入数据:

我们使用两个 INSERT 查询在 <column>.bin 文件内部创建了两个数据块。

ClickHouse 使用单一流选择数据。因此,输出中行块的顺序与输入中相同块的顺序一致。例如: