您的位置:首页 > 其它

深入理解缓冲区(十六)

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通过这种方式,实现的是静态缓冲区。

如果改造缓存头,通过指针指向缓存块,则可以实现动态缓冲区。这样,数据库的缓冲区就可以根据系统的实际情况动态扩展了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: