MySQL版本特性
MySQL5.7版本
相较于前辈5.6、后辈8.0而言,MySQL5.7版本就显的中规中矩,其中没有发生太多的改变,MySQL5.7更偏向于5.6的稳定版,毕竟5.6版本中步子迈的太大,很多方面的技术都需要根据市场反馈做细微调整,因此成功的为MySQL5.7做好了铺垫,一般的项目如果不选用MySQL8.0,基本上都会选择MySQL5.7而不是5.6。 ### 1. 引入共享排他锁 在MySQL5.7之前的版本中,数据库中仅存在两种类型的锁,即共享锁与排他锁,但是在MySQL5.7.2版本中引入了一种新的锁,被称之为(SX)共享排他锁,这种锁是共享锁与排他锁的杂交类型,至于为何引入这种锁呢?聊它之前需要先理解SMO问题: 在SQL执行期间一旦更新操作触发B+Tree叶子节点分裂,那么就会对整棵B+Tree加排它锁,这不但阻塞了后续这张表上的所有的更新操作,同时也阻止了所有试图在B+Tree上的读操作,也就是会导致所有的读写操作都被阻塞,其影响巨大。因此,这种大粒度的排它锁成为了InnoDB支持高并发访问的主要瓶颈,而这也是MySQL 5.7版本中引入SX锁要解决的问题。 ### 2. MySQL开始支持json格式 随着非结构化数据的存储需求持续增长,各类非关系型数据库应运而生,例如大名鼎鼎的MongoDB,各大关系型数据库为了防止市场占用率流失,也开始弥补对于这块的支持,因此在MySQL5.7.8版本中也支持了json数据类型,并且为其提供了一系列操作的API。 虽然说MySQL也支持了json格式存储,但显然是亡羊补牢,为时已晚,自然无法抢过MongoDB的市场占用率,从性能和存储容量来说,MySQL也无法竞争过MongoDB,但相较于其他非结构化数据库,MySQL存储json数据有两大优势:①对于json数据的API操作支持事务。②支持为一个表字段设置json格式,也就意味着MySQL中可以将结构化数据和非结构化数据共同存储 ### 3. MySQL5.7中的其他特性 除开上述两点值得展开叙说的特性外,其他的基本上是一些细微变化,因此就不对其进行展开叙述啦,这里稍微罗列一下MySQL5.7版本中,其他的特性支持,如下: - 临时表优化,临时表的写操作不记录redo-log、不为其生成缓冲数据页,减小资源占用。 - 多接点部署时,数据同步复制再次优化,支持多主/源复制、以及真正意义上的并行复制等。 - 引入了虚拟列的实现,类似于Oracle数据库中的函数索引。 - 移除了默认的test数据库,以及默认不会创建匿名用户,引入密码过期策略。 - 触发器增强,表上同一种事件、同一时机的触发器可创建多个,之前则只能允许创建一个。 - 推出了新的mysqlpump工具,用于数据的逻辑备份、引入了新的客户端工具mysqlsh等。 - 支持通过max_execution_time限制一条SQL的执行超时时间、支持innodb_deadlock_detect死锁检测。 - GIS空间数据类型增强,使用Boost.Geometry代替原有的GIS算法,InnoDB支持空间索引。 - ....... 具体可参考[《MySQL官网-5.7版手册》](https://dev.mysql.com/doc/refman/5.7/en/ "《MySQL官网-5.7版手册》")
顶部
收展
底部
[TOC]
目录
MySQL5.6版本
MySQL5.7版本
MySQL8.0版本
相关推荐
MySQL教程
MySQL命令
MySQL索引
MySQL事务
MySQL锁机制