缓存池
如果你的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%’; 查看是否修改成功