MySQL下的存储引擎

一、什么是存储引擎?

存储引擎是MySQL中基于表提供的访问文件的一种机制。对于MySQL来说,它提供了多种类型的存储引擎,我们可以根据对数据处理的需求,选择不同的存储引擎,从而最大限度的利用MySQL强大的功能。

二、分类

InnoDB存储引擎

①是windows下MySQL数据库默认的存储引擎。

②支持事务、支持行锁、支持事务安全表(ACID)。

支持外键,在存储表中的数据时,每张表都是按照主键的顺序进行存方放,如果在定义表时没有指定主键,则InnoDB会为每一行生成一个6字节的rowid,并以此作为主键。

④不支持全文索引。

注:行锁-》有前提,只有出现在以索引的方式查找时,进行行锁。对于非索引项(当where条件没有加主键时)加的依旧是表锁。

★适合于需要事务支持、外键约束、自动灾难恢复、大量updata的表中。

MyISAM存储引擎

①是Linux下MySQL数据库默认的存储引擎。

②支持全文索引、表锁、压缩表、空间数据索引。

③不支持事务、不支持外键。

④当我们建立一个MyISAM引擎的表时,本地磁盘会生成三个文件。分别为:

表名.FRM:用来存储建表的信息

数据文件名.MYD:存储数据(MYData)

索引文件名.MYI:存储索引(MYIndex)

注:表锁-》如果现在要进行select操作,系统默认就会加读锁。

***********************************************

* 读锁:指不允许外界进行write操作。 *

* 写锁:指不允许外界进行read和write操作。 *

***********************************************

★适合在选择密集型(筛选速度快)和插入密集型(允许同时插入)的表中使用。

MEMORY存储引擎

①要求存储在MEMORY数据库表里的数据使用的长度是不变的,所以不支持test、blob字段。

②数据存放在内存中,速度快。

★适合存放临时表、目标数据小且被频繁使用的表。

ARCHIVE存储引擎

①archive是归档的意思,只支持select和insert。

★压缩型,有很好的压缩机制,使用了zlib压缩库,在记录被请求时会实时压缩,经常用来当仓库使用。适用于日志文件。

三、总结

针对每个存储引擎其特点对比如下:

功能   /   存储引擎类型InnoDB MyISAMMEMORY ARCHIVE
存储限制 64TB256TBRAMnone
支持事务yesnonono
支持全文索引noyesnono
支持数索引yesyesyesno
支持哈希索引nonoyesno
支持数据缓存 yesnoN/Ano
支持外键yesnonono

不同的存储引擎有不同的特点,在选择存储引擎时,应该根据需求,使用合适的存储引擎,从而提高整个数据库的性能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章