我有一个表用于列,一个smallint,一个整数和两个浮点数。每行的预期内存为14字节(2 + 4 + 2 * 4)。 我的表中有大约700,000行。我没有设置主键和索引。 虽然MyIsam类型大约需要10MB(每行平均15b),但InnoDB类型需要超过30Mb(平均44b)。 我在这里错过了什么? InnoDB会为每一行留下如此多的开销,还是表格状态编号不受信任。 我需要存储将运行到GB的数据,因此需要通过权衡不同的参数来决定存储类型。
答案 0 :(得分:0)
与MyISAM相比,InnoDB表占用的空间更多。无论是存储使用与InnoDB提供的功能之间的权衡(崩溃安全,交易和外键)都有利于InnoDB是您必须决定的。我自己从MyISAM切换到InnoDB,我不会回去。
值得注意的是,如果你要继续使用InnoDB,你肯定想要定义一个主键(理想情况下是一个短键)。这是由于InnoDB在存储和其他索引中的行为方式。请参阅this page。