- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PostgreSQL学习笔记搭建了Postgres在Windows上的编译调试环境
PostgreSQL学习笔记YY 搭建了Postgres在Windows上的编译调试环境
分析Postgresql源代码 2011-07-01 15:58:41| 分类: IT-POSTGRESQL | 标签: |字号大
中
小 订阅
分析Postgresql源代码(01)
向前走,你就会产生勇气。现在,让我们一起来踏上postgresql源代码分析的艰辛之路吧。欲善其事,必利其器,我将在这第一篇文章中向你介绍如何做准备工作。
1)准备用于分析的源代码
首先,到去下载源代码,最好是下载那个全部打包在一起,8MB多的文件,然后,在linux下编译安装,最后将成功编译后的源代码打包拷回windows环境,因为我推荐的源代码分析工具都是windows环境下的
2)准备用于分析源代码的工具
可以在两个方案中选择:
SourceInsight,
Microsoft visual c++(可以再加上visual assistant)
我推荐SourceInsight
3)准备参考书籍
关于数据库系统理论的书籍,下面二选一:
数据库系统概论(第三版),萨师煊、王珊,高等教育出版社
数据库系统概念(第四版影印版),Abraham Silberschatz等,高等教育出版社
关于数据库系统实现的书籍,下面二选一:
数据库系统实现(中文版),杨冬青等译,机械工业出版社
数据库系统实现(英文版),Hector Garcia-Molina等,机械工业出版社
关于Unix编程
Unix环境高级编程, 尤晋元等译,机械工业出版社
4)准备向别人求教
我个人以为,postgresql源代码分析是需要相当长一段时间的。在这漫长的时间和庞大的代码量面前,我觉得进行分析的人目前的水平如何倒不是很重要的了,重要的是耐心和毅力。我特别希望这里能够成为切磋讨论的地方,所以有问题,就可以优先考虑到这里来发问。
发表于 2009-9-24 23:55 | 只看该作者
分析Postgresql源代码(02)
这一篇短文中,将介绍postgresql源代码的组成。先感谢鼓励我做源代码分析的兄弟,呵呵,你们的鼓励也许将我推上了一条不归路。
从Linux下拷回通过编译的源代码后,在硬盘上展开,例如我展开后将所有的源代码放到D:\Postgresql\source目录下。然后建立一个目录D:\Postgresql\insight,打开sourceinsight后在这个目录下创建一个project,将D:\Postgresql\source\backend目录下的所有文件加入该项目
然后找到D:\Postgresql\source\doc\postgres.tar.gz,将它解开到D:\Posgresql\doc目录下,再用浏览器打开D:\Postgresql\doc\html\index.html并按ctrl+d加入收藏夹,有时间的话,最好先读完这份文档(这份文档有laser的中文翻译版)。另外再用浏览器打开D:\Postgresql\source\src\tools\backend\index.html,将它也加入收藏夹,这份文档的名称是How PostgreSQL Processes a Query,随便点击文档中的图上任一框即转到postgresql源代码组成介绍,大致意思翻译如下:
PostgreSQL的Backend目录
作者:Bruce Momjian
点击小节的标题即可见到该节的源代码
bootstrap - 通过initdb创建最初的数据库模板
几乎PostgreSQL的每一个操作都需要存取系统表,那么如何创建这些系统表呢?不能以通常的方式创建这些系统表并向其中插入数据,因为表的创建和插入要求系统表已经存在。这一部分代码的目的就是使用一种仅仅在bootstrap过程中使用的特殊方法来直接建立系统表
main - 将控制转到postmaster或postgres
检查进程名(argv[0])和各种标志, 然后将控制转到postmaster或postgres
postmaster - 控制postgres服务器启动/终止
创建共享内存,然后进入一个循环等待连接请求。当一个连接请求到达时,启动一个postgres后台服务进程,将连接转给它
libpq - 后台服务器libpq库函数
处理与客户进程间的通讯
tcop - 将请求分派到合适的模块
这是postgres后台服务进程的主要处理部分, 它调用parser, optimizer, executor, 和commands中的函数
parser - 将SQL查询转化为查询树
将来自libpq的SQL查询转换为命令形式的结构供
文档评论(0)