Mysql查询 各个数据库和表的占用大小
查看各个数据库的占用大小
# 列出所有数据库的大小(以 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
ORDER BY `Size (MB)` DESC;
查看某个数据库中各个表的占用大小
# 列出指定数据库中所有表的大小(以 MB 为单位)
# 需要替换 your_database_name 为你想要查看的数据库名
SELECT
table_name AS `Table`,
ROUND((data_length + index_length) / 1024 / 1024, 2) AS `Size (MB)`
FROM information_schema.TABLES
WHERE table_schema = 'your_database_name'
ORDER BY `Size (MB)` DESC;
查看所有数据库中各个表的占用大小 (如果表的数量过多不推荐使用,不方便查看数据)
# 列出所有数据库中所有表的大小(以 MB 为单位)
SELECT
table_schema AS `Database`,
table_name AS `Table`,
ROUND((data_length + index_length) / 1024 / 1024, 2) AS `Size (MB)`
FROM information_schema.TABLES
ORDER BY `Size (MB)` DESC;
查看表的详细大小信息
# 可以列出表的详细大小信息,包括数据大小、索引大小和总大小(以 MB 为单位).
# 需要替换 your_database_name 为你想要查看的数据库名
SELECT
table_name AS `Table`,
ROUND(data_length / 1024 / 1024, 2) AS `Data Size (MB)`,
ROUND(index_length / 1024 / 1024, 2) AS `Index Size (MB)`,
ROUND((data_length + index_length) / 1024 / 1024, 2) AS `Total Size (MB)`
FROM information_schema.TABLES
WHERE table_schema = 'your_database_name'
ORDER BY `Total Size (MB)` DESC;
查看碎片化严重的表
# 可以列出碎片化严重的表(Free Space 表示未使用的空间)
# 需要替换 your_database_name 为你想要查看的数据库名
SELECT
table_schema AS `Database`,
table_name AS `Table`,
ROUND(data_free / 1024 / 1024, 2) AS `Free Space (MB)`
FROM information_schema.TABLES
WHERE data_free > 0
ORDER BY `Free Space (MB)` DESC;
Free Space 介绍:
1. Free Space 的来源
MySQL 中,Free Space(空闲空间)是指表中未使用的存储空间。它通常是由于以下原因产生的
- 删除操作:当从表中删除数据时,MySQL 并不会立即释放磁盘空间,而是将这些空间标记为“空闲”,以便后续的插入操作可以重用这些空间。
- 更新操作:如果更新操作导致某行数据变大,MySQL 可能会将该行数据移动到新的位置,而原来的位置会被标记为“空闲”。
- 表的碎片化:频繁的插入、删除和更新操作可能导致表的存储空间变得不连续,从而产生碎片化的空闲空间。
2.Free Space 的影响
- 磁盘空间浪费:如果表的空闲空间过多,会导致磁盘空间被浪费。
- 性能影响:虽然空闲空间可以被重用,但如果表的碎片化严重,可能会影响查询性能。
3.如何减少 Free Space
- 优化表:使用 OPTIMIZE TABLE 命令可以重新组织表的存储空间,释放未使用的空间并减少碎片化。
sql语句: OPTIMIZE TABLE your_table_name;
- 重建表:通过 ALTER TABLE 重建表也可以释放空闲空间。
sql语句: ALTER TABLE your_table_name ENGINE=InnoDB;
- 定期维护:对于频繁删除和更新的表,建议定期执行优化操作。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:Mysql查询 各个数据库和表的占用大小
本文作者:伟生
发布时间:2025-03-25, 22:01:10
最后更新:2025-03-25, 22:17:59
原始链接:http://yoursite.com/2025/03/25/db_02_mysql_09/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。