如何获取mysql数据库的大小?


542

如何获取mysql数据库的大小?
假设目标数据库称为“ v3”。


对于具体的表/特定的数据库大小这里提供的脚本将帮助,信息是从INFORMATION_SCHEMA.TABLES表计算,在这里看到了详细的解答rathishkumar.in/2017/12/...
Rathish

Answers:


1184

运行此查询,您可能会找到想要的东西:

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; 

该查询来自mysql论坛,那里提供了更全面的说明。


4
即使从数据库表中删除了大多数数据,大小仍然保持不变
Vidz 2014年

2
@Vidz您正在使用InnoDB引擎。如果这样做,则可以释放空间,除非您使用file_per_table并更改表。
mandza 2014年

5
请记住,此方法不会返回任何完全为空的数据库,至少必须存在一个表才能使数据库出现在结果中。
v010dya 2014年

13
要从单个数据库中进行选择,请将其添加到FROMGROUP行之间:where table_schema='DATABASE_NAME'-用DATABASE_NAME您的数据库替换。
KJ价格

2
注意:MySQL Workbench会吐出一个Syntax error: {column title} (double quoted text) is not valid input here.错误。列标题应打勾。即Database Name
KareemElashmawy

75

可以通过使用以下MySQL命令来确定

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema

结果

Database    Size (MB)
db1         11.75678253
db2         9.53125000
test        50.78547382

以GB为单位获取结果

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 / 1024 AS "Size (GB)" FROM information_schema.TABLES GROUP BY table_schema

2
真好 我喜欢这个答案。
progfan '17

31

或者,如果使用phpMyAdmin,则可以在“数据库” structure选项卡的页脚中查看表大小的总和。实际的数据库大小可能会稍微超过该大小,但是似乎与上述table_schema方法一致。

屏幕截图:

在此处输入图片说明


26

或者,您可以直接跳到数据目录并检查v3.myd,v3的组合大小。myi和v3。frm文件(用于myisam)或v3.idb和v3.frm(用于innodb)。


7
注意:仅当使用innodb_file_per_table时,ibd文件才存在
Slashterix

2
这个答案是非常特定于存储引擎的。@ brian-willis的回答更合适。
Manu Manjunath

15

要获得以MB为单位的结果:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2)) AS "SIZE IN MB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

要获得以GB为单位的结果:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024), 2)) AS "SIZE IN GB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

11
mysqldiskusage  --server=root:MyPassword@localhost  pics

+----------+----------------+
| db_name  |         total  |
+----------+----------------+
| pics     | 1,179,131,029  |
+----------+----------------+

如果未安装,则可以通过安装mysql-utils大多数主要发行版都应打包的软件包来安装。


4

首次使用登录MySQL

mysql -u username -p

显示单个数据库的大小及其表的命令,以MB为单位。

SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;

将database_name更改为您的数据库

显示所有数据库的命令,其大小以MB为单位。

SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.