深入理解缓冲区(十六)
2011-10-21 08:30
260 查看
4.3 PostgreSQL数据缓存区改进
对于数据库的数据缓存区,PG采取的是在一块连续的数据块对应的内存中,进行局部缓存块的淘汰。当这样的缓冲区被分配好后,则不可再发生动态调整。PG的分配内存的整体方式,是把所有需要内存的都统一求出大小,在系统初始启动过程中,一次从内存中申请出硕大的一块区域,然后在这个区域上,划分出不同的小区域,为不同的内存需求者使用。这样,严重制约了内存动态使用的需求。
有的系统对于数据缓冲区的管理,是采取动态的方式,在运行中,可以自动根据实际情况,自己进行调整,这对应的,应该是另一套内存的管理方式了(如使用链表、hash等,都可以动态管理内存)。
4.3.1 从buf结构看改进---动态调整buf缓存大小
在“4.1.4 Buf结构”节描述了buf的内部结构,下图,描述了buf的整体结构。这个是从buf管理的代码的整体角度描述的。上图是PG的缓存结构图。
缓存块集合,是一个固定大小的内存区域,通过缓存头(数组)的下标,标识出数据页(Block)的位置。PG通过这种方式,实现的是静态缓冲区。
如果改造缓存头,通过指针指向缓存块,则可以实现动态缓冲区。这样,数据库的缓冲区就可以根据系统的实际情况动态扩展了。
相关文章推荐
- DirectX11--深入理解HLSL常量缓冲区打包规则
- 深入理解缓冲区(一)
- 深入理解缓冲区(十八)
- 深入理解缓冲区(三)
- 深入理解php的输出缓冲区(output buffer)
- 深入理解缓冲区---目录
- 对C语言输入输出流和缓冲区的深入理解
- 深入理解C语言----标准I/O小结(缓冲区,I/O函数及其他相关问题)
- 深入理解缓冲区(十一)
- 深入理解缓冲区(八)
- Java NIO深入理解Buffer(缓冲区)
- 深入理解缓冲区(七)
- 深入理解缓冲区(五)
- 深入理解缓冲区(十二)
- 深入理解缓冲区(二)
- 深入理解缓冲区(十四)
- 深入理解缓冲区(六)
- 深入理解缓冲区(九)
- 深入理解缓冲区(十五)
- 深入理解缓冲区(十七)