2

我有一张Log桌子,也有一张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中的列实际上被压缩了。

ClickHouse 文档指出TinyLog已压缩但不确定,我在表Log中没有看到。system.columns

4

1 回答 1

3

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

来自文档的报价:

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

Log与 TinyLog 的不同之处在于,一个小“标记”文件驻留在列文件中。

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

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

于 2017-07-07T18:48:56.543 回答