一点拙见

 

 

这里,我仅仅说说MyISAM、InnoDB、BDB(BerkeleyDB)这3个比较流行的通用引擎。
通用是相对于Heap和Merge等引擎来讲的。
鉴于Falcon还不稳定,这里暂时不考虑,不过可以预见,它将是下一个亮点。

首先分析具体需求,业务中是否要用到事务,如果要,选择的范围就比较小了,InnoDB和BDB。就主流来讲,就InnoDB吧。BDB还不怎么流行。一般的选择就是InnoDB了

然后分析业务是否要面对高并发,3个主流的并发性能从小到达排列是MyISAM<BDB<InnoDB。
MyISAM是表锁定的,也就是说,独占锁一次锁住的是一张表。
DBD是页锁定的,每个页为8KB。
InnoDB是行锁定的。

InnoDB和Oracle、PostgreSQL等一样使用了一种叫做MVCC(multi-version concurrency control)机制来实现的行锁定,但需要注意的是,锁的粒度越小,带来的额外系统开销也就越大。

所以并不是并发性越好,性能就越好的。选择存储引擎还是要根据具体的需求来看。


然后分析表负载中读写比例,如果是读大量多于写或者写大量多于读,我觉得你可以考虑一下MyISAM。虽然MyISAM是表锁定,但它的读(select)是不需要锁的。对于大多数web应用, MyISAM是最佳选择。
此外,MyISAM能使用索引来加速查询。

可以说MyISAM就是为读而生的。

评论
发表评论

您还没有登录,请登录后发表评论

crackcell
搜索本博客
存档
最新评论