网站首页 > 技术教程 正文
1 内存碎片
1.1 啥是BP的内存碎片?
BP划分完全部缓存页和描述信息块后,还剩点内存,但却再也放不下新的缓存页。
1.2 如何减少内存碎片?
DB在BP中划分缓存页时,会让所有缓存页和描述信息块都紧密挨一起,尽可能减少内存碎片。
2 脏数据页
增删改时,若发现数据页没缓存,就会从free链表找空闲缓存页,读取到BP的缓存页,但若已缓存,则下次直接使用缓存页。
所以你要更新的数据页都会在BP缓存页,让你能在内存中直接执行增删改。所以肯定会更新BP缓存页数据,一旦更新了,则缓存页数据和磁盘的数据页数据,就不一致了,这时的BP缓存页就是脏数据,即为脏页。
2.1 哪些缓存页是脏页
最终这些在内存里更新的脏页数据,都是要被刷回磁盘文件的。
但不可能所有缓存页都刷盘,因为有的缓存页可能因查询而被读取到BP,可能根本没修改过!
于是DB引入flush链表,类似free链表,通过缓存页的描述信息块的两个指针,让被修改过的缓存页的描述信息块组成双向链表。
被修改过的缓存页,都会将其描述信息块加入到flush链表中去,flush就是这些都是脏页,后续都是要flush刷新到磁盘:
flush链表构造演示
比如缓存页01被修改了数据,那他就是脏页了,就加入flush链表。?现在flush链表的基础节点就指向block01节点,接着比如缓存页02被更新,他也是脏页,那他的描述信息块也要被加入flush链表。
可见,当你更新缓存页时,通过变换缓存页中的描述数据块的flush链表的指针,就能将脏页的描述数据块组成一个双向链表,即flush链表,而且flush链表的基础节点会指向起始节点和尾巴节点。通过次flush链表,就能记录下来哪些缓存页是脏页了。
猜你喜欢
- 2024-11-05 恐高症患者 大众CC改装HellaFlush风格
- 2024-11-05 Redis缓存:redis 数据库管理(redis数据库缓存机制)
- 2024-11-05 空气悬架上身 奥迪S7改HellaFlush风格
- 2024-11-05 HellaFlush风格 大众高尔夫改装方案
- 2024-11-05 年轻的老虫子 老款大众甲壳虫hellaflush潮改装
- 2024-11-05 据说这种“外八”改装风格 许多车主都喜欢
- 2024-11-05 李洋分享奥迪Q5改装AIRBFT气动避震品牌优势
- 2024-11-05 ctx.writeAndFlush(protocol).sync()是什么功能
- 2024-11-05 AIRBFT气动避震工厂李洋讲述大众迈腾旅行版为什么都改装低趴
- 2024-11-05 Hella Flush改装展—低趴你选谁?(改装低趴有什么作用)
你 发表评论:
欢迎- 最近发表
-
- Win11学院:如何在Windows 11上使用WSL安装Ubuntu
- linux移植(Linux移植freemodbus)
- 独家解读:Win10预览版9879为何无法识别硬盘
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- Docker镜像瘦身(docker 减小镜像大小)
- 在linux上安装ollama(linux安装locale)
- 渗透测试系统Kali推出Docker镜像(kali linux渗透测试技术详解pdf)
- Linux环境中部署Harbor私有镜像仓库
- linux之间传文件命令之Rsync傻瓜式教程
- 解决ollama在linux中安装或升级时,通过国内镜像缩短安装时长
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)