admin管理员组

文章数量:1582018

1.MYSQL的搜索引擎

查看存储引擎的方法:

使用命令 show engines,可以得到以下结果

图中的结果就是mysql的所有搜索(存储)引擎;关于这几种搜索引擎的简介可以看Mysql搜索引擎总结

这位博主的文章,他写的很详细了。接下来本文只对InnoDB和MyISAM这两种常用的引擎进行对比。

2.InnoDB与MyISAM对比

首先需要了解的是,mysql5.1以前默认的存储引擎是MyISAM,5.1及以后默认使用的是InnoDB。根据mysql版本和需要可以手动修改存储引擎;当然,可以给不同表使用不同的存储引擎。

现将两者对比如下:

1)InnoDB是事务性存储引擎 而  MyISAM不支持事务(需要考虑ACID时选择前者)

2)InnoDB支持外键               而  MyISAM不支持外键 (但在现实项目中,外键基本不需要)

3)两者采用的索引结构都是B+ Tree,但叶子节点存放的数据不同:

InnoDB的B+Tree存放主键+其他字段数据 or 其他字段数据+ 主键指针(InnoDB的B+Tree索引两种形态);

MyISAM存放指向数据的指针(该引擎的表是堆表,存放会有三个文件。内容分别为表定义,表数据,表索引);

因此MyISAM所需内存比InnoDB少(InnoDB索引结构中有数据块)。

4)InnoDB支持行锁,做update+insert快(主要是更新),MyISAM做select+insert快(主要是查询)。尤其是count(*)时(没有where)MyISAM不用遍历表。

 

本文标签: 数据库引擎mysql