MySQL数据库几种存储引擎的功能和特性

MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站的数据库。存储引擎是MySQL数据库的重要组成部分之一,也是在不同应用场景下,对MySQL数据库进行设置的重要考察点之一。本文将介绍MySQL数据库几种存储引擎的功能和特性。

MySQL存储引擎

InnoDB存储引擎:是面向OLTP(Online Transaction Processing)、行锁、支持外键、非锁定读,MySQL-4.1开始支持每个InnoDB引擎的表单独放倒一个表空间里。InnoDB通过使用MVCC来获取高并发性,并且实现SQL的4种隔离级别,同时使用一种被称为next-key locking的策略来避免换读(phantom)现象。除此之外,InnoDB引擎还提供了插入缓存(insert buffer)、二次写(doulbe write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能技术。

MyISAM存储引擎:不支持事务、表锁、全文索引、适合olap(在线分析处理)应用,其中myd:放数据文件,myi:放索引文件。MySQL-5.0版本之前,MyISAM默认支持的表大小为4G,从MySQL-5.0以后,MyISAM默认支持256T的表单数据。MyISAM只缓存索引数据。

NDB存储引擎:集群存储引擎,share nothing,特点是数据放在内存中,可提高可用性。MySQL-5.1版本开始可以将非索引数据放到磁盘上。NDB之前的缺陷是join查询是MySQL数据库层完成的,而不是存储引擎完成的,复杂的join查询需要巨大的网络开销,速度很慢。当前MySQL cluster7.2版本中已经解决此问题,join查询效率提高了70倍。

MySQL还支持Memory存储引擎、Archive存储引擎、Maria存储引擎。本文不再一一赘述。

你可能感兴趣的:(MySQL数据库几种存储引擎的功能和特性)