SHOW COLUMNAR STATUS

本文介绍了如何使用SHOW COLUMNAR STATUS语句查看当前库下的列存数据量情况。

注意事项

实例版本需为5.4.19-16989811及以上

语法

SHOW COLUMNAR STATUS

示例

SHOW COLUMNAR STATUS;
+---------------------+-------------+------------+--------------------+------+-------+-----------+-----------+-----------+------------+
| TSO                 | SCHEMA_NAME | TABLE_NAME | INDEX_NAME         | ID   | ROWS  | CSV_FILES | ORC_FILES | DEL_FILES | FILES_SIZE |
+---------------------+-------------+------------+--------------------+------+-------+-----------+-----------+-----------+------------+
| 7127209598129274944 | xxx_db      | sbtest1    | s1_col_index_$b243 | 1447 | 10    | 4         | 0         | 0         | 580        |
| 7127209598129274944 | xxx_db      | sbtest2    | s2_col_index_$a378 | 1469 | 81910 | 1         | 1         | 1         | 3565100    |
+---------------------+-------------+------------+--------------------+------+-------+-----------+-----------+-----------+------------+

返回结果说明:

列名

说明

TSO

列存索引最新一次提交的TSO。

SCHEMA_NAME

库名。

TABLE_NAME

表名。

INDEX_NAME

列存索引名。

ID

列存索引的唯一标识。

ROWS

通过文件统计的列存索引内的行数。

CSV_FILES

追加写文件的个数。

ORC_FILES

ORC文件(列存存储文件)的个数。

DEL_FILES

存储删除行标记数据的文件个数。

FILES_SIZE

所有文件长度的总和,单位:B。

TSO代表列存最新一次提交的TSO,然后统计截止到该TSO,该库下的所有列存索引表的统计信息,可以理解每一个TSO就是一个快照版本,依次递增。

说明

只有创建成功的列存索引才会显示统计信息,正在创建过程中的列存索引不会显示。

常见问题

  1. 为什么各种文件个数会变化? 答:列存包含compaction操作来保证文件的数据以排序键进行排序,例如将追加写文件转成ORC文件、ORC文件间进行范围排序等。

  2. 一段时间没有更新数据,CSV_FILES追加写的文件个数为什么不为0? 答:CSV_FILES追加写文件达到一定阈值条件才会触发compaction转成列式存储文件,根据分区划分数据,每个分区可能会保留一个文件,同时该类文件的个数还取决于后台compaction的速度。

  3. ID列的作用? 答:用户无需关心ID列,它只是对应每一个列存索引的唯一标识,具有全局唯一性,用于列存内核区分列存索引,解决列存索引名称相同,删除列存索引再建相同列存索引等问题,列存索引删除再建时尽管名称相同,唯一标识ID会不同。

  4. 列存索引的ROWS行数与主表select count(*)结果不相等吗? 答:首先观察列存索引是否已同步到最新Binlog位点,可通过SHOW COLUMNAR OFFSET查看列存索引同步位点。如果同步到最新位点,但是列存索引行数与主表不一致,请联系我们