How to get size of mysql database?
如何获取MySQL数据库的大小?假设目标数据库称为"v3"。
- 有关此处提供的脚本将有助于实现的特定表/特定数据库大小,信息是根据信息"schema.tables"表计算得出的,请参阅此处的详细答案rathishkumar.in/2017/12/…
运行此查询,您可能会得到所需的内容:
这个查询来自mysql论坛,这里有更全面的说明。
- 此选项不显示全部内容。我试图检查OTRS数据库和带有附件的表(可能是一些BLOB字段)是否计算不正确…有什么解决办法吗?
- 即使我从数据库中的表中删除了大部分数据,大小仍然相同
- @Vidz使用的是InnoDB引擎。如果您这样做了,您就可以释放空间,除非您使用每个表的文件并更改表。
- 工作得很好,谢谢!
- 请记住,此方法不会返回任何完全为空的数据库,至少必须存在一个表,数据库才能显示在结果中。
- 谢谢,它起作用了……
- 这花了很长时间,我只对一个数据库感兴趣,不是所有的数据库。
- 我发现MySQL(v5.7)中的语句失败,在"db name"和"db size in mb"之前没有"as"
- @Ozzie你知道你可以加上WHERE条款,对吗?
- 要从单个数据库中进行选择,请在FROM和GROUP行之间添加:where table_schema='DATABASE_NAME'-用数据库替换DATABASE_NAME。
- 注意:mysql工作台会吐出一个Syntax error: {column title} (double quoted text) is not valid input here.错误。列标题应该用勾号括起来。即Database Name。
- 如果要按大小ORDER BY ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) DESC进行过滤,请在末尾添加此项。
可以通过使用以下mysql命令来确定
结果
1 2 3 4
| Database Size (MB )
db1 11.75678253
db2 9.53125000
test 50.78547382 |
。
以GB为单位获取结果
。
或者,如果您使用的是phpMyAdmin,您可以查看数据库structure选项卡底部的表大小之和。实际数据库大小可能略大于此大小,但它似乎与上面提到的table_schema方法一致。
屏幕截图:
。
或者,您可以直接跳转到数据目录并检查v3.myd和v3的组合大小。MYI和V3。frm文件(用于myisam)或v3.idb&v3.frm(用于innodb)。
- 注:只有在使用innodb_file_per_表时才存在ibd文件
- 这个答案对于存储引擎来说非常具体。回答@brian willis更合适。
要获得以MB为单位的结果:
号
要获得以GB为单位的结果:
1 2 3 4 5 6 7
| mysqldiskusage --server=root:MyPassword@localhost pics
+----------+----------------+
| db_name | total |
+----------+----------------+
| pics | 1,179,131,029 |
+----------+----------------+ |
。
如果没有安装,可以通过安装mysql-utils包来安装,该包应该由大多数主要发行版打包。
进入mysql数据目录,运行du-h--max depth=1_grep databasename