mysql - 与 MyIsam 相比,InnoDB 行大小较大

标签 mysql memory innodb myisam memory-footprint

我有一个包含列、一个 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/

相关文章:

mysql - 编写查询以选择带有附加字母的列

c++ - 如何存储 while 循环中产生的数据?

mysql - innodb_memcache如何设置daemon_memcached_w_batch_size

mysql - 这个SQL语句有什么问题?

mysql - 如何从数据库中检索特殊字符?

php 循环 mysql 帮助

c - 在 C 中打印通过管道传递的 void* 内存地址

c - malloc 问题?

mysql - 插入导致 InnoDB 中出现死锁。这怎么发生的?

mysql - 数据锁定阻止查询运行 - MySQL InnoDB