2021-04-23

mysql buffer pool配置过大导致的慢查询问题

报警

今天下午,公司的某个服务报了sql查询执行失败的告警。
经过追查,某个集群下在那个时间段出现了大量的慢查询,主要集中在机器ff-01上。
查看机器的监控,发现swap使用率表高。
之后和dba的同学沟通,发现这台机器上配置的buffer pool比别的机器大,buffer pool默认是128m,这台机器上是100m,其他机器在85-90。
ff-01可使用内存相对比较小,导致swap使用增加,进而导致慢查询,查询接口超时报警。

附录

swap

swap是操作系统虚拟出来的一部分内存地址,物理存储原件是磁盘。为了能够满足程序运行的要求,操作系统虚拟了一部分的内存地址,并映射到swap上。物理内存和swap在功能上并没有本质的区别,但是在性能上可谓是天差地别。

mysql程序的特殊性希望数据尽可能在内存中而不是swap 中,swap利用率越高,db越慢。

innodb的buffer pool

innodb在处理请求的时候,当需要请求某个页的数据时,会将完整的页数据加载到内存中,也就是说只需要访问一个页的一条记录,也需要将整个页的数据加载到内存中,然后进行读写访问,读写访问之后,并不会将内存释放掉,而是会将其缓存起来,再次请求的时候,就可以省去磁盘io的开支。

innodb在mysql服务器启动的时候,向操作系统申请了一片连续的内存,即buffer pool来缓存磁盘中的页。默认buffer pool只有128m,可以通过修改innodb_buffer_pool_size参数来修改大小。

页的大小为16kb,为了管理缓存页,每个缓存页有个唯一对应的控制块,主要是该页的一些表空间编号,页号,缓存页在buffer pool中的地址等信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值