百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> MySQL存储引擎详解
分享文章到:

MySQL存储引擎详解

发布时间:09/01 来源:未知 浏览: 关键词:

一、MySQL常用储备引擎及特点

1、InnoDB储备引擎

从MySQL5.5版本之后,MySQL的默许内置储备引擎已经是InnoDB了,他的主要特点有:

(1)劫难复原性比力好;
(2)支撑事务。默许的事务隔离级别为可反复度,通过MVCC(并发版本操纵)来实现的。
(3)使用的锁粒度为行级锁,可以支撑更高的并发;
(4)支撑外键;
(5)配合一些热备工具可以支撑在线热备份;
(6)在InnoDB中存在着缓冲治理,通过缓冲池,将索引和数据全部缓存起来,加快查询的速度;
(7)关于InnoDB类型的表,其数据的物理组织情势是聚簇表。所有的数据依照主键来组织。数据和索引放在一块,都位于B+数的叶子节点上;

2、MyISAM储备引擎
在5.5版本此前,MyISAM是MySQL的默许储备引擎,该储备引擎并发性差,不支撑事务,所以使用处景比力少,主要特点为:

(1)不支撑事务;
(2)不支撑外键,假如强行增添外键,不会提醒错误,只是外键不其作用;
(3)对数据的查询缓存只会缓存索引,不会像InnoDB一样缓存数据,并且是利用操纵系统本身的缓存;
(4)默许的锁粒度为表级锁,所以并发度很差,加锁快,锁冲突较少,所以不太容易发生死锁;
(5)支撑全文索引(MySQL5.6之后,InnoDB储备引擎也对全文索引做了支撑),但是MySQL的全文索引根本不会使用,关于全文索引,此刻有其他成熟的解决方案,比方:ElasticSearch,Solr,Sphinx等。
(6)数据库所在主机假如宕机,MyISAM的数据文件容易破坏,并且难复原;

3、MEMORY储备引擎
将数据存在内存中,和市场上的Redis,memcached等思想相似,为了提高数据的拜访速度,主要特点:

(1)支撑的数据类型有限制,比方:不支撑TEXT和BLOB类型,关于字符串类型的数据,只支撑牢固长度的行,VARCHAR会被主动储备为CHAR类型;
(2)支撑的锁粒度为表级锁。所以,在拜访量比力大时,表级锁会成为MEMORY储备引擎的瓶颈;
(3)由于数据是存置在内存中,所以在效劳重视启之后,所有数据都会丧失;
(4)查询的时候,假如有用来临时表,并且暂时表中有BLOB,TEXT类型的字段,那么这个暂时表就会转化为MyISAM类型的表,机能会急剧落低;

4、ARCHIVE储备引擎
ARCHIVE储备引擎适合的场景有限,由于其支撑紧缩,故主如果用来做日志,流水等数据的归档,主要特点:

(1)支撑Zlib紧缩,数据在插入表此前,会先被紧缩;
(2)仅支撑SELECT和INSERT操纵,存入的数据就只能查询,不克不及做修改和删除;
(3)只支撑自增键上的索引,不支撑其他索引;

5、CSV储备引擎
数据中转试用,主要特点:

(1)其数据格局为.csv格局的文本,可以直接编纂留存;
(2)导入输出比力利便,可以将某个表中的数据直接输出为csv,试用Excel办公软件翻开;

二、InnoDB和MyISAM的对照

1、由于锁粒度的不一样,InnoDB比MyISAM支撑更高的并发;
2、InnoDB为行级锁,MyISAM为表级锁,所以InnoDB相关于MyISAM来说,更容易发生死锁,锁冲突的概率更大,并且上锁的开销也更大,由于需要为每一行加锁;
3、在备份容灾上,InnoDB支撑在线热备,有很成熟的在线热备解决方案;
4、查询机能上,MyISAM的查询效力高于InnoDB,由于InnoDB在查询历程中,是需要保护数据缓存,并且查询历程是先定位到行所在的数据块,然后在从数据块中定位到要查寻的行;而MyISAM可以直接定位到数据所在的内存地址,可以直接寻到数据;
5、SELECT COUNT(*)语句,假如行数在千万级别以上,MyISAM可以快速查出,而InnoDB查询的特殊慢,由于MyISAM将行数独自储备了,而InnoDB需要朱行去统计行数;所以假如使用InnoDB,并且需要查询行数,则需要对行数停止非凡处置,如:离线查询并缓存;
6、MyISAM的表构造文件包罗:.frm(表构造定义),.MYI(索引),.MYD(数据);而InnoDB的表数据文件为:.ibd和.frm(表构造定义);

三、怎样选中适宜的储备引擎

1、使用处景可否需要事务支撑;
2、可否需要支撑高并发,InnoDB的并发度远高于MyISAM;
3、可否需要支撑外键;
4、可否需要支撑在线热备;
5、高效缓冲数据,InnoDB对数据和索引都做了缓冲,而MyISAM只缓冲了索引;
6、索引,不一样储备引擎的索引并不太一样;

更多MySQL相关技术文章,请拜访MySQL教程栏目停止学习!

以上就是MySQL储备引擎详解的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板