Praveen Kumar N wrote:
> I have installed postgresql from sourcecode.I would like to know
> how pages are replaced in the bufferpool when we join two relations.I
> tried to trace it by editing files
> pgsql/src/backend/storage/buffer/(bufmgr.c,freelist.c).But i feel still I
> am missing some information after observing extracted information abt
> buffer replacement.My input datasize is 10times more than main
> memory/RAM size.When I joined two relations,postgresql accessed both
> relations sequentially one by one and that too only once.Then how is
> it joining two relations by accessing only once? Is it storing that
> accessed relations some where other than main memory/bufferpool(Becos
> they cant fit into main memory).
What kind of a join is it? If it's a merge join, using indexes, it would
only have to visit each heap page once.
> So can anybdy tell me is there is ne thing I am missing? Is there any
> concept like postgresql cache similar to kernel cache otherthan
> sharedbuffers.If so how can we figure it out.
No. All access to relations (except temporary relations) go through
bufmgr and the shared memory buffer cache.
> Is there any way by which postgresql is accessing database relations
> through,other than rotines in bufmgr.c nd freelist.c(I mean any other
> routines like ReadBuffer,StrategyGet etc.)
No.
-- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com