mysql引擎怎么选择

MySql 码拜 8年前 (2016-02-06) 806次浏览
本人现在有个历史记录表,这个表主要用来做采集数据存储的,系统通过这个表可以查询一段时间内某组数据的平均值,数据量比较大,系统会实时向该表写入数据,并发写入并不是很多,一般是每隔一段时间会有进程向表里写数据,表没有任何更新操作,同时系统也会经常查询这个表,本人想问下,这样的表使用MyISAM还是InnoDB引擎好啊
解决方案

40

你还是应该把你的需求描述得更详细些。除了MyISAM和InnoDB或许还有更优的选择。

引用 LZ wang_huanming 的回复:

本人现在有个历史记录表,这个表主要用来做采集数据存储的,

这种需求MyISAM和InnoDB都可以胜任

引用 LZ wang_huanming 的回复:

系统通过这个表可以查询一段时间内某组数据的平均值,

这个需求需要明确,你是以什么基准要求一段时间,例如一天、一个月、还是任意指定时间点间,或更复杂的需求,例如若干个类别和维度。
这种需求理论上MyISAM和InnoDB也都可以胜任。

引用 LZ wang_huanming 的回复:

数据量比较大,

物理上上MyISAM和InnoDB也都可以胜任。但是MyISAM更剩空间,InnoDB需要按Index存储,并且还有填充率之类的因素。

引用 LZ wang_huanming 的回复:

系统会实时向该表写入数据,并发写入并不是很多,一般是每隔一段时间会有进程向表里写数据,表没有任何更新操作,

有和没有并发是有很大差别的。
读和写并发分别平均是多少,峰值是多少,都是什么样的操作?
每一段时间写数据是批量写吧,批的大小是多少?

引用 LZ wang_huanming 的回复:

同时系统也会经常查询这个表,

经常查询的话是什么样的负载呢?
MyISAM是可以做到尾部的insert和select并发的,但是也仅限于这个操作才有并发能力。
InnoDB的并发能力比MyISAM好太多了,但是对于insert … select的能力也很差。更关键的是你能否需要这样的并发能力。
综合来讲,假如没有更多的信息或不需要更精细的选择,那么高版本的MySQL(5.1以上)就选择InnoDB,在用Xtra Backup 总是不会出大问题;假如有更多的信息就可以做更精细的设计,用MyISAM当然也是可选方案之一,还有InfoBright,MySQL的Partition,Replication读写分离,Flexviews物化视图,外部的结果缓存之类许多可以考虑的选择。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mysql引擎怎么选择
喜欢 (0)
[1034331897@qq.com]
分享 (0)