- 博客(7)
- 收藏
- 关注
原创 PostgreSQL启动过程中的那些事七:初始化共享内存和信号十六:shmem中初始化BgWriter
这一节pg初始化后台写进程(BgWriter)用到的相关结构,通过BgWriterShmemInit例程实现。主要是初始化了一个BgWriterShmemStruct结构,并使用了面向过程C语言编程的一个技巧,把这个结构中的固定长度数组BgWriterRequest requests[1]扩充成NBuffers个(根据默认值或GUC参数的设置计算得到)的BgWriterRequest结构的数组,以
2012-03-28 21:12:46 1280
原创 PostgreSQL启动过程中的那些事七:初始化共享内存和信号十五:shmem中初始化ProcSignal
这一节pg初始化非postmaster进程间发送信号用到的相关结构,在共享内存里通过信号交互,通过ProcSignalShmemInit例程实现。主要是初始化了MaxBackends +NUM_AUXPROCTYPES =164个(默认是100+64个,可以设置)ProcSignalSlot结构的数组,以供非postmaster进程之间互动互操作。 1先上个图,看一下函数调用过程梗概,中间
2012-03-22 22:17:40 1162
原创 PostgreSQL启动过程中的那些事七:初始化共享内存和信号十四:shmem中初始化PMSignal
这一节 pg 初始化 postmaster 子进程给 postmaster 进程发送信号用到的相关结构,在共享内存里通过信号交互,通过 PMSignalShmemInit 例程实现 。主要是初始化了一个 PMSignalData 结构,并使用了面向过程编程的一个技巧,把这个结构中的固定长度数组 sig_automatic_t PMChildFlags[1] 扩充成 2XMaxBackends=20
2012-03-19 12:02:46 1068
原创 PostgreSQL启动过程中的那些事七:初始化共享内存和信号十三:shmem中初始化SharedInvalidationState
这一节pg初始化管理共享失效信息状态缓存所用到的相关结构,通过CreateSharedInvalidationState例程实现。共享失效消息主要涉及系统目录、逻辑表、物理表文件、数据库等。 1先上个图,看一下函数调用过程梗概,中间略过部分细节 初始化共享失效状态缓存方法调用流程图 2初始化xlog相关结构 话说main()->…->PostmasterMain()-
2012-03-14 20:40:37 1176
原创 PostgreSQL启动过程中的那些事七:初始化共享内存和信号十二:shmem中初始化SharedBackendStatus
这一节pg初始化共享后台进程状态数组SharedBackendStatus和多个字符串缓存,通过CreateSharedBackendStatus例程实现。 1先上个图,看一下函数调用过程梗概,中间略过部分细节 初始化SharedBackendStatus方法调用流程图 2初始化xlog相关结构 话说main()->…->PostmasterMain()->…->
2012-03-11 21:05:15 1283
原创 PostgreSQL启动过程中的那些事七:初始化共享内存和信号十一:shmem中初始化SharedProcArray
这一节pg初始化进程表,通过CreateSharedProcArray例程实现,该例程中初始化的相关结构主要是为了支持维护一个所有活跃backend进程的PGPROC结构的未排序数组。尽管多处用到此数组,但主要是作为确定当前运行进程的事务集合的一种方式。 1先上个图,看一下函数调用过程梗概,中间略过部分细节 初始化SharedProcArray方法调用流程图 2初始化xlog相关结构
2012-03-08 21:37:26 1294
原创 PostgreSQL启动过程中的那些事七:初始化共享内存和信号十:shmem中初始化PROC索引、辅助进程和信号
这一节pg初始化进程表,通过InitProcGlobal例程实现,在postmaster或standalone进程启动时初始化全局进程表。pg还创建了支持被请求的backend进程时每个backend进程需要的信号。以前pg仅在backend进程实际启动时分配信号,但是这样不好,因为这样使postgres在加载时失败,很多unix系统被配置/错误配置成在信号数目上比较小,在试着开启了一个进程时信号
2012-03-05 20:39:29 1507
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人