我有一个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 documentation说Log
已压缩但不确定system.columns
,我在dplyr
表格中看不到。
答案 0 :(得分:2)
日志引擎会压缩列数据以及TinyLog。
来自doc:
的引言TinyLog 最简单的表引擎,用于在磁盘上存储数据。每 列存储在单独的压缩文件中。
日志与TinyLog的不同之处在于,“标记”的小文件所在 列文件。
有关列的压缩和解压缩大小的信息未反映到 system.columns 表中,因为日志是一个非常简单的引擎(与 MergeTree不同)并且不存储关于自己的列文件的大量元信息(它只维护具有压缩列大小的 sizes.json 文件)。
因此,可以为 Log 的列设置 system.columns.data_compressed_bytes ,但同时 system.columns.data_uncompressed_bytes 将为零,看起来可能有问题。