Mysql表太大,只能容纳几行

Mysql表太大,只能容纳几行,mysql,Mysql,我有一个128Mb大的13行Mysql表(一个50k行的类似表只有50Mb),我无法理解它的原因。 以下是表格的详细信息: 要检查表大小,我使用以下语句: 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; 如果可能的话,我会避免

我有一个128Mb大的13行Mysql表(一个50k行的类似表只有50Mb),我无法理解它的原因。 以下是表格的详细信息:

要检查表大小,我使用以下语句:

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;
如果可能的话,我会避免从头开始截断或重建表


我如何调查这个问题

您正在混合使用由多个表组成的单独的表和数据库

尝试以下查询以查看单个表的大小:

SELECT CONCAT(TABLE_SCHEMA, ".", TABLE_NAME) `table`,
ROUND((data_length + index_length) / 1024 / 1024, 1) "Table Size in MB"
FROM information_schema.tables
如果单个表仍然占用意外的大量存储空间,请尝试以下查询,这将释放聚集索引中未使用的空间(至少对于InnoDB表)

优化表格

您正在将由多个表组成的独立表和数据库混合在一起

尝试以下查询以查看单个表的大小:

SELECT CONCAT(TABLE_SCHEMA, ".", TABLE_NAME) `table`,
ROUND((data_length + index_length) / 1024 / 1024, 1) "Table Size in MB"
FROM information_schema.tables
如果单个表仍然占用意外的大量存储空间,请尝试以下查询,这将释放聚集索引中未使用的空间(至少对于InnoDB表)

优化表格

请将样本数据和表定义添加为文本。请将样本数据和表定义添加为文本。此语句的值已更改,但显示的115MB对于13行来说肯定太多了…@Jack Try@Jack“对于InnoDB表,[…]在聚集索引中释放未使用的空间。”值已随此语句更改,但显示的115MB对于13行来说肯定太多了…@Jack Try@Jack“对于InnoDB表,[…]在聚集索引中释放未使用的空间。”