如何统计MySQL中数据库的大小

74 阅读1分钟

🎃 有时候你想要统计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;

👣 示例结果

Untitled.png

🔑 脚本解释

脚本中用到了表innodb_tablespaces 。另外,在MySQL中你可以使用format_bytes将字节单位转化为阅读性更好的其他单位,比如GiB,MiB等。

🏉 注意点

那上面的脚本有没有问题呢?

答案是有的。如果您的数据库名包含/ ,那么统计会出现错误,但是这种情况应该很罕见。如果真的出现这种情况,你得检查或者制定下数据库policy了。

  • 😄 MySQL中对象命名规则:建议使用小写加下滑线