网站建设的费用是不是含税的,国内最好用的免费建站平台,做网站免费空间,汕头网页建站模板目录 写在前面
1.简介
1.1何为关系型数据库
1.2何为对象型数据库
2.特性
3.代码结构
3.1数据库集簇
3.2Parser查询分析流程
3.3内部查询树组成部分
3.3.1目标列表
3.4Optimizer查询优化流程
3.4.1查询计划
3.5非计划查询的SQL命令 写在前面 如有错误请指正#xf…目录 写在前面
1.简介
1.1何为关系型数据库
1.2何为对象型数据库
2.特性
3.代码结构
3.1数据库集簇
3.2Parser查询分析流程
3.3内部查询树组成部分
3.3.1目标列表
3.4Optimizer查询优化流程
3.4.1查询计划
3.5非计划查询的SQL命令 写在前面 如有错误请指正谢谢各位 1.简介 PostgreSQL是一种对象 - 关系数据库管理系统ORDBMS支持关系型数据库的功能及具备对象数据库的特征。 1.1何为关系型数据库 关系型数据库是指根据关系模型来创建的数据库。关系模型可以看成是一个二维表格模型。 1.2何为对象型数据库 具备类、继承等面向对象程序设计语言的特征。 2.特性 1开放特性有着丰富的数据类型如任意精度的数值、无限制长度的文本、几何图元、IP地址、数组等同时还允许用户定义基于正规SQL类型的新类型让数据库自身理解复杂数据自定义类型中还可以包含继承关系。用户可以为数据库内几乎所有的对象定义新的类型如索引、操作符可重载现有操作符、聚集函数、数据域、数据类型转换、会话编码转换等。
2可编程性提供编程接口如ODBC、JDBCJava、LibpqC/C等。
3可定制性编程语言包括内置的PL/pgSQL过程语言PL/Perl、plPHP、PL/Python、PL/Ruby、PL/Tcl等脚本语言以及Java、C/C等高级编程语言。
4索引手段 a.自定义索引 b.内置B-Tree索引、Hash表索引、GiST索引、GIN索引 c.反向索引检索、表达式索引、部分索引、位图索引扫描
5多种身份认证方式PostgreSQL中可以使用数据库用户/角色、操作系统、PAM、Kerberos等方式根据主机配置文件pg_hba.conf中的设置执行对应的身份认证。 3.代码结构 Bootstrap支持Bootstrap运行模式该模式主要用于创建初始模板数据库。 本人认为这个模块类似于操作系统的引导块在初始化数据库时它相当于一个初始化程序。
Initdb初始化数据库集簇在指定目录下创建base目录从而初始化一个新的数据库集簇。Main主程序模块负责将控制权转交给Postmaster进程或Posrgres进程。Postmaster不停循环监听用户端口fork多个不同的子进程Postgres。LibpqC/C库函数处理与Client间的通信。TcopServer进程的主要处理部分调用Parser、Optimizer、Executor和Commands中的函数执行Client提交的查询。Parser编译器SQL查询命令--(词法和语法分析)-- 分析树 --(语义分析)--内部查询树。Optimizer优化器查询树→创建最优查询路径查询计划。Executor执行器执行Optimizer的查询计划Commands执行非计划查询的SQL命令。Catalog系统表操作Storage管理各种类型的存储系统Access提供各种存取方法Nodes定义系统内部的节点、链表结构及处理函数等价于一个数据结构Utils各种支持函数Regex正则表达式库及其相关函数Rewirte据规则系统对查询进行重写TSearch全文检索Psql数据库交互工具Port平台兼容性处理相关函数 3.1数据库集簇 数据库集簇database cluster是一组数据库的集合由一个PostgreSQL服务器管理其本质上是一个文件目录。 3.2Parser查询分析流程 exec_simple_query函数(在src/backend/tcop/postgres.c下)调用pg_parse_query函数进入词法分析和语法分析的主过程函数pg_parse_query再调用词法分析和语法分析的入口函数raw_parser生成分析树。pg_parse_query函数返回分析树(raw_parsetree_list)给exec_simple_query。exec_simple_query函数调用函数pg_analyze_and_rewrite进行语义分析(调用parse_analyze函数返回查询树)和查询重写(调用pg_rewrite_query函数)。返回查询树链表给exec_simple_query。 3.3内部查询树组成部分 命令类型哪种命令SELECT、INSERT、UPDATE产生了查询树。范围表被使用在此查询的关系的列表SELECT语句的范围表为from后给出的关系。结果关系一个指向范围表的索引它标识了该查询的结果应该去哪个关系DELETE、INSERT等命令的结果关系是要进行修改的表或者视图。目标列表一个表达式的列表定义了查询的结果。表达式可以是常值、指向范围表中关系的列的变量、参数或者是一个由函数调用、常量、变量、操作符等构成的表达式树。条件表达式结果值是一个bool值判断该命令是否执行。SQL语句中的WHERE子句连接树多个数据表连接时执行过程可表示为树形结构。 3.3.1目标列表 SELECT目标列表的表达式构建出SELECT查询的最终输出。对应select和from之间的表达式。UPDATE目标列表描述要替换旧行的新行。规则器会处理缺失的列做法是为其插入表达式作用是把旧行的值复制到新行。INSERT目标列表描述了将要进入结果关系的新行。DELETE因为不产生任何结果所以不需要目标列表。 3.4Optimizer查询优化流程 查询重写系统会根据一些规则和规范对查询树进行重写和优化。包括条件推导、子查询转换、逻辑优化等操作以提高查询的效率和准确性。成本估算根据查询树和统计信息估计每种可能的执行计划的成本。成本通常衡量了执行时间、磁盘和内存访问等方面的开销。执行计划生成基于估算的成本和可行性查询优化器会生成多个候选执行计划。成本评估和选择对于每个候选执行计划查询优化器会再次评估其成本并选择成本最低的执行计划作为最终的查询计划。查询计划执行最终选择的查询计划会用于执行查询并返回结果。 3.4.1查询计划 查询计划是数据库引擎根据查询语句和相关信息生成的指导数据库系统如何处理查询以获取结果描述了执行查询的具体步骤和顺序以及涉及的数据访问和操作方式。
访问方法描述如何从表中获取需要的数据行可能包括顺序扫描、索引扫描、位图扫描等。连接方法描述如何进行表之间的连接操作可能包括嵌套循环连接、哈希连接、排序合并连接等。筛选条件描述在执行过程中需要进行的数据筛选操作。排序方式描述如何对结果进行排序可能包括使用索引排序、内存排序或外部排序等。聚合操作描述如何进行分组和聚合操作如计算平均值、求和、最大值等。 3.5非计划查询的SQL命令 非计划查询的 SQL 命令包括不需要生成查询计划的操作或不会被查询优化器优化的操作。需要执行数据库对象的定义、修改和管理操作。
DDL数据定义语言命令DDL 命令用于创建、修改和删除数据库对象如创建表、修改表结构、创建索引、删除表等。这些操作不涉及实际的数据查询和操作因此不需要生成查询计划。事务控制命令事务控制命令如 BEGIN、COMMIT、ROLLBACK用于管理数据库事务的提交和回滚。这些命令只涉及事务管理而不是实际的数据查询和操作。系统管理命令系统管理命令如 SET、SHOW用于设置和获取数据库系统的配置参数和状态信息。这些命令主要用于管理和监控数据库系统而不是进行实际的数据查询和操作。列值列表Value List列值列表语法用于向表中插入特定的值而不是从表中进行查询。例如INSERT INTO 表名 VALUES (值1, 值2, ...)。视图定义命令创建视图CREATE VIEW或修改视图ALTER VIEW的命令不需要进行实际的数据查询计划而是定义和修改视图的查询逻辑。