mysql8.0 内存优化_MySQL · 8.0版本更新 · 性能优化篇

本文详细介绍了MySQL 8.0版本针对内存优化和性能提升的改进,包括InnoDB的多线程Undo Purge优化、buffer pool mutex拆分、内存估算、死锁检查选项以及Record缓冲区等,旨在提高数据库的并发性能和查询效率。
摘要由CSDN通过智能技术生成

本文主要总结下MysqL在8.0版本和性能相关的一些改动,随着新的小版本的发布,本文将不断进行更新,直到正式GA.

已更新版本

MysqL 8.0.0

MysqL 8.0.0

WL#9387: InnoDB: Group purging of rows by table ID

这个问题最早是facebook的工程师Domas报的一个bug,InnoDB使用多线程来进行Undo Purge操作,但分配undo的策略不太合理,直接轮询分配.这意味着如果从一张表上删除大量数据,这N个purge线程可能产生大量的索引锁冲突(例如索引页合并及重组织)

在WL#9387中,在parse undo log时,通过table_id进行分组存储,在分发时确保同一个table id的记录被分配给同一个线程.(参考函数 trx_purge_attach_undo_recs)

当然这也意味着合理的不会产生冲突的单表操作,无法利用到多线程purge了,也算是一个弊端.

WL#8423: InnoDB: Remove the buffer pool mutex

这个算是众望所归的改进了,由Percona贡献的补丁(bug#75534),主要是对InnoDB的buffer pool mutex这个大锁进行了拆分,降低锁冲突:NameDescbuf_pool_t::LRU_list_mutex用于保护LRU链表,例如从LRU链表上刷脏或驱逐Page

buf_pool_t::free_list_mutex保护free list及withdraw list(online resize)

buf_pool_t::zip_free_mutex保护zip_free数组,该数组用于维护对压缩表产生的非标准page size的内存维护,ref buf/buf0buddy.cc

buf_pool_t::zip_hash_mutex保护zip_hash,其中存储压缩页block

buf_pool_t::

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值