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