Mysql数据库是一款开源的数据库,支持多种存储引擎的选择,好比目前最经常使用的存储引擎有:MyISAM,InnoDB,Memory等。sql
MyISAM是Mysql的默认存储引擎,它支持B-tree/FullText/R-tree索引类型,而且MyISAM的锁级别是表锁,表锁的开销小,加锁快;锁粒度大,发生锁冲突的几率较高,并发度低;表锁适合查询。MyISAM引擎不支持事务性,也不支持外键。数据库
InnoDB存储引擎最大的亮点就是支持事务性,支持回滚。它支持Hash/B-tree索引类型。InnoDB的锁级别是行锁,行锁在锁定上带来的消耗大于表锁,可是在系统并发访问量较高时,InnoDB总体性能远高于MyISAM。InnoDB的索引不只缓存索引自己,也缓存数据,因此InnoDB须要更大的内存。缓存
Memory存储引擎是一个内存级的存储引擎,它将全部数据都存储在内存中,因此它可以存储的数据量是比较小的。而由于内存的特性,Memory存储引擎对于数据的一致性支持教差。Memory的锁级别和MyISAM同样,是表锁;而且不支持事务性。安全
R/W > 100 : 1而且Update较少 (R/W:读写比)session
并发不高,不须要支持事务并发
表数据量小高并发
须要进行全文搜索性能
R/W比较小,频繁更新大字段学习
表数据量超过千万,高并发优化
安全性和可用性要求高
有足够的内存
对数据一致性要求不高,如session/在线人数等
须要按期归档的数据
数据库的选择,数据库存储引擎的选择,以及数据库的优化,就像是一门艺术,它没有好与坏之分,只有适合与不适合。一个项目须要考虑的因素不少,如何去权衡几个因素之间的权重,如何找到一个最优解,真的须要长时间的经验积累,数据库的学习之路漫漫,坚持,再坚持!
原文做者:我才是二亮
原文连接:http://www.2liang.me/archives/254转载必须在正文中标注并保留原文连接、做者等信息。