Log是Clickhouse中的压缩表引擎

时间:2017-07-07 01:52:49

标签: clickhouse

我有一个MergeTree表和一个system.columns表。在data_compressed_bytes表中,它有一列MergeTree,显示为每个表的每列压缩的字节。我可以看到Log表显示列下的值,但对于Log表,该列显示全部为零。

┌─database─┬─table──┬─name───────────┬─type─────┬─data_compressed_bytes─┬─data_uncompressed_bytes─┬─marks_bytes─┐ │ default │ logs │ log_time │ DateTime │ 0 │ 0 │ 0 │ │ default │ logs │ start_time │ DateTime │ 0 │ 0 │ 0 │

MergeTree

┌─database─┬─table─────┬─name────────┬─type─────┬─data_compressed_bytes─┬─data_uncompressed_bytes─┬─marks_bytes─┐ │ default │ logs_m │ log_date │ Date │ 1221802 │ 20000000 │ 19536 │ │ default │ logs_m │ log_time │ DateTime │ 25181624 │ 40000000 │ 19536 │

Log

所以,我想知道是否意味着引擎类型TinyLog中的列实际上是压缩的。

ClickHouse documentationLog已压缩但不确定system.columns,我在dplyr表格中看不到。

1 个答案:

答案 0 :(得分:2)

日志引擎会压缩列数据以及TinyLog。

来自doc

的引言
  

TinyLog 最简单的表引擎,用于在磁盘上存储数据。每   列存储在单独的压缩文件中。

     

日志与TinyLog的不同之处在于,“标记”的小文件所在   列文件。

有关列的压缩和解压缩大小的信息未反映到 system.columns 表中,因为日志是一个非常简单的引擎(与 MergeTree不同)并且不存储关于自己的列文件的大量元信息(它只维护具有压缩列大小的 sizes.json 文件)。

因此,可以为 Log 的列设置 system.columns.data_compressed_bytes ,但同时 system.columns.data_uncompressed_bytes 将为零,看起来可能有问题。