如何获得真正的MySQL数据库大小?
我想知道我的MySQL数据库使用多less空间,以select一个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字节的数据? 索引长度是什么意思? 谢谢 !
来自S. Prakash在MySQL论坛上发现:
SELECT table_schema "Data Base Name", sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB", sum( data_free )/ 1024 / 1024 "Free Space in MB" FROM information_schema.TABLES GROUP BY table_schema ;
您可以通过在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>"
如果你使用phpMyAdmin,它可以告诉你这个信息。
只需进入“数据库”(顶部的菜单),然后点击“启用统计”。
你会看到这样的东西:
随着尺寸的增加,这可能会失去一些准确性,但对于您的目的而言,它应该足够准确。
如果你想find它在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;
基本上有两种方法:查询数据库(数据长度+索引长度)或检查文件大小。 索引长度与索引中存储的数据有关。
一切都在这里描述:
http://www.mkyong.com/mysql/how-to-calculate-the-mysql-database-size/
没有答案包括开销大小和表的元数据大小。
以下是对数据库分配的“磁盘空间”的更准确估计。
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'
SUM(Data_free)
可能有效,也可能不会有效 。 这取决于innodb_file_per_table
的历史。 更多的讨论在这里find。