148

我想知道我的 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字节的数据?索引长度是什么意思?谢谢 !

4

10 回答 10

292

来自MySQL 论坛上的 S. Prakash :

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; 
于 2014-01-16T17:46:59.707 回答
94

您可以通过在 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>"
于 2015-07-29T06:10:52.590 回答
33

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

只需转到“数据库”(顶部菜单)并单击“启用统计信息”。

你会看到这样的东西:

phpMyAdmin 截图

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

于 2013-02-05T19:03:31.103 回答
10

如果您想在 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; 
于 2016-07-20T16:41:57.347 回答
4

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

一切都在这里描述:

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

于 2013-02-05T18:57:49.197 回答
1

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

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

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'
于 2016-05-09T11:07:13.353 回答
1

如果要查找所有 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;
于 2018-10-20T13:51:44.520 回答
0

SUM(Data_free) 可能有效也可能无效。这取决于innodb_file_per_table. 更多讨论可在此处找到。

于 2017-02-22T02:16:50.390 回答
0

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

于 2018-03-26T18:57:44.770 回答
0

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

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

    在此处输入图像描述

  3. 它显示了 Schema 大小的所有细节

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

    在此处输入图像描述

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

于 2018-10-17T09:03:24.420 回答