解析MySQL缓存如何使用内存
开放缓存也带来了开销,主要是一点点的开销。
读取缓存必须在查询开始之前检查。
如果查询被缓存,而不是在结果集中,那么在生成结果之后,保存数据将带来一定的开销。
将数据写入缓存也会带来开销。
在某些情况下,查询缓存没有被缓存,即使你使用sql_cache,你不能缓存
他们中的几个人
用户定义函数被引用
引用用户定义的变量
为了使用延续过程
查询包含一些实时系统功能,如现在
引用临时表
虽然它说缓存会带来一些开销。
但是对mysql来说缓存是很重要的。
好处多于坏。
让我们来谈谈MySQL缓存是如何使用内存的。
查询缓存的内存池分为可变大小的块,每个人很快就知道他们的大小,方向与前一个逻辑块和物理块的指针,当服务器启动时初始化查询缓存的内存池使用的物理内存后,开始在喜一快,她的大小配置缓存大小减去他们的需求40kb大小。在每个缓存查询结果查询结果,将分配一个缓存块,但是服务器无法估计需要缓存结果的大小,至少等于或大于query_cache_min_res_unit,在配置服务器,而不是一个缓存节点生成最终被发送到客户端,但一个缓存,这个缓存可以保证空间不在W的配置浪费或不足。内存块的分配是缓慢的,因为服务器需要检查可用内存列表中快速找到合适的尺码,这样服务器会尽量减少次数分布,当你需要缓存的结果,他将建立一个规模至少一个最小值为块,在块放入结果。如果块是满的,但数据不是完整的,它会产生一个新的块,并在数据存储后保存数据,如果数据块和间隙,服务器将剪辑数据块,剩下的空间送入空间,可以生成碎片。通过紧缩,碎片空间可以被合并到一个有效的数据空间中。
因为一件事情的发动机,如InnoDB,事情影响缓存,因为脏数据也使缓存的其他参考资料。这些数据将不被缓存,直到事情提交或回滚。
query_cache_min_res_unit:最小尺寸(以字节为单位)的查询缓存分块。