本人现在有个历史记录表,这个表主要用来做采集数据存储的,系统通过这个表可以查询一段时间内某组数据的平均值,数据量比较大,系统会实时向该表写入数据,并发写入并不是很多,一般是每隔一段时间会有进程向表里写数据,表没有任何更新操作,同时系统也会经常查询这个表,本人想问下,这样的表使用MyISAM还是InnoDB引擎好啊
解决方案
40
你还是应该把你的需求描述得更详细些。除了MyISAM和InnoDB或许还有更优的选择。
这种需求MyISAM和InnoDB都可以胜任
这个需求需要明确,你是以什么基准要求一段时间,例如一天、一个月、还是任意指定时间点间,或更复杂的需求,例如若干个类别和维度。
这种需求理论上MyISAM和InnoDB也都可以胜任。
物理上上MyISAM和InnoDB也都可以胜任。但是MyISAM更剩空间,InnoDB需要按Index存储,并且还有填充率之类的因素。
有和没有并发是有很大差别的。
读和写并发分别平均是多少,峰值是多少,都是什么样的操作?
每一段时间写数据是批量写吧,批的大小是多少?
经常查询的话是什么样的负载呢?
MyISAM是可以做到尾部的insert和select并发的,但是也仅限于这个操作才有并发能力。
InnoDB的并发能力比MyISAM好太多了,但是对于insert … select的能力也很差。更关键的是你能否需要这样的并发能力。
综合来讲,假如没有更多的信息或不需要更精细的选择,那么高版本的MySQL(5.1以上)就选择InnoDB,在用Xtra Backup 总是不会出大问题;假如有更多的信息就可以做更精细的设计,用MyISAM当然也是可选方案之一,还有InfoBright,MySQL的Partition,Replication读写分离,Flexviews物化视图,外部的结果缓存之类许多可以考虑的选择。