检查多个mysql表和模式的大小

时间:2010-11-12 05:53:50

标签: mysql database

我的数据库服务器上的空间用完了,我想快速查看所有模式的所有表,以及每个表占用多少大小。我该怎么做?

如果我能找到最胖的模式并从那里开始工作,那也很好。

3 个答案:

答案 0 :(得分:5)

您可以使用 SHOW TABLE STATUS 命令 在MySQL中。如果您转到MySQL提示符并选择数据库,则使用 SHOW TABLE STATUS命令,如下所示:

show table status like '%';

你会找到一个名为Data_length的列,告诉你“它的长度 数据文件“为每个表。如果你只是添加每个表的大小 在数据库中,你应该有整体的大小 数据库中。

如果您在MySQL查询浏览器中运行下面给出的查询,那么您将首先获得两列将显示数据库名称,第二列将以MB为单位显示数据库大小。

SELECT table_schema "Data Base Name", sum( data_length + index_length ) / 1024 / 1024 "Data Base Size in MB"
FROM information_schema.TABLES GROUP BY table_schema ; 

答案 1 :(得分:4)

只需cd PATH_TO_DATABASE_DATA;

  对于`find -type d`中的db,

; do du -shc $ db / *;完成|少

或使用maxdepth

   type-type d -maxdepth 1中的db; do du -shc $ db / *。{MYI,MYD,frm};完成|少

如果想要排序

   type-type d -maxdepth 1中的db; do ls -alS $ db / *。{MYI,MYD,frm};完成|少

*.MYI = index size
*.MYD = data size
*.frm = table schema size

答案 2 :(得分:1)

您应该使用SHOW TABLE STATUS:https://dev.mysql.com/doc/refman/5.0/en/show-table-status.html

SHOW TABLE STATUS的工作原理如SHOW TABLES,但提供了很多关于每个非TEMPORARY表的信息。