这篇文章给大家介绍MySQL 8在性能设计上的改变是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
创新互联是一家集网站建设,洪江管理区企业网站建设,洪江管理区品牌网站建设,网站定制,洪江管理区网站建设报价,网络营销,网络优化,洪江管理区网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
MYSQL 8 的在性能上的设计在MYSQL 的历史上是具有突破性的,也是从底层的架构上进行的改变,可能未来MYSQL 越来越不像原来的MYSQL,长远看MYSQL 是朝着企业和互联网通吃的方向去的,其实MYSQL本身的设计和其他的数据库相比是有差距的,例如doublewrite对性能的损耗,以及在RR上的GAP 其实可能对有些其他数据库的使用者都是吐槽的对象。
而从MYSQL 8 上的新设计上来看,REDO LOG (WAL)的设计是进行改变了,这也是为什么会期盼MYSQL8 的声音很多的原因之一。
老的MYQL的设计在目前越来越多,越复杂的任务中,REDO LOG 的设计的确说不上有多出色。
而新的设计,突发的就是他的并发性,这其实在程序设计里面并不容易,到底以什么来决定并发性,在程序设计里面如果是串行的,解决的方法都比较简单,也不容易出错,而只要设计并发性这样的问题,则需要考虑的问题就很多,那个在前那个在后,无关联的是否可以同时进行,并行对目前的磁盘压力是否可以接受,等等,如何在并行中又保持一个顺序。(个人觉得和MTS 的部分有类似的想法)
多线程的操作中,单个线程有自己的内部锁保证刷新的顺序,但和之前的设计不同的地方是不再以LSN 号作为一个刷新的顺序。但需要考虑的是 checkpoint 和 flushing 总体的顺序,因为REDO LOG 最终的目的是在DATABASE CRASH 时进行回滚,回滚是一定要有顺序的。
下图就是一个(粗糙)的解释,上面是原先MYSQL的设计,下面是MYSQL8 的设计,如果从时间的角度来看,MYSQL8 的redo 刷新的设计是要节省时间的(如果长度代表时间的话)
而最终造成的效果就是 一整段的 dirty pages 写入不在是顺序性,(大括号的位置是未写入的数据)这里面会有一个 log_closer thread 去扫描哪些是完成的段,并且更新哪些是已经完成的最大 LSN 号。
关于MYSQL 8在性能设计上的改变是怎么样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。