Mysql查询慢-内存优化

本文介绍了MySQL的缓存池概念,用于提升数据库的读写速度。当发现数据库查询缓慢时,可以检查缓存池的命中率。如果硬盘交互频繁,可能意味着缓存不足。可以通过`show status like 'Innodb_buffer_pool%'`和`show variables like 'innodb_buffer_pool%'`查询相关信息。调整缓存池大小可以在线修改或者在配置文件中设置,如`set global innodb_buffer_pool_size=2147483648`,然后重启MySQL服务。建议缓存池命中率保持在90%以上以优化性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缓存池

如果你的mysql在部署时,未设置缓存池。应用在使用过程中很慢的时候,可以从这块入手。

什么是缓存池

Mysql的一个内存缓存,用来提高使用mysql的响应和写入速度,如果内存吃满,就会从磁盘通过io获取数据。
mysql在做增、删、改、查时,会使用到缓存池。

排查是否缓冲池问题

查询缓冲池命中率:show status like ‘Innodb_buffer_pool_read%’;
在这里插入图片描述

Vaiable_name说明
Innodb_buffer_pool_read_requests从缓存中交互数据的次数
Innodb_buffer_pool_reads从硬盘交互数据的次数

当您查询的数据,如果硬盘交互次数很高,说明缓存不够用了,命中率跟你的实际情况来定,建议能命中90%以上

修改缓冲池内存大小

查看缓存池当前大小

查询缓冲池内存状态:show variables like ‘innodb_buffer_pool%’;
在这里插入图片描述

Vaiable_name说明
innodb_buffer_pool_size缓存池内存大小,默认128M
innodb_buffer_pool_instances并发处理缓存池的实例数,大于1G默认8,小于1G默认1
innodb_buffer_pool_chunk_size缓存池中每一块的大小,默认128M

从这里看出,现在设置:
缓存池大小:innodb_buffer_pool_size=2G
并发8个实例:innodb_buffer_pool_instances=8

临时运行时修改

在线修改大小:set global innodb_buffer_pool_size = 2147483648
global innodb_buffer_pool_size的值,必须是innodb_buffer_pool_chunk_size的倍数,就是128M的倍数就可以

配置文件中修改

在这里插入图片描述

在配置文件中[mysql]下添加:innodb_buffer_pool_size=2G
重启Mysql服务器生效

命令界面查询:show variables like ‘innodb_buffer_pool%’; 查看是否修改成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值