PostgreSQL的Storage(2)-file 和 smgr

 

smgr 做的很象一个接口,根据README的说明 只要下层实现相应的函数就能用smgr调用。现在的PostgreSQL中只剩md了。

file包含两个文件,一个buffile,一个fd。
fd可以说是最底层的了,函数都是直接调用open,close,read,write,lseek的。我开始还以为fd在smgr上层那。fd由于能打开的文件有限,用的是LRU的替换算法,实现得很简练。
buffile的函数基本都是调用fd的,主要用做临时文件什么的。

这几天看了buffer,file,smgr  他们之间的调用关系基本如图(可能不完善,毕竟storage下的其他目录还没看)

                      buffer
                          |
                       smgr
                       /
                     md       
                       /     buffile 
                        /    /
                          fd
                           |
                         OS

上层调用下层相应功能函数。buffile好象比较特殊,象Hashjoin等都是直接调用它的,没经过smgr和md的调用,这个等以后看到Hashjoin再说。

BTW: 本来画了张函数调用图,但不知道怎么贴上来。:-(

 

                                 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值