MySQL中测量数据大小:DATA_LENGTH使用手册

处理数据库的时候,有时候需要知道表占用的空间大小。在MySQL里,DATA_LENGTH列提供了这个信息。不过在MySQL中,DATA_LENGTH通常是通过information_schema数据库的TABLES表来查看的。


查询表的数据长度

想要查看特定表的总数据长度,可以执行这样一个查询:

SELECT DATA_LENGTH

FROM information_schema.TABLES

WHERE TABLE_SCHEMA = 'database_name' ANDTABLE_NAME = 'table_name';

把database_name换成数据库的名字,table_name换成表的名字。这条SQL语句会返回表的数据长度,单位是字节。


查看整个数据库的数据长度

有时还需要知道整个数据库占用的空间大小。下面这个查询提供了整个数据库的DATA_LENGTH总和:

SELECT SUM(DATA_LENGTH)

FROM information_schema.TABLES

WHERE TABLE_SCHEMA = 'database_name';

这里database_name是目标数据库名字。这条查询会得到全部表的DATA_LENGTH之和,也就是整个数据库的数据占用空间。


数据长度和索引长度

除了数据长度,可能还想知道索引占用了多少空间。这里还有一个INDEX_LENGTH列,它也在information_schema.TABLES表里。要得到表的总长度(包括数据和索引),可以把DATA_LENGTH和INDEX_LENGTH加起来:

SELECT DATA_LENGTH + INDEX_LENGTH AStotal_length

FROM information_schema.TABLES

WHERE TABLE_SCHEMA = 'database_name' ANDTABLE_NAME = 'table_name';

上面的total_length就是包含数据和索引的总长度。


高级:表空间使用率

有经验的用户可能还想知道表空间的使用率。表空间的使用率可以这么算:

SELECT

 TABLE_NAME,

 TABLE_ROWS,

 DATA_LENGTH,

 INDEX_LENGTH,

 (DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 AS total_length_MB,

 (DATA_FREE / 1024 / 1024) AS data_free_MB

FROM

 information_schema.TABLES

WHERE

 TABLE_SCHEMA = 'database_name';

其中DATA_FREE指的是分配了还没用的空间,单位也是字节。这样查询出来的结果会给出每个表占用的数据长度、索引长度、总长度(转为了MB),以及未使用的空间(也是MB)。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容