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

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

678455 次浏览

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

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论坛,其中提供了更全面的说明。

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

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

截图:

在此处输入图片描述

要获得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";
mysqldiskusage  --server=root:MyPassword@localhost  pics


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

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

它可以通过使用以下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

进入mysql数据目录并运行du -h --max-depth=1 | grep databasename

使用
首次登录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;

如果您希望对所有数据库大小的列表进行排序,您可以使用:

SELECT *
FROM   (SELECT table_schema AS `DB Name`,
ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) AS `DB Size in MB`
FROM   information_schema.tables
GROUP  BY `DB Name`) AS tmp_table
ORDER  BY `DB Size in MB` DESC;

此外:如果有人想获取单个表的大小,请使用以下代码:

SELECT
TABLE_NAME AS `Table Name`,
ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size ( in MB)`
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = "your_db_name"
AND
TABLE_NAME = "your_single_table_name"
ORDER BY
(DATA_LENGTH + INDEX_LENGTH)
DESC;

注意:它不会显示使用ROUND()方法的分数。

希望这能帮助我们中的许多人。