我有一个包含列、一个 smallint、一个整数和两个 float 的表。每行的预期内存为 14 字节 (2+4+2*4)。 我的表中有大约 700,000 行。我没有设置主键和索引。 MyIsam 类型占用大约 10MB(每行平均 15b),而 InnoDB 类型占用超过 30Mb(平均 44b)。 我在这里错过了什么? InnoDB 会不会对每一行有这么多的开销,或者表状态号是不可信的。 我需要存储将达到 GB 的数据,因此需要权衡不同的参数来决定存储类型。
最佳答案
与 MyISAM 相比,InnoDB 表确实占用更多空间。存储使用和 InnoDB 提供的功能(崩溃安全、事务和外键)之间的权衡是否有利于 InnoDB 是您必须决定的。让我自己从 MyISAM 切换到 InnoDB,我不会再回去了。
值得注意的是,如果您打算继续使用 InnoDB,您肯定需要定义一个主键(最好是一个短键)。这是由于 InnoDB 在存储和其他索引方面的行为方式。参见 this page .
关于mysql - 与 MyIsam 相比,InnoDB 行大小较大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3794119/