InnoDB和MyISAM存储引擎的区别

      在MySQL数据库的使用过程中我们经常会听到存储引擎这个名词。MySQL的存储引擎有好多种如InnoDB、MyISAM、Memory、NDB等等,多存储引擎也是MySQL数据库的特色。

      InnoDB和MyISAM存储引擎是MySQL数据库中经常使用的引擎,下面就将介绍下它们的功能特性。

     

      InnoDB:支持事务面向在线事务处理(OLTP),基于磁盘存储按照页的方式进行管理。在存储过程中如果没有显式定义表主键则会自动生成6字节的ROWID并以此为主键。

      特点:行锁设计、支持外键、支持全文索引、支持非锁定读、支持MVCC(多版本并发控制)。

      功能:插入缓存、二次写、自适应哈希索引、预读等等。

     

      InnoDB的体系架构:线程、内存池、文件。后台线程的作用负责刷新内存池中数据,将数据刷新到磁盘文件。

      它的数据结构是棵B+树。非叶子节点存放的是索引,数据都在叶子节点上。在数据查找时基于二分查找法。支持的索引有B+树、全文索引、哈希索引(自适应,不可人为干预)。

       

      MyISAM:不支持事务、支持全文索引、表锁设计面向联机分析处理(OLHP)。它的缓冲池只缓存索引文件而不缓冲数据文件。数据文件的缓存由操作系统完成。

      它的数据结构是棵B-树(B树不叫B减树),它的数据可以存储在非叶子节点上。它也是基于二分查找。

      由于笔者也是初学者,对于好多东西的理解不是很深刻。文中出现的错误希望大家多谅解斧正。有对数据库感兴趣的朋友还望多多留意交流。

     

     

 

posted @ 2016-12-18 21:05  、起眼  阅读(736)  评论(0编辑  收藏  举报