摘要:
上面这张图从整体上概括了Postgresql的查询处理的步骤以及牵涉到的各个模块,源码参考自postgresql-12.6。 一、Parser(查询分析模块) 查询分析模块主要是pg_parse_query函数(\src\backend\tcop\postgres.c 631行),输入const c 阅读全文
摘要:
查询优化是数据库管理系统中承上启下的一个模块,它接收来自语法分析模块传递过来的查询树,在这个查询树的基础上进行了逻辑上的等价变换、物理执行路径的筛选,并且把选择出的最优的执行路径传递给数据库的执行器模块。查询优化器的输入是查询树,输出是查询执行计划。 查询优化器和数据库用户之间的信息不对称,查询优化 阅读全文
摘要:
src/backend/parser/scan.l --> lexical scanner for PostgreSQL 该文件中的规则需要和psql lexer一致。Lex用来生成扫描器,其工作是识别一个一个的模式,比如数字、字符串、特殊符号等,然后将其传给Yacc。 定义段 定义段包括文字块(l 阅读全文
摘要:
Postgres进程是实际的接受查询请求并调用相应模块处理查询的PostgreSQL服务进程。它直接接受用户的命令进行编译执行,并将结果返回给用户。如此循环,直到用户断开连接。用户的命令分为两种:一种是查询命令,即插入、删除、更新和选择四种命令;另一种是非查询命令,如创建/删除表、视图、索引等命令。 阅读全文
摘要:
PostgreSQL系统的主要功能都集中于Postgres程序,其入口是Main模块中的main函数,在初始化数据集簇、启动数据库服务器时,都将从这里开始执行。Main模块主要的工作是确定当前的操作系统平台,并据此做一些平台相关的环境变量设置和初始化,然后通过对命令行参数的判断,将控制转到相应的模块 阅读全文
摘要:
gparray.py依赖的python包(datetime、copy、traceback、os),依赖的gp包(gplog、utils、db、gpversion、commands.unix) 1 from datetime import date 2 import copy 3 import tra 阅读全文
摘要:
数据库初始设置包括创建系统视图、系统表TOAST表等,复制template1来创建template0和postgres,这些操作都用普通的SQL命令来完成。 setup_sysviews函数建立系统视图,从system_views_file指向的文件读取SQL,并控制子进程执行这些SQL。 1 st 阅读全文
摘要:
数据库初始设置包括创建系统视图、系统表TOAST表等,复制template1来创建template0和postgres,这些操作都用普通的SQL命令来完成。如下代码就是用于数据库初始设置。 1 setup_auth(); 2 if (pwprompt || pwfilename) 3 get_set 阅读全文
摘要:
PostgreSQL系统的主要功能都集中于Postgres程序,其入口是Main模块(src/backend/main/main.c)中的main函数,在初始化数据集簇、启动数据库服务器时,都将从这里开始执行。Main模块主要的工作是确定当前的操作系统平台,并据此做一些平台相关的环境变量设置和初始化 阅读全文
摘要:
在bootstrap模式下创建数据库template1,存储在数据目录的子目录base/1/中。 1 /* Bootstrap template1 */ 2 bootstrap_template1(short_version); 3 /* Make the per-database PG_VERSI 阅读全文