我的数据库服务器上的空间用完了,我想快速查看所有模式的所有表,以及每个表占用多少大小。我该怎么做?
如果我能找到最胖的模式并从那里开始工作,那也很好。
答案 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表的信息。