【发布时间】:2010-12-16 13:14:54
【问题描述】:
如何获取mysql数据库的大小?
假设目标数据库名为“v3”。
【问题讨论】:
-
对于特定的表/特定的数据库大小,这里提供的脚本会有所帮助,信息是从 information_schema.tables 表中计算出来的,详细答案见这里rathishkumar.in/2017/12/…
如何获取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,那里有更全面的说明。
【讨论】:
FROM 和 GROUP 行之间添加:where table_schema='DATABASE_NAME' - 将 DATABASE_NAME 替换为您的数据库。
Syntax error: {column title} (double quoted text) is not valid input here. 错误。列标题应包含在刻度线中。 IE。 Database Name.
可以通过下面的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
【讨论】:
或者,您可以直接跳转到数据目录并检查 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;
【讨论】:
进入mysql数据目录,运行du -h --max-depth=1 | grep databasename
【讨论】:
如果你想对所有数据库大小的列表进行排序,你可以使用:
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;
【讨论】: