enable_adaptive_codec_selection 设置启用) :该功能可为使用默认 codec 的列中每个块选择 codec。
选择 codec_block_counts 会读取 .bin 数据文件,而不只是元数据。其他列仅读取元数据。
未在 columns_substreams.txt 中记录子流的 分片 不会列出。
所报告的每个值都源自该表的数据,因此读取结果中的任意列都需要拥有该表所有列的 SELECT 权限。仅覆盖部分列的授权是不够的。解析该函数的结构 (例如通过 DESCRIBE) 同样需要该权限。对于完全无权查看该表的用户,即未在该表上拥有 SHOW TABLES 权限的用户,无论表是否存在都会得到 ACCESS_DENIED,因此该函数不会向此类用户透露存在哪些表。
如果行策略适用于当前用户访问该表,读取 codec_block_counts 会引发 ACCESS_DENIED,因为计数会包含被该策略隐藏的行。其他列仍可读取,system.parts_columns 不受行策略影响,仍会报告这些列。
语法
参数
返回值
一个表对象,源表中每个 (活动分片、列、子流) 组合对应一行:part_name(String) — 该列所属的活动分片。column(String) — 列名。substream(String) — 计数对应的列物理流。与system.parts_columns.substreams一致。data_compressed_bytes(Nullable(UInt64)) — 子流中压缩数据的大小,单位为字节。对于Compact分片,值为NULL。data_uncompressed_bytes(Nullable(UInt64)) — 子流中未压缩数据的大小,单位为字节。对于Compact分片,值为NULL。codec_block_counts(Map(String, UInt64)) — 此子流中按 codec 分组的压缩块数量。对于Compact分片,该值为空,因为其列共用一个数据文件,因此无法按流归属 codec。
使用示例
GROUP BY,并使用 sumMap:
LowCardinality 列会分别显示其字典流和索引流: