我试图获得一个使用myrocks存储引擎的表在磁盘上占用的空间,但得到的结果与我所期望的结果不一致,即 information_schema
以及操作系统报告的大小。
为了获得mariadb报告的大小,我使用以下select语句:
select table_name 'Table Name',
(data_length+index_length)/power(1024,3) 'Table Size in GB'
from information_schema.tables where table_schema="MyTableName";
对于我正在做的事情,它返回了一个非常小的数字,以至于我怀疑它是否报告了实际大小(对于包含大量文本的400000行,0.4gb)。
如果我执行命令 du -h /var/lib/mysql/#rocksdb/
,我得到的磁盘大小是2.4gb,这比我预期的要大一些。但是,如果我理解正确,myrocks会在插入数据时压缩数据,因此 du
命令不代表实际的表大小。
那么,有没有可靠的方法来获得表的大小呢?我已经用正确的方法得到了table的尺寸了吗?
1条答案
按热度按时间xeufq47z1#
看来你需要使用
POWER(1024,3)
而不是POWER(2014,3)
假设存储引擎是myisam:计算方法:
数据长度
对于myisam,data_length是数据文件的长度,以字节为单位。
对于innodb,data_length是为聚集索引分配的大致内存量,以字节为单位。具体来说,它是聚集索引大小(以页为单位)乘以innodb页大小。)