PostgreSQL服务过程中的那些事一:启动postgres服务进程二:建立连接完成

3

这节主要讨论pg服务进程postgres进程到了PostgresMain,所有后台进程,交互或其它进程从这儿开始。

进入PostgresMain后,解析客户端命令行参数dbname;做文件、存储、缓存的初始化;设置合适的信号处理句柄;调用InitPostgres方法给portgres服务进程做相关初始化,这个方法里初始化了relcache和catcache,初始化了执行查询计划的portal的管理器,填充本进程PGPROC结构相关部分成员等,这个方法做的事情较多并值得花点精力,后面单列一个主题讨论;删除内存上下文PostmasterContext(删除内存上下文的方法参见《PostgresSQL内存管理机制三:memcontext删除》);判断当前进程是否walsender进程,如果不是,创建内存上下文"MessageContext"(创建内存上下文的方法参见《PostgresSQL内存管理机制三:AllocSet/MemoryContext的内存分配》);任何,设置错误跳跃重启点。然后进入无限循环,检查并处理任何请求或者最近收到的信号。然后再接着循环。

进入无限循环后,切换到内存上下文"MessageContext"并清理干净该内存上下文;读取客户端命令;根据客户端各种命令分别进行处理。客户端命令分Q P B E F C D H S X EOF d c f这么多种,具体见“PostgresMain方法流程图”,有几种命令我也不确定对应什么SQL命令或操作,以后遇到再求证。



PostgresMain方法的调用序列图

下面时PostgresMain流程图



PostgresMain方法的流程图

后面根据一个简例简论简单查询分支,例子要是复杂点相应的解析树、查询树、计划树的图就大的看起来令人眼花缭乱。用这个例子走一边会把数据库系统实现中的编译器、分析器、优化器、执行器等几个数据库重要功能模块过一遍。


------------
转载请著明出处,来自博客:
blog.csdn.net/beiigang
beigang.iteye.com


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值