博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql缓存 碎片_有关mysql查询缓存的内存碎片
阅读量:5106 次
发布时间:2019-06-13

本文共 824 字,大约阅读时间需要 2 分钟。

说到mysql的查询缓存,先来熟悉下面三个选项:

query_cache_min_res_unit   查询缓存分配的最小块的大小(字节)

query_alloc_block_size  查询分析和执行过程中创建的对象分配的内存块大小

Qcache_free_blocks  内存自由块的多少,反映了内存碎片的情况

下面进行解析:

1,当执行数据库查询进行时,Mysql把查询结果保存在qurey cache中,但如果要保存的结果比较大,超过query_cache_min_res_unit的值 ,此时mysql将一边检索结果,一边

进行保存结果,所以,有时并不是把所有结果全部得到后再进行一次性保存,而是每次分配一块query_cache_min_res_unit 大小的内存空间保存结果集,使用完后,接着再分

配一个这样的块。如果还不不够,接着再分配一个块,依此类推,即有可能在一次查询中,mysql要进行多次内存分配的操作。

2,内存碎片的产生。

当一块分配的内存没有完全使用时,MySQL会把这块内存Trim掉,把没有使用的那部分归还以重复利用。

比如,第一次分配4KB,只用了3KB,剩1KB,第二次连续操作,分配4KB,用了2KB,剩2KB,这两次连续操作共剩下的1KB+2KB=3KB,不足以做个一个内存单元分配, 这时候,内

存碎片便产生了。

3,使用 flush query cache 可以消除碎片。

4,如果Qcache_free_blocks值过大,可能是query_cache_min_res_unit值过大,调小一些,即可改善。

5,query_cache_min_res_unit的估计值:

(query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache

就介绍这些吧,希望有助于大家理解与合理应用mysql的查询缓存与内存碎片。

脚本学堂,祝大家学习进步。

转载地址:http://mmudv.baihongyu.com/

你可能感兴趣的文章
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
一些方便系统诊断的bash函数
查看>>
jquery中ajax返回值无法传递到上层函数
查看>>
css3之transform-origin
查看>>
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>
Master选举原理
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
小别离
查看>>
微信小程序-发起 HTTPS 请求
查看>>
WPF动画设置1(转)
查看>>
基于node/mongo的App Docker化测试环境搭建
查看>>
java web 中base64传输的坑
查看>>
秒杀9种排序算法(JavaScript版)
查看>>
Activiti入门 -- 环境搭建和核心API简介
查看>>
struts.convention.classes.reload配置为true,tomcat启动报错
查看>>
MySQL的并行复制多线程复制MTS(Multi-Threaded Slaves)
查看>>
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
MySQL更改默认的数据文档存储目录
查看>>
PyQt5--EventSender
查看>>