
PostgreSQL 数据库---内核源码分析 那海蓝蓝:生活点滴,随风拂去
第 1 页/共 28 页
PostgreSQL 深入理解缓冲区
作者:李海翔
博客:http://blog.163.com/li_hx/
邮箱:lhx3000@163.com
1 什么是缓冲区 .............................................................................................................................. 2
2 常见的缓冲区 .............................................................................................................................. 2
2.1 常见缓冲区类型 ........................................................................................................... 2
2.2 缓冲区的衍生---缓存组件 ........................................................................................... 2
2.3 缓存与池的关系 ........................................................................................................... 3
2.4 缓存区与 cache 辨析.................................................................................................... 3
3 缓存的作用和常见场景 ............................................................................................................... 3
3.1 缓存的作用................................................................................................................... 3
3.2 缓存的常用场景 ........................................................................................................... 4
4 数据库中的缓冲区....................................................................................................................... 4
4.1 PostgreSQL 数据缓冲区管理 ...................................................................................... 5
4.1.1 文件介绍 ............................................................................................................... 5
4.1.2 相关代码 ............................................................................................................... 5
4.1.3 Buf 作用与位置 .................................................................................................... 7
4.1.3.1 ReadBuffer 表明的层次关系 ........................................................................ 7
4.1.3.2 从 buf 分配看 buf 的使用 ............................................................................ 9
4.1.3.3 其他函数表明的 buf 作用 ........................................................................... 9
4.1.4 Buf 结构 .............................................................................................................. 10
4.1.4.1 Buf 的整体结构 ........................................................................................... 10
4.1.4.2 Buf 的元信息结构 ....................................................................................... 11
4.1.4.3 内外存地址是如何映射的 ......................................................................... 12
4.1.4.4 Buf 的主体结构 ........................................................................................... 13
4.1.4.5 Buf 的置换调度策略管理相关数据结构 ................................................... 13
4.1.5 Buf 置换管理算法 .............................................................................................. 16
4.1.6 并行计算对 buf 置换的影响 ............................................................................. 17
4.2 PostgreSQL 日志缓冲区管理 .................................................................................... 19
4.2.1 日志缓存相关代码 ............................................................................................. 19
4.2.2 日志缓存的管理方式 ......................................................................................... 22
4.2.3 双向缓存和单向缓存的比较 ............................................................................. 25
4.3 PostgreSQL 数据缓存区改进 .................................................................................... 25
4.3.1 从 buf 结构看改进---动态调整 buf 缓存大小 .................................................. 25
4.3.2 从 buf 与 IO 看改进---异步 IO .......................................................................... 26
4.3.3 从 buf 淘汰方式看改进---freelist ...................................................................... 27
评论