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

我想知道有多少空间,我的 MySQL 数据库使用,为了选择一个网络主机。 我找到了命令 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字节? 索引长度是什么意思? 谢谢!

220828 次浏览

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

这里描述了一切:

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

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

点击“数据库”(上面的菜单) ,然后点击“启用统计信息”。

你会看到这样的东西:

phpMyAdmin screenshot

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

来自 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;

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

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;

可以通过在 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>"

所有的答案都不包括表的开销大小和元数据大小。

下面是对数据库分配的“磁盘空间”的更准确的估计。

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'

如果你想找到它在 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;

这取决于 innodb_file_per_table的病史。更多的讨论发现 这里

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

如果你正在使用 MySql 工作台,很容易得到所有的细节数据库大小,每个表的大小,索引大小等。

  1. 右击 Schema
  2. 选择 模式检查员选项

    enter image description here

  3. 它显示架构大小的所有详细信息

  4. 选择 桌子选项卡以查看每个表的大小。

    enter image description here

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

如果你想找到所有 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;