3

我有一个具有这样架构的表:

id int(10) PK,
fk_id int(10) FK,
c3 int(10),
c4 timestamp,
c5 tinyint(3),
c6 varchar(50) latin1_swedish_ci,
c7 tinyint(3),
c8 tinyint(3),
c9 tinyint(1)

现在这个表有 10,000 条记录,它的大小是 1.8 MB,根据 MYSQL 所说,索引大小为 0.3 MB,数据大小为 1.5 MB。

但是归档 c6 的所有记录几乎都是 10 或 15 个字符长度的字符串,如果您计算最大传入大小,它将是这样的:

(4+4+4+4+1+15+1+1+1)*10000 = 350 KB

但数据大小为 1500 KB。现在我很困惑为什么这张桌子的大小会高速增长,不知道这种差异的原因。MYSQL 是否可能显示错误的数据大小?或者索引大小和数据大小的错误组合?或任何其他原因?

我真的很困惑,谢谢你的帮助。

4

1 回答 1

1

我建议的第一件事是优化表格

OPTIMIZE TABLE mytable  

我希望 InnoDB 会有一些开销,请参见此处:

http://dev.mysql.com/doc/refman/5.5/en/innodb-physical-record.html

但没有你说的那么多。可能是存在碎片和未使用的空间,特别是如果您经常对该表进行插入和更新。优化表应该回收该空间。

于 2012-12-26T16:03:24.747 回答