解析mysql 缓存如何使用内存

时间:2024-01-19 05:21:32 

先说明2点
开启缓存也会带来开销,主要表现在一下方面
读取在查询开始之前必须要检查缓存
如果查询是缓存的,但是不在结果集中,那么产生结果后保存数据会带来一定的开销
向缓存写如数据也会带来开销

有的情况查询缓存不会被缓存,即使你使用 SQL_CACHE也不能缓存
主要一下几个
引用了用户自定义函数
引用了用户自定义变量
以用了存续过程
查询中包含一些实时的系统函数,比如now
引用了临时表

虽然上面说到缓存会带来一些开销
但是缓存对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)

标签:mysql,缓存,内存
0
投稿

猜你喜欢

  • Python做图像处理及视频音频文件分离和合成功能

    2022-07-31 14:58:05
  • 浅析Oracle中sys、system和Scott用户下的数据库连接问题

    2023-07-02 15:14:06
  • Python文件操作实战案例之用户登录

    2023-07-12 18:03:37
  • 实现Python3数组旋转的3种算法实例

    2021-11-12 04:23:10
  • 分页技术原理与实现之分页的意义及方法(一)

    2024-01-26 14:29:16
  • CSS制作滑动折叠的文字效果

    2008-12-01 13:10:00
  • Python在线运行代码助手

    2022-05-04 04:09:21
  • Python中的exec、eval使用实例

    2022-07-05 21:01:41
  • js实现用div层模拟的小窗口

    2007-12-02 15:01:00
  • php中session_id()函数详细介绍,会话id生成过程及session id长度

    2023-11-24 08:01:00
  • 从一个项目中来看三层架构

    2008-08-06 12:50:00
  • Python flask框架实现浏览器点击自定义跳转页面

    2023-04-26 15:48:31
  • 详解Python装饰器的四种定义形式

    2022-06-20 13:35:04
  • 详解Python list和numpy array的存储和读取方法

    2022-05-04 05:58:10
  • Python数据分析 Pandas Series对象操作

    2021-07-17 20:18:52
  • Python timeit模块的使用实践

    2023-09-15 00:36:55
  • pytorch打印网络结构的实例

    2023-11-04 15:15:51
  • Python将Excel表格按某列拆分为多个sheet实现过程

    2021-06-11 06:59:54
  • Git配置别名简化操作命令方式详解

    2022-03-20 03:34:12
  • 2021年最新版Python安装及使用教学

    2022-09-18 08:24:00
  • asp之家 网络编程 m.aspxhome.com