摘要:
开始简单说就是一开始启动的很频繁(200ms 级),后来没有什么事情可做,就懒惰了。变成了 10秒级别。实际验证如下postgresql.conf 中和 log 相关部分:log_line_prefix = '%m' log_min_messages = info logging_collector = off 对 bufmgr.c 的 BgBufferSync的调试:bool BgBufferSync(void) { ……... 阅读全文
摘要:
开始bool BgBufferSync(void) { …… /* * Information saved between calls so we can determine the strategy * point's advance rate and avoid scanning already-cleaned buffers. */ st... 阅读全文
摘要:
开始bool BgBufferSync(void) { …… /* * Information saved between calls so we can determine the strategy * point's advance rate and avoid scanning already-cleaned b... 阅读全文
摘要:
开始上例子:[作者:技术者高健@博客园 mail:luckyjackgao@gmail.com][root@localhost soft]# cat caller.c#include "funclib.h"int main(){ int i=0; for (i=0; i<100; i++) { int temp=func001(); } return 0; }[root@localhost soft]# [root@localhost soft]# cat funclib.hextern int func001(); /*in funclib.c*/exter... 阅读全文
摘要:
开始重要的是:必须了解到 静态变量的使用,它们是贯穿其BgBufferSync 的主线。在一次次调用中始终存在,值也在累积。bool BgBufferSync(void) { /* info obtained from freelist.c */ int strategy_buf_id; uint32 strategy_passes; ... 阅读全文
摘要:
开始,在代码中加入调试信息。无关部分设省略。bool BgBufferSync(void) { …… int bufs_to_lap; …… if (save... 阅读全文
摘要:
开始把BgBufferSync 的代码内容简略化,得到:bool BgBufferSync(void) { …… /* Used to compute how far we scan ahead */ long strategy_delta; int bufs_to_lap; …… ... 阅读全文
摘要:
开始看PostgreSQL 中 shared_buffers 的值 是 32MB打印 src/backend/storage/buffer/bufmgr.c 中, NBuffers 的值:结果:[postgres@localhost bin]$ ./postgres -D /usr/local/pgsql/dataLOG: database system was shut down at 2012-11-01 17:19:27 CSTNBuffers is: 4096LOG: autovacuum launcher startedLOG: database system is ready... 阅读全文
摘要:
开始[作者:技术者高健@博客园 mail:luckyjackgao@gmail.com][root@localhost test]# cat teststr.c#include<stdio.h>#include<stdlib.h>int main(){ struct person { char name[8]; int age; char sex[4]; char depart[20]; }; struct person student; struct person class[]= { { ... 阅读全文