🎃 有时候你想要统计MySQL中每个数据库到底占用了多少存储空间,但是没有监控,只能手动地使用SQL进行统计。
➡️ 统计脚本
- Involved tables:innodb_tablespaces
select tmp.db_name,
sum(tmp.file_size) as db_size,
format_bytes(sum(tmp.file_size)) as formated_db_size
from (
select substr(`name`,1,instr(`name`,'/')-1) db_name,
file_size
from information_schema.innodb_tablespaces
) tmp
where db_name <>'sys' and db_name <>''
group by tmp.db_name
order by db_size desc;
👣 示例结果
🔑 脚本解释
脚本中用到了表innodb_tablespaces 。另外,在MySQL中你可以使用format_bytes将字节单位转化为阅读性更好的其他单位,比如GiB,MiB等。
🏉 注意点
那上面的脚本有没有问题呢?
答案是有的。如果您的数据库名包含/ ,那么统计会出现错误,但是这种情况应该很罕见。如果真的出现这种情况,你得检查或者制定下数据库policy了。
- 😄 MySQL中对象命名规则:建议使用小写加下滑线