mysql存储引擎

mysql存储引擎

一、主要存储引擎

 
5.5以后的版本,默认存储引擎从myisam改成了innodb;线上推荐都用innodb

二、innodb存储引擎

(一)结构

 

 
INNODB存储引擎大致分三部分,图中已经(1)(2)(3)标出。至于MYSQL Server层暂不管它,就是SQL接口、解析器、优化器、缓冲池的那层组件。 
上图中: 
(1)是缓存层,由一个大的innodb buffer pool和很多个其他小的内存组件组成,用来缓冲数据的,innodb的数据读取写入不是直接操作文件,而是从文件加载到缓存,在缓冲里做操作,再flush到磁盘文件‘; 
(2)是各种后台线程,例如IO线程、日志线程、监控线程等; 
(3)是各种数据文件层,例如innodb的数据文件、redo log等;

(二)innodb的特点

1、innodb支持事务,事务ACID特性完整支持: 
(1)原子性(A):通过回滚段失败回滚来保证原子性,也就是unlog log日志回滚保证原子性; 
(2)一致性(C):通过支持主外键来保证一致性; 
(3)隔离性(I):通过事务版本+回滚段=MVCC(多版本并发),也即是通过MVCC(多版本并发)机制来保证隔离性; 
(4)持久性(D):通过事务日志(redo log)来保证持久性;

(三)事务隔离级别

1、支持四种不同的事务隔离级别,默认的事务隔离级别是REPEATABLE-READ(可重复读):

(四)INNODB存储引擎的锁

1、支持行级锁,写不阻塞读;不同行间的写相互不阻塞;并发性能好 
2、行锁是加在索引上的(或者说行级锁是在索引上实现的),如果更新字段上没有索引则行锁会转换为表级锁。

(五)INNODDB数据块缓存池

1、数据的读写需要经过缓存(数据的读写不是直接读写磁盘文件,而是先将文件数据加载到内存,再进行读写(更新后产生脏页),再根据配置的策略定期将脏页刷新到磁盘) 
2、innodb的数据是以整页(page,16K)为单位,读取到缓存中; 
3、缓存中的数据以LRU策略换出; 
4、IO效率高

(六)INNODB数据文件存储结构

1、innodb存储类型的表,是索引组织表(聚簇表),它的整个表数据就是一个索引表。表数据是根据主键排序,如果没有索引则检查唯一索引键,用唯一键做索引;如果没有主键也没有唯一索引键,则会自动内部分配一个rowID来做索引。 
2、innodb结构的表是索引结构的,数据节点每页是16K。 
3、innodb结构的表是索引组织表(聚簇表),根据主键寻址速度很快。 
主键值递增的insert插入效率较好,主键随机insert插入操作效率差。因此,innodb表必须制定主键,建议使用自增数字。

(七)INNODB数据持久化与事务日志

1、事务日志(redo log)实时持久化, 
2、内存变化数据(脏数据)增量异步刷出到磁盘文件; 
3、实例故障靠重放日志恢复; 
4、性能好,可靠,恢复快

二、MYISAM存储引擎

(一)特点

1、前身叫ISAM存储引擎; 
2、MYISAM存储引擎的数据组织形式是一种堆表,和索引组织表相区别(innodb的数据组织形式是索引组织表)。 
例如插入一条数据id=2(id为主键,表里已经存在id=1和id=3数据), 
(1)myisam存储引擎:如果插入id=2,数据的插入位置和id=1 id=3无关系,也就是无序的; 
堆表的插入特性是无序的,其他的数据库例如oracle PostgreSQL都是以堆表形式插入数据的; 
(2)INNODB存储引擎:如果插入id=2,会插入到id=1和id=3之间,因为innodb是索引组织表是有有序的; 
索引组织表的最大特点是根据主键去查询效率非常快。 
3、MYISAM存储引擎不支持事务; 
4、myisam存储引擎的缓存()不缓存数据,只缓存索引。数据缓存是交给操作系统的内存来缓存的。 
这种会有问题:如果查询一个大表,会消耗大量操作系统内存,如果表中碎片很大可能会浪费大量操作系统内存。 
5、锁粒度较大:使用的是读写锁(读的时候不允许写,写的时候不允许读,只有读的时候允许读) 
6、数据文件可以直接 拷贝,偶尔可能会用上。但是线上现在不建议使用该引擎了 
因为: 
a、不支持事务; 
b、锁粒度太大并发性能差; 
c、只缓存索引不缓存数据,对系统内存影响较大有风险; 
d、8.0取消了MYISAM引擎;

三、MEMORY存储引擎

1、数据全内存存放,无法持久化; 
2、性能较高; 
3、不支持事务; 
4、适合偶尔作为临时表使用; 
create tmpporary table tmp(…)

四、BLACLHOLD存储引擎

1、数据不作任何存储; 
2、利用mysql replicate,充当日志服务器,在mysql replicate环境里充当代理主。 
 
一般用BLACKHOLD作为日志服务器,记录数据库的所有变更。向其他从服务器分发日志。

五、TOKUDB存储引擎

1、分形树存储结构; 
2、支持事务; 
3、行锁; 
4、压缩效率较高; 
5、适合大批量insert的场景(吞吐量/io效率高) 
6、备份比较麻烦,只有企业版有在线备份工具,社区版没有在线备份工具;

六、MYSQL CLUSTER

1、多主分布式集群; 
2、数据节点间冗余,高可用; 
3、支持事务; 
4、设计上易于扩展; 
5、面向未来,线上慎用; 

 转载:http://www.cnblogs.com/zhoubaojian/articles/7866231.html

CCF大数据与计算智能大赛-面向电信行业存量用户的智能套餐个性化匹配模型联通赛-复赛第二名-【多分类,embedding】.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值