随笔分类 - PostgreSQL源码分析
PostgreSQL (也叫 Postgres)是一个自由的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和对专有系统比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server的一种选择。
摘要:系统缓冲管理器 当数据库访问表时,需要表的模式信息,比如表的列属性、OID、统计信息等。PostgreSQL将表的模式信息存放在系统表中,因此要访问表,就需要首先在系统表中取得表的模式信息。对于一个PostgreSQL系统来说,对于系统表和普通表模式的访问是非常频繁的。为了提高这些访问的效率,Pos
阅读全文
摘要:下面的代码是用来初始化输出到Makefile中变量,比如ac_default_prefix、ac_clean_files、ac_cnofig_libobj_dir等。 1 # Initializations. 2 ac_default_prefix=/usr/local 3 ac_clean_fil
阅读全文
摘要:源码编译PG8.4.1时,需要在安装完几个依赖的开发库后,在源代码目录下运行configure脚本。下面我们就分析一下该名为configure的shell脚本。其主要功能是猜测系统依赖变量的值并创建Makefiles。 一、环境检测 下面的代码是为了照顾zsh这种极品Shell,因为不使用zsh,所
阅读全文
摘要:相关代码的路径如下所示:/src/backend/storage/smgr。外存管理负责处理数据库与外存介质(在PostgreSQL中只实现了磁盘的管理操作)的交互过程。在PostgreSQL中,外存管理由SMGR(主要代码在smgr.c中)提供对外存操作的统一接口。SMGR负责统管各种介质管理器,
阅读全文
摘要:数据库集簇的逻辑结构 数据库集簇(database cluster)是指由单个PostgreSQL服务器实例管理的数据库集合。(解读:数据库集簇是集合,其元素是数据库。一个PostgreSQL服务器实例只会在单机上运行并管理单个数据库集簇。注意这里表述中的两个”单“,即单机单个集簇,说明服务器实例不
阅读全文
摘要:主要用于对目录数据结构和目录操作函数的封装 头文件的路径如下所示:/src/include/port/win32_msvc/dirent.h。该文件主要是win32 native目录操作函数的封装。从源代码目录接口可以看出该文件主要作用是针对win32_msvc的移植文件,这里的port就是移植的意
阅读全文
摘要:看了上一篇PG虚拟文件描述符(VFD)机制——FD LRU池一:postgresql-8.4.1/src/backend/storage/file/fd.c,了解了FD LRU池的原理和API。但是我们还没有了解清楚VFD是怎么复用的FD。在操作系统中,当一个进程创建或是打开一个文件时,操作系统会为
阅读全文
摘要:本篇博客讲解fd.c文件中对C函数库文件操作API的相关封装。(相关C函数库文件操作API参见博主linux分类下的文章)InitFileAccess函数用于在postgresql启动时初始化VFD LRU池,并向系统注册proc-exit勾子以确保退出时清理临时文件。 InitFileAccess
阅读全文
摘要:本篇博客分析PostgreSQL数据库的虚拟文件描述符(VFD)机制——FD LRU池
阅读全文

浙公网安备 33010602011771号