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

时间:2013-02-05 18:53:51

标签: mysql database size byte storage

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

Name       | Rows | Avg. Row Length | Data_Length | Index Length
----------   ----   ---------------   -----------   ------------
table_name   400          55            362000        66560
  • 数字四舍五入。

此表的数据是 362000 还是400 * 362000 = 144800000 ? 索引长度是什么意思? 谢谢!

10 个答案:

答案 0 :(得分:272)

来自S. Prakash,发现于MySQL forum

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; 

或者在一行中便于复制粘贴:

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; 

答案 1 :(得分: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>"

答案 2 :(得分:29)

如果你使用phpMyAdmin,它可以告诉你这个信息。

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

你会看到这样的事情:

phpMyAdmin screenshot

随着尺寸的增加,这可能会失去一些准确性,但它应该足够准确用于您的目的。

答案 3 :(得分: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; 

答案 4 :(得分:3)

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

这里描述了一切:

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

答案 5 :(得分:0)

没有答案包括表格的开销大小和元数据大小。

这是对磁盘空间的更准确估计&#34;由数据库分配。

SELECT ROUND((SUM(data_length+index_length+data_free) + (COUNT(*) * 300 * 1024))/1048576+150, 2) AS MegaBytes FROM information_schema.TABLES WHERE table_schema = 'DATABASE-NAME'

答案 6 :(得分:0)

SUM(Data_free) 可能有效也可能无效。这取决于innodb_file_per_table的历史。更多讨论发现here

答案 7 :(得分:0)

Oracle的MySQL Utilities有一个名为mysqldiskusage的命令,它显示每个数据库的磁盘使用情况:https://dev.mysql.com/doc/mysql-utilities/1.6/en/mysqldiskusage.html

答案 8 :(得分:0)

如果使用的是MySql Workbench,则很容易获得数据库大小,每个表大小,索引大小等的所有详细信息。

  1. 右键单击架构
  2. 选择架构检查器选项

    enter image description here

  3. 它显示模式大小的所有详细信息

  4. 选择表格标签以查看每个表格的大小。

    enter image description here

  5. “数据长度”列中显示的表大小

答案 9 :(得分:0)

如果要查找所有MySQL数据库的大小,请使用此命令,它将以兆字节显示它们各自的大小;

SELECT table_schema "database", sum(data_length + index_length)/1024/1024 "size in MB" FROM information_schema.TABLES GROUP BY table_schema;

如果数据库很大,则可以使用以下命令以GB为单位显示结果;

SELECT table_schema "database", sum(data_length + index_length)/1024/1024/1024 "size in GB" FROM information_schema.TABLES GROUP BY table_schema;

如果只想显示特定数据库的大小,例如YOUR_DATABASE_NAME,则可以使用以下查询;

SELECT table_schema "database", sum(data_length + index_length)/1024/1024/1024 "size in GB" FROM information_schema.TABLES WHERE table_schema='YOUR_DATABASE_NAME' GROUP BY table_schema;