0x00 mysql数据库常用存储引擎mysql数据库是一款开源的数据库,支持多种存储引擎的选择,比如目前最常用的存储引擎有:myisam,innodb,memory等。
myisam存储引擎myisam是mysql的默认存储引擎,它支持b-tree/fulltext/r-tree索引类型,并且myisam的锁级别是表锁,表锁的开销小,加锁快;锁粒度大,发生锁冲突的概率较高,并发度低;表锁适合查询。myisam引擎不支持事务性,也不支持外键。
innodb存储引擎innodb存储引擎最大的亮点就是支持事务性,支持回滚。它支持hash/b-tree索引类型。innodb的锁级别是行锁,行锁在锁定上带来的消耗大于表锁,但是在系统并发访问量较高时,innodb整体性能远高于myisam。innodb的索引不仅缓存索引本身,也缓存数据,所以innodb需要更大的内存。
memory存储引擎memory存储引擎是一个内存级的存储引擎,它将所有数据都存储在内存中,所以它能够存储的数据量是比较小的。而因为内存的特性,memory存储引擎对于数据的一致性支持教差。memory的锁级别和myisam一样,是表锁;并且不支持事务性。
0x01 如何选择合适的存储引擎采用myisam引擎r/w > 100 : 1并且update较少 (r/w:读写比) 并发不高,不需要支持事务 表数据量小 需要进行全文搜索采用innodb引擎r/w比较小,频繁更新大字段 表数据量超过千万,高并发 安全性和可用性要求高采用memory引擎有足够的内存 对数据一致性要求不高,如session/在线人数等 需要定期归档的数据0x02 结语数据库的选择,数据库存储引擎的选择,以及数据库的优化,就像是一门艺术,它没有好与坏之分,只有适合与不适合。一个项目需要考虑的因素很多,如何去权衡几个因素之间的权重,如何找到一个最优解,真的需要长时间的经验积累,数据库的学习之路漫漫,坚持,再坚持!