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再说。
原文地址:https://www.jb51.cc/postgresql/197501.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。