我正在使用mysql库来存储来自大量数据(数亿个记录)的各种测试的结果。
我是基础的唯一用户,因此不存在任何并发问题。我还想使用简单的数学函数,如'avg','std'等
您认为这项任务的最佳引擎是什么? 我现在正在使用InnoDB,在我看来有点沉重。
此致
纪尧姆
答案 0 :(得分:5)
使用InnoDB表会带来事务支持,回滚等开销。如果您不需要这种事务支持,那么您应该使用MyISam表,因为它没有任何事务支持并且可以更快他们在InnoDB上做了很多工作以提高速度,但总有一些开销可以解决。在转换之前,我建议进一步阅读这个主题。
使用与您建议的内存表一样大的内存表可能会导致性能和存储问题。对于这些类型的表,我建议将Innodb_flush_log_at_trx_commit设置为0的MyISam结构或InnoDB表(这会切换到在将控制权返回给调用者之前不将事务提交到磁盘的模式)。
答案 1 :(得分:1)
Tokudb将是一个更好的选择。
您可以查看这些链接以获得更多理由: Tokudb bench mark for insertion和 Tokudb versus InnoDB Comparison
请考虑到Tokudb允许多个聚类索引,这可能会极大地改善选择操作。 tokudb也使用分形索引来提供良好的性能。
答案 2 :(得分:0)
您认为innodb聚簇索引会以任何方式提高您的查询性能吗?
http://dev.mysql.com/doc/refman/5.0/en/innodb-index-types.html
更多信息:
Optimal MySQL settings for queries that deliver large amounts of data?
Rewriting mysql select to reduce time and writing tmp to disk
如果您不这么认为,我会猜测myisam。