2008-07-11
MySQL存储引擎的选择
一点拙见
这里,我仅仅说说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就是为读而生的。
发表评论
最近加入圈子
最新评论
-
iBATIS向PostgreSQL插入in ...
与你同在 写道额?额?额?是真的,我试过的。
-- by crackcell -
iBATIS向PostgreSQL插入in ...
额?额?额?
-- by 与你同在 -
如何成为一名DBA?
sithlqf 写道来我们寝室好好孝敬我,再告诉你 我晕,在这里都遇到你,汗… ...
-- by crackcell -
如何成为一名DBA?
来我们寝室好好孝敬我,再告诉你
-- by sithlqf







评论排行榜