本文介紹了如何使用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查看列存索引同步位點。如果同步到最新位點,但是列存索引行數與主表不一致,請聯系我們。