我可以运行这个查询来获得MySQL数据库中所有表的大小:

show table status from myDatabaseName;

我希望有人能帮助我理解结果。我在找尺寸最大的桌子。

我应该看哪一列?


当前回答

如果您正在使用phpmyadmin,那么只需转到表结构

e.g.

Space usage
Data    1.5 MiB
Index   0   B
Total   1.5 Mi

其他回答

SELECT 
    table_name AS "Table",  
    round(((data_length + index_length) / 1024 / 1024), 2) as size   
FROM information_schema.TABLES  
WHERE table_schema = "YOUR_DATABASE_NAME"  
ORDER BY size DESC; 

这将对大小进行排序(DB大小以MB为单位)。

如果您正在使用phpmyadmin,那么只需转到表结构

e.g.

Space usage
Data    1.5 MiB
Index   0   B
Total   1.5 Mi

这只是一个供以后参考的说明。所有答案都依赖于I_S.TABLES。例如,如果你在表中有blob字段,它不会告诉你正确的大小。LOB页存储在外部页中,因此不计入聚集索引。 事实上有一个注释:

对于NDB表,该语句的输出显示适当的值 AVG_ROW_LENGTH和DATA_LENGTH列,例外 没有考虑到BLOB列。

我发现InnoDB也是如此。

我已经创建了社区Bug相同。

select x.dbname as db_name, x.table_name as table_name, x.bytesize as the_size from
  (select
     table_schema as dbname,
     sum(index_length+data_length) as bytesize,
     table_name
   from
     information_schema.tables
   group by table_schema
  ) x
where
  x.bytesize > 999999
order by x.bytesize desc;
SELECT TABLE_NAME AS "Table Name", 
table_rows AS "Quant of Rows", ROUND( (
data_length + index_length
) /1024, 2 ) AS "Total Size Kb"
FROM information_schema.TABLES
WHERE information_schema.TABLES.table_schema = 'YOUR SCHEMA NAME/DATABASE NAME HERE'
LIMIT 0 , 30

您可以从“information_schema”-> SCHEMATA表->“SCHEMA_NAME”列中获取模式名称


额外的 你可以得到mysql数据库的大小如下。

SELECT table_schema "DB Name", 
Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
FROM   information_schema.tables 
GROUP  BY table_schema
ORDER BY `DB Size in MB` DESC;

结果

DB Name              |      DB Size in MB

mydatabase_wrdp             39.1
information_schema          0.0

你可以在这里得到更多的细节。