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

How to get size of mysql database?

如何获取MySQL数据库的大小?假设目标数据库称为"v3"。


运行此查询,您可能会得到所需的内容:

1
2
3
4
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论坛,这里有更全面的说明。


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

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

结果

1
2
3
4
Database    Size (MB)
db1         11.75678253
db2         9.53125000
test        50.78547382

以GB为单位获取结果

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


或者,如果您使用的是phpMyAdmin,您可以查看数据库structure选项卡底部的表大小之和。实际数据库大小可能略大于此大小,但它似乎与上面提到的table_schema方法一致。

屏幕截图:

enter image description here


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


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

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

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

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

1
2
3
4
5
6
7
mysqldiskusage  --server=root:MyPassword@localhost  pics

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

如果没有安装,可以通过安装mysql-utils包来安装,该包应该由大多数主要发行版打包。


进入mysql数据目录,运行du-h--max depth=1_grep databasename