PostgreSQL启动过程中的那些事十六:StartDataBase梗概

PostgreSQL启动过程中的那些事十六:StartDataBase梗概,第1张

概述       这一节到了pg的高潮,StartupDataBase启动数据库。        经过细致甚至有些枯燥(这中间我中断了几次就是有这感觉,干这行吗,还是搞清楚了心里踏实。)的准备,激动人心的时刻到了,pg要开始“high”了,pg人的原话就是“We're ready to rock and roll...”。        一个StartupDataBase方法涉及到的方法数十乃至上百,

这一节到了pg的高潮,StartupDataBase启动数据库。

经过细致甚至有些枯燥(这中间我中断了几次就是有这感觉,干这行吗,还是搞清楚了心里踏实。)的准备,激动人心的时刻到了,pg要开始“high”了,pg人的原话就是“We're ready to rock and roll...”。

一个StartupDataBase方法涉及到的方法数十乃至上百,涉及到的代码有数万行,甚至可以到十万行这个数量级,搞到word文档里有几百页,把这些存在复杂逻辑的代码用几页几十页的文档写出来有很大挑战,下面开始讨论吧。

话说main()->PostmasterMain()->StartupDataBase(),pg开始加载模板库、启动XLOG、验证数据库一致性、根据需要做数据库恢复和创建检查点、启动各辅助进程(后台写进程、WAL日志写进程、autoVACUUM进程、归档进程、统计进程)(这个过程参见“StartupDataBase调用流程略图”,这个过程相当的繁冗,为了不至于眼花乃至理不出头绪,就来一个大略的略图。),加上前面的启动的系统日志进程(参见《pg启动过程中的那些事十二.五:启动系统日志进程syslogger》),pg开始提供服务了,reaper方法在日志里写一句”database system is ready to accept connections”。

这中间少了一个生命周期及其短暂的不为大家所熟悉的进程,做了启动XLOG、验证数据库一致性、根据需要做数据库恢复和创建检查点等事情(StartupDataBase调用流程略图中红色框备份),做完这些事情后它就结束了。这个进程就是“启动进程”(“startup progress”)。

这几个进程都调用自己相应的函数,组织不同入参,然后调用postmaster_forkexec函数,创建一个进程,根据不同的入参在SubPostmasterMain函数里走了不同的分支。具体见下图:



StartupDataBase调用流程略图


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

总结

以上是内存溢出为你收集整理的PostgreSQL启动过程中的那些事十六:StartDataBase梗概全部内容,希望文章能够帮你解决PostgreSQL启动过程中的那些事十六:StartDataBase梗概所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1178855.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存