Hi, I'm a Computer Science student and I'm currently studying databases buffer managers. I want to do some experiments and see how the pages access works in PostgreSQL. (and I also will do some I/O experiments)
So, I want to do a "sniffer" on the Storage Layer of Postgresql. It should work telling me the page that PGSQL is reading or writing. So when I make some operation on PGSQL, the pages that were requested (to read or write) by PGSQL for the buffer, are stored in a separated file. And after that i can build some graphs, conclusions, etc... So, I made such a code to do that, but i'm not quite sure if I'm doing the right thing. Can someone of you give me a opinion ?? Many Thanks in advance, Jonas Jeske The modified code is in bufmgr.c of PostgreSQL source code. Buffer ReadBuffer(Relation reln, BlockNumber blockNum) { volatile BufferDesc *bufHdr; Block bufBlock; bool found; bool isExtend; bool isLocalBuf; /*jjeske starts here */ FILE *fp; fp = fopen("/home/jjeske/tpccuva/pgsql/saida.txt","a"); fprintf(fp,"Read Block n: %d\n",(int) blockNum); fclose(fp); .... static void write_buffer(Buffer buffer, bool unpin) { volatile BufferDesc *bufHdr; /*jjeske starts here */ FILE *fp; fp = fopen("/home/jjeske/tpccuva/pgsql/saida.txt","a"); fprintf(fp,"Write Block n: %d\n",(int) buffer); fclose(fp); ....