加入收藏 | 设为首页 | 会员中心 | 我要投稿 临夏站长网 (https://www.0930zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

innodb新特性之怎么使用buffer pool动态调节大小

发布时间:2022-01-11 14:39:10 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要介绍innodb新特性之怎么使用buffer pool动态调整大小,在日常操作中,相信很多人在innodb新特性之怎么使用buffer pool动态调整大小问题上存在疑惑,小编查阅了各式资料,整 理出简单好用的操作方法,希望对大家解答innodb新特性之怎么使用buff
innodb新特性之怎么使用buffer pool动态调节大小
         这篇文章主要介绍“innodb新特性之怎么使用buffer pool动态调整大小”,在日常操作中,相信很多人在innodb新特性之怎么使用buffer pool动态调整大小问题上存在疑惑,小编查阅了各式资料,整 理出简单好用的操作方法,希望对大家解答”innodb新特性之怎么使用buffer pool动态调整大小”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
 
        5.7 开始支持buffer pool 动态调整大小,每个buffer_pool_instance都由同样个数的chunk组成(chunks数组), 每个chunk内存大小为innodb_buffer_pool_chunk_size(实际会偏大5%,用于存放chuck中的block信息)。buffer pool以innodb_buffer_pool_chunk_size为单位进行动态增大和缩小。调整前后innodb_buffer_pool_size应一直保持是innodb_buffer_pool_chunk_size*innodb_buffer_pool_instances的倍数。
 
       同样的buffer pool动态调整大小由后台线程buf_resize_thread,set命令会立即返回。通过InnoDB_buffer_pool_resize_status可以查看调整的运行状态。
 
resize流程
如果开启了AHI,需禁用AHI
如果是收缩内存
开始resize
如果禁用了AHI,此时开启
锁住所有instance的buffer_pool,page_hash
收缩pool:以chunk为单位释放要收缩的内存
清空withdraw列表buf_pool->withdraw
增大pool:分配新的chunk
重新分配buf_pool->chunks
如果改变/缩小超过2倍,会重置page hash,改变桶大小
释放buffer_pool,page_hash锁
如果改变/缩小超过2倍,会重启和buffer pool大小相关的内存结构,如锁系统(lock_sys_resize),AHI(btr_search_sys_resize), 数据字段(dict_resize)等
计算需收缩的chunk数, 从chunks开始尾部删除指定个数的chunk.
锁buf_pool
从free_list中摘除待删chunk的page放入待删链表buf_pool->withdraw
如果待删chunk的page为脏页,则刷脏
重新加载LRU中要删除的页,从LRU中摘除,重新从free列表获取page老的page放入待删链表buf_pool->withdraw
释放buffer pool锁
如果需收缩的chunk pages没有收集全,重复2-6
由上可以看出,扩大内存比缩小内存相对容易些。缩小内存时,如果遇到有事务一直未提交且占用了待收缩的page时,导致收缩一直重试,error log会打印这种重试信息, 包含可能引用此问题的事务信息。为了避免频繁重试,每次重试的时间间隔会指数增长。
 
以上步骤中resize阶段buffer pool会不可用,此阶段会锁所有buffer pool, 但此阶段都是内存操作,时间比较短。收缩内存阶段耗时可能会很长,也有一定影响,但是每次都是以instance为单位进行锁定的。 总的来说,buffer pool 动态调整大小对应用的影响并不大。
 
重新加载LRU中要删除的页的影响search 过程中btr游标保存的page可能重新加载过,自适应哈希保存的root page也可能重新加载过, 都需要重新读取。
到此,关于“innodb新特性之怎么使用buffer pool动态调整大小”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!

(编辑:临夏站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!