如何获取mysql数据库的大小?假设目标数据库称为“v3”。
运行这个查询,你可能会得到你要找的东西:
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,其中提供了更全面的说明。
可以使用以下 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
或者,如果您使用 phpMyAdmin
,您可以查看数据库 structure
选项卡页脚中的表大小总和。实际的数据库大小可能略高于这个大小,但它似乎与上面提到的 table_schema
方法一致。
截屏 :
https://i.stack.imgur.com/Do40K.png
或者,您可以直接跳转到数据目录并检查 v3.myd、v3 的组合大小。 myi 和 v3。 frm 文件(用于 myisam)或 v3.idb 和 v3.frm(用于 innodb)。
要获得以 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-utilities
mysqldiskusage
要求在命令行中使用未加密的密码。确保在使用后将其从历史记录中删除。
首次登录 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;
进入 mysql 数据目录并运行 du -h --max-depth=1 | grep databasename
另外:如果有人想获得单个表的大小,请使用以下代码:
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()
方法的分数。
希望这对我们中的许多人有所帮助。
FROM
和GROUP
行之间添加:where table_schema='DATABASE_NAME'
- 将DATABASE_NAME
替换为您的数据库。Syntax error: {column title} (double quoted text) is not valid input here.
错误。列标题应包含在刻度线中。即Database Name
。