MYSQL 8在性能设计上的改变是怎么样的

发布时间:2021-10-25 10:27:21 作者:柒染
来源:亿速云 阅读:133

这篇文章给大家介绍MYSQL 8在性能设计上的改变是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

MYSQL 8 的在性能上的设计在MYSQL 的历史上是具有突破性的,也是从底层的架构上进行的改变,可能未来MYSQL 越来越不像原来的MYSQL,长远看MYSQL 是朝着企业和互联网通吃的方向去的,其实MYSQL本身的设计和其他的数据库相比是有差距的,例如doublewrite对性能的损耗,以及在RR上的GAP 其实可能对有些其他数据库的使用者都是吐槽的对象。

而从MYSQL 8 上的新设计上来看,REDO LOG (WAL)的设计是进行改变了,这也是为什么会期盼MYSQL8 的声音很多的原因之一。

老的MYQL的设计在目前越来越多,越复杂的任务中,REDO LOG 的设计的确说不上有多出色。

MYSQL 8在性能设计上的改变是怎么样的

而新的设计,突发的就是他的并发性,这其实在程序设计里面并不容易,到底以什么来决定并发性,在程序设计里面如果是串行的,解决的方法都比较简单,也不容易出错,而只要设计并发性这样的问题,则需要考虑的问题就很多,那个在前那个在后,无关联的是否可以同时进行,并行对目前的磁盘压力是否可以接受,等等,如何在并行中又保持一个顺序。(个人觉得和MTS 的部分有类似的想法)

MYSQL 8在性能设计上的改变是怎么样的

多线程的操作中,单个线程有自己的内部锁保证刷新的顺序,但和之前的设计不同的地方是不再以LSN 号作为一个刷新的顺序。但需要考虑的是 checkpoint 和 flushing 总体的顺序,因为REDO LOG 最终的目的是在DATABASE CRASH 时进行回滚,回滚是一定要有顺序的。

下图就是一个(粗糙)的解释,上面是原先MYSQL的设计,下面是MYSQL8 的设计,如果从时间的角度来看,MYSQL8 的redo 刷新的设计是要节省时间的(如果长度代表时间的话)

MYSQL 8在性能设计上的改变是怎么样的

而最终造成的效果就是 一整段的 dirty pages 写入不在是顺序性,(大括号的位置是未写入的数据)这里面会有一个 log_closer  thread 去扫描哪些是完成的段,并且更新哪些是已经完成的最大 LSN 号。

MYSQL 8在性能设计上的改变是怎么样的

关于MYSQL 8在性能设计上的改变是怎么样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

推荐阅读:
  1. mysql有哪些存储引擎
  2. 改变MySQL性能的一个单引号

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:dotNET 5.0正式版本的新功能有哪些

下一篇:Python爬虫经常会被封的原因是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》