为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
- 【TiDB 版本】:4.0
- 【问题描述】:select concat(round(sum(DATA_LENGTH/1024/1024),2),‘MB’) as data from TABLES where table_schema=‘test’ and table_name=‘pow’; 这个查询的几个副本占用的磁盘大小,还有这个查出来的大小是否为真实的磁盘占用,如果不是,该怎么查
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
你好,
此方式查出的磁盘占用量是 不准确的,tikv 中存储数据为 kv 对,所以在 tidb 中无 table 概念,存储数据对应的是 region,size 可以通过以下方式查看
https://pingcap.com/docs-cn/stable/sql-statements/sql-statement-show-table-regions/#show-table-regions
你好,这个查出来是三副本的大小吗
指的这一个 region 的大小
@Sky-zzt 抱歉,我们尽快完善下这个文档,官方文档对这些系统表的描述的确不明确,我们尽量本周内完善这些文档。
TABLES 中的 DATA_LENGTH 字段含义是用统计信息估算的行数*各列数据长度总和的理论大小,例如表 t 有 a bigint, b varchar(100) 两列,并有 index idx(a),假如统计信息估算该表有 1000 行,那么表 t 对应的 DATA_LENGTH 计算方式如下:
DATA_LENGTH = 1000 * (8 + column_b_length + 8)
其中第一个 8 是列 a 的长度,为 8 字节,第 2 个 8 是索引idx 的长度, column_b_length 是 b 列值在统计信息中的估算大小。
如果统计信息是准确的,可以认为 DATA_LENGTH 是表 t 的理论数据大小,并非是实际占用磁盘的大小,这里并没有考虑3副本,以及底层 TiKV 存储 kv 时会采用压缩算法。
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。