《Mysql入门解析mysql 缓存如何使用内存》要点: 本文介绍了Mysql入门解析mysql 缓存如何使用内存,希望对您有用。如果有疑问,可以联系我们。
MYSQL实例先说明2点 开启缓存也会带来开销,主要表现在一下方面 读取在查询开始之前必须要检查缓存 如果查询是缓存的,但是不在结果集中,那么产生结果后保存数据会带来一定的开销 向缓存写如数据也会带来开销
MYSQL实例有的情况查询缓存不会被缓存,即使你使用 SQL_CACHE也不能缓存 主要一下几个 引用了用户自定义函数 引用了用户自定义变量 以用了存续过程 查询中包含一些实时的系统函数,比如now 引用了临时表
MYSQL实例虽然上面说到缓存会带来一些开销 但是缓存对mysql? 还是很重要 带来的好处比坏处多
MYSQL实例下面讲一下mysql缓存如何使用内存 查询缓存的内存池被分为大小可变的块,每一个快都知道自己的大小,指向前一个和后一个逻辑块和物理块 的指针,服务器启动时初始化查询缓存使用的物理内存,内存池开始咋hi要一个快,她的大小为被配置为缓存的大小减去自身需要的40KB大小.在每次缓存查询结果时,会为查询结果分配一个缓存块,但是服务器无法估计需要缓存的结果的大小,至少会大于等于query_cache_min_res_unit,服务器在分配时,不会再缓存中一次生成最终结果然后缓存发送到客户端,而是产生一条缓存一条,这样缓存就能保证空间不会在分配时浪费或者不足.分配内存块的速度较慢,因为服务器需要检查可用内存列表并且找打大小合适的快,因此服务器会尽量减少分配次数,当需要缓存结果时,他会构建一个大小至少为最小值的块,并且把结果放在块中,如果块已经满了,但是数据没有完整保存,那么就会产生一个新块并且保存数据,在数据存完后,如果数据块还有空隙,服务器就会剪辑数据块,并且把空间并入剩余的空间中,在其中可能产生碎片.通过紧缩,可以讲碎片空间并入有效的数据空间中.
对于事物引擎,比如innodb,事物会影响缓存,因为脏数据也会让其他引用了这块数据的缓存失效.直到该事物提交或回滚之后,这块数据才会被缓存. query_cache_min_res_unit:the minimum size (in bytes) for blocks allocated by the query cache. The default value is 4096 (4KB) (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|