本文介绍了如何使用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就是一个快照版本,依次递增。
只有创建成功的列存索引才会显示统计信息,正在创建过程中的列存索引不会显示。
常见问题
为什么各种文件个数会变化? 答:列存包含compaction操作来保证文件的数据以排序键进行排序,例如将追加写文件转成ORC文件、ORC文件间进行范围排序等。
一段时间没有更新数据,CSV_FILES追加写的文件个数为什么不为0? 答:CSV_FILES追加写文件达到一定阈值条件才会触发compaction转成列式存储文件,根据分区划分数据,每个分区可能会保留一个文件,同时该类文件的个数还取决于后台compaction的速度。
ID列的作用? 答:用户无需关心ID列,它只是对应每一个列存索引的唯一标识,具有全局唯一性,用于列存内核区分列存索引,解决列存索引名称相同,删除列存索引再建相同列存索引等问题,列存索引删除再建时尽管名称相同,唯一标识ID会不同。
列存索引的ROWS行数与主表select count(*)结果不相等吗? 答:首先观察列存索引是否已同步到最新Binlog位点,可通过SHOW COLUMNAR OFFSET查看列存索引同步位点。如果同步到最新位点,但是列存索引行数与主表不一致,请联系我们。