2009-11-14 24 views
330

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

+0

对于特定表/特定的数据库大小这里提供的脚本将帮助,信息是从INFORMATION_SCHEMA.TABLES表计算,见详细的答案在这里http://www.rathishkumar.in/2017/12/how-to-find-database-and-table-size-in-mysql.html – rathishDBA 2017-12-29 12:42:06

回答

760

运行此查询,你可能会得到你在找什么:

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; 

该查询来自the mysql forums,那里有更多的可用的全面说明。

+0

这个选择不显示我所有。我试图检查OTRS数据库和带附件的表(可能是一些BLOB字段)似乎没有正确计算...任何workaroud? – ceinmart 2013-10-08 14:36:11

+1

即使我从数据库中的表中删除了大部分数据,大小仍然相同 – Vidz 2014-08-08 09:05:54

+2

@Vidz是否使用InnoDB引擎。如果这样做,除非使用file_per_table和alter table,否则可以释放空间。 – mandza 2014-11-01 09:32:58

22

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

+4

注意:ibd文件仅在使用innodb_file_per_table时才存在 – Slashterix 2014-08-01 21:45:07

+0

此答案对存储引擎非常具体。通过@ brian-willis回答更合适。 – 2017-06-23 09:03:55

16

或者,如果您使用的是phpMyAdmin,则可以查看数据库页脚structure选项卡中表格大小的总和。实际的数据库大小可能略高于此大小,但它看起来与上面提到的table_schema方法一致。

屏幕截图:

enter image description here

5

要以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";` 
3
mysqldiskusage --server=root:[email protected] pics 

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

它可以通过下面的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 
+1

不错。我喜欢这个答案。 – progfan 2017-12-22 11:45:37