如何获得真正的MySQL数据库大小?

mar*_*vin 143 mysql database size storage byte

我想知道我的MySQL数据库使用了多少空间,以便选择一个Web主机.我发现命令SHOW TABLE STATUS LIKE 'table_name'所以当我进行查询时,我得到这样的东西:

Name       | Rows | Avg. Row Length | Data_Length | Index Length
----------   ----   ---------------   -----------   ------------
table_name   400          55            362000        66560
Run Code Online (Sandbox Code Playgroud)
  • 数字四舍五入.

那么这张表有362000 或400*362000 = 144800000字节的数据吗?索引长度是什么意思?谢谢 !

小智 278

来自S. Prakash,在MySQL论坛上找到:

SELECT table_schema "database name",
    sum( data_length + index_length ) / 1024 / 1024 "database size in MB",
    sum( data_free )/ 1024 / 1024 "free space in MB"
FROM information_schema.TABLES
GROUP BY table_schema; 
Run Code Online (Sandbox Code Playgroud)

或者在一行中更容易复制粘贴:

SELECT table_schema "database name", sum( data_length + index_length ) / 1024 / 1024 "database size in MB", sum( data_free )/ 1024 / 1024 "free space in MB" FROM information_schema.TABLES GROUP BY table_schema; 
Run Code Online (Sandbox Code Playgroud)

  • 以字节为单位的可用空间意味着 - 如果您优化表或从头开始重建表,则意味着可以回收空间量.当数据库在磁盘上存储信息时,它们以块为单位进行分配; 删除记录通常会释放已使用块之间的块,并且将所有其他块移位以使用该空间非常昂贵,因此它被标记为"空闲".该空间可以稍后由数据库引擎本身使用,或者可以使用`OPTIMIZE TABLE foo`(MyISAM)回收,或者为InnoDB表重新创建+分析. (12认同)
  • MB中的自由空间意味着什么?我有100个GB免费但报告不到1 GB免费. (7认同)

min*_*s23 92

您可以通过在Mysql客户端中运行以下命令来获取Mysql数据库的大小

SELECT  sum(round(((data_length + index_length) / 1024 / 1024 / 1024), 2))  as "Size in GB"
FROM information_schema.TABLES
WHERE table_schema = "<database_name>"
Run Code Online (Sandbox Code Playgroud)


Rad*_*zea 29

如果您使用phpMyAdmin,它可以告诉您这些信息.

只需转到"数据库"(顶部的菜单),然后单击"启用统计信息".

你会看到这样的东西:

phpMyAdmin截图

随着尺寸的增加,这可能会失去一些准确性,但它应该足够准确,以满足您的需要.


小智 8

如果你想以MB为单位找到它

SELECT table_schema                                        "DB Name", 
   Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
FROM   information_schema.tables 
GROUP  BY table_schema; 
Run Code Online (Sandbox Code Playgroud)


小智 4

基本上有两种方法:查询DB(数据长度+索引长度)或检查文件大小。索引长度与索引中存储的数据有关。

一切都在这里描述:

http://www.mkyong.com/mysql/how-to-calculate-the-mysql-database-size/