[Database] Mysql数据库存储引擎
一、InnoDB存储引擎
面向联机事务处理(OLTP),行锁设计,支持外键
默认的隔离级别是REPEATABLE 级别
在索引设计方面的特点:
1、使用B+树索引
2、分为聚集索引和辅助索引
所谓聚集索引是使用主键构造的索引,叶子节点当中存储的是行数据,或者地址。
所谓辅助索引是使用非主键构造的索引,叶子节点当中存储的是相应的主键值。这里的一个非主键可能对应了多个主键。
在实际当中在辅助索引上执行了select之后,会首先在辅助索引上进行查找,然后再在聚集索引上进行查找。
对于一张表来说,聚集索引只有一个,辅助索引可以有多个。
二、MyISAM
序列线性访问方法
不支持事务(许多地方,如果不是OLTP,没有这个必要),表锁设计,支持全文检索,缓冲池只缓存索引文件,不缓存数据文件
在索引设计方面的特点:
1、使用B+树索引
2、只有辅助索引,没有聚集索引
在辅助索引的叶子节点当中存储的是行地址,而不是主键值
所有的索引都保存在一个文件当中
.MYI
数据也存在一个表当中:
.MYD
三、Memory
使用哈希函数索引,而不是B+树索引
附:什么地方使用索引?
当取值范围比较大的时候
MyISAM和InnoDB的区别:
http://www.cnblogs.com/vicenteforever/articles/1613119.html