PostgreSQL数据库技术名词解释

PostgreSQL数据库技术名词解释
• pg:PostgreSQL简称,单机版关系数据库,可使用psql命令行工具访问pg,关于其SQL基础语法可以参考官网,比如:数据定义语句、操作语句、查询语句、函数与逻辑运算、索引、约束、子查询、连接、分组、排序、聚合、联合、去重、窗口函数等。
• gp:Greenplum简称,gp是基于单机pg的多机OLAP&MPP分析型数据库,也称gpdb。
• GUC:配置项,pg内部的配置系统(Grand Unified Config),可以使用gpconfig命令来调整一个GUC的值,初始化入口为InitializeGUCOptions()函数。GUC示例:work_mem内存容量限制、enable_parallel_mode是否开启并行模式、enable_mergejoin是否开启Merge-Join。
• entry:主节点,即master节点。
• segment:存储的节点,即worker节点,处理分片数据。
• postmaster:数据库服务守护进程,每个节点上均包含一个守护进程负责处理外部的首个请求处理。postmaster启动入口为PostmasterMain()函数,该进程会为用户自动创建postgres服务进程,以及在启动时自动创建其它辅助进程。其中postgres服务入口为PostgresMain()函数,辅助进程包括walwriter、background writer、autovacuum launcher、stats collector等。
• make cluster:gp内置在gpAux/gpdemo目录下的demo集群启动工具,其本质是通过demo_cluster.sh脚本来执行$GPPATH/gpinitsystem命令,而配置项GUC等参数是通过gpinitsystem -p参数传递给各个节点的。
• motion:跨segment分布式数据分发,类似shuffle,gp的gather阶段分为广播、多播、聚集,motion即是多播(m->n)。
• slice:纵向的任务划分阶段,类似stage,一个SQL任务可划分为多个阶段,每个阶段称为一个slice。
• gang:分布式并行任务管理结构,在同一个slice阶段,在不同的segment上执行的同一个任务称为一个gang。
• QD:查询分发进程,在master节点上,由master节点的postmaster进程 fork 出来,执行查询任务时,client连接到QD进程。
• QE:查询执行进程,在segment节点上,由QD进程请求segment节点的postmaster进程 fork 出来,然后QD进程会连接到此QE进程进行任务分发,QE进程负责执行在本segment分片上的数据查询。
• schema:一个数据库实例内的命名空间namespace,schema下面可以创建独立的表、索引、视图、存储过程等。
• tablespace:表的磁盘存储目录,比如指定临时表存放位置。
• catalog:元数据表,分为local catalog和global catalog,后者是所有分片都复制共享一份表数据,主要包括:pg_namespace、pg_tablespace、pg_database、pg_class(表)、pg_type(数据类型)、pg_attribute(表字段)、pg_index(索引)等。
• regression:回归测试,开发调试时需要通过运行测试来验证功能正确性。
• partition key:表分区键,pg概念,用于单机子表分区,建表是可指定partition by column。
• distributed key:分布式键,gp概念,用于分布式集群分区,建表是可指定distributed by column。
• orca:与pg的原生优化器不同,orca是gp提供的面向OLAP场景的优化器,通过optimizer=on参数控制,默认打开。
• gpfdist:gp提供的外部表的分布式文件数据导入工具或协议,类似的还有file、pxf、s3等外部表协议。
• TPC-:TPC-C为复杂的在线事务OLTP处理测试基准,TPC-H为面向商业决策支持的OLAP测试基准,SSB为基于TPC-H的星型模型数仓OLAP测试基准,TPC-DS为面向大数据的OLAP测试基准。
• heap:堆存储表、索引表,简写h,行存结构,支持MVCC。
• ao:AO存储表(append only row),简写a,行存结构。
• aoco:AOCO存储表(append only column),简写c,列存结构。
• external:外部表(external table),简写x,外部表转发组件FDW。
• view:视图,简写v。
• analyze:数据统计机制,通过扫表来统计表数据的分布信息(直方图),用于优化查询,比如估算查询计划的代价。经常与explain搭配使用:explain analyze select * from TABLE。
• auto analyze:自动触发analyze机制,在表第一次插入数据时自动进行一次同步analyze操作。
• vacuum:数据清理机制,类似compaction,但是有一些小区别,vacuum只是清理删除或过期的数据,但是不回收空间;严格的说vacuum full等价于compaction,会回收磁盘空洞。
• auto vacuum:自动触发vacuum机制,后来异步任务;因为需要扫表,所以会附带着进行analyze操作,不过完成时间具有随机性。
• relation:关系,pg内部的说法,相当于表table。
• tuple:元组,pg内部的说法,相当于行row。
• OID:用于表示数据库中一个对象的ID,比如reloid是一张表的ID,OID本质上是一个正整数。
• TID:元组在磁盘上的物理地址,可以直接通过一个随机TID定位到数据。
• Scan:表扫描,典型扫描方式有:Seq Scan、Bitmap Heap Scan、Index Scan、TID Scan,以及Subquery Scan、WorkTable Scan等。
• CTE:公共表达式,with语句。
• Join:多表连接,典型连接方式包括:Nested Loop、Hash Join、Merge Join等。
• UTIL:功能类语句前缀(简写自Utility),比如建表、键索引等,看起来是处理DDL相关语句的模块。(关于各种D
L解释:DDL – Data Definition Language、DML – Data Manipulation Language、DCL – Data Control Language)
• RTE:范围表条目(简写自range table entry,?含义:range table是指所有表,entry是指一个表)。
• planner:查询规划器(也是查询优化器optimizer的入口),用于生成路径、生成计划。
• executor:查询执行器。
• node:按c++理解的话其相当于是pg中各种数据结构的一个基类,NodeTag是所有Node子类的首个成员变量。
• path:查询路径,是各种查询路径的抽象,描述了一个查询要扫描的内容。其NodeTag类型标记是T_Path,其子类包括:AppendOnlyPath、TidPath、BitmapHeapPath、IndexPath、SubqueryScanPath、JoinPath、GatherPath、MaterialPath、AppendPath、SortPath、GroupPath、AggPath、LimitPath等。
• pathlist:备选查询路径的列表,由于一个SQL的每种连接树可以构成一条path路径,可能的最优路径将保存在备选路径列表中。
• path_fraction:路径得分,简单理解为使用该条plan查询路径时,查询一行数据的平均分数。
• best_path:最优路径,在完成路径生成之后,计算可得到best_path然后通过调用create_plan()生成执行计划。
• plan:查询计划,根据best_path路径树来递归生成相应的plan计划树。
• targetlist:期望输出/返回的结果字段列表,貌似也称为投影信息列表。
• qual:查询条件(来自where字句内容,类似的joinqual为连接条件),简写自qualification。
• subquery:子查询,嵌套在from的中的select语句会被解析为Subquery。
• rtable:简写自range table,注意:其实际上含义为表的列表(rtable对应RTE中的RT,RTE是一张表,而RT等价于list of RTE,因此rtable就是list)。
• relids:表的列表,本质上是一个Bitmapset,每个bit索引到range table中一个RTE。
• base_rel:基本关系,简单理解为横向无法再拆解的表查询,但是纵向可能包括多层嵌套。
• join_rel:连接关系,简单理解为横向可由多个关系连接起来的组合,纵向不限定。
• append_rel:组合关系(将多个部分组合到结果集中去?),比如union、partition查询。
• cdb:集群数据库。
• locus:元组到segments的路由信息,由cdbpathlocus_from_*()函数族构建。
• pathkeys:扫描表的排序键列表,一般是指索引扫描的排序键(顺序扫描时pathkeys为空值),key的位置在越前面则排序优先级越高。
• pathtarget:期望返回的结果字段列表,相当于targetlist的前身,同时还包括列宽、排序、分组等信息。
• tle:一个输出结果字段,简写自TargetEntry,每个tle是targetlist中的一个元素。
• RelOptInfo:关系信息结构,planning的路径生成阶段为会每个路径树节点创建一个RelOptInfo,其保存了一个查询中间节点的几乎所有信息,比如:关系类型reloptkind(如RELOPT_BASEREL、RELOPT_JOINREL)、原始基本表relids,估算行数rows、可行路径列表pathlist、输出结果信息pathtarget、各维度的最优路径指针cheapest_startup_path/cheapest_total_path/cheapest_unique_path等信息。RelOptInfo的内容来自于 Query parse语法树,而PlannerInfo中持有各种RelOptInfo列表,比如build_simple_rel()会填充simple_rel_array,build_join_rel()会填充join_rel_list。
• flow:一个plan指向其subplan的指针称为flow,用于MPP跟踪Plan节点的输出元组的流向特征(?含义)。
• dqa:简写自Distinct Qualified Aggregates(?含义)。
• spill:溢写,指当内存无法容纳大量数据时,将一部分数据从内存写到磁盘中,比如hash merge时可能会触发spill,有点类似外排。
• filter:过滤器,来自于where条件中的比较操作符,比如where age > 18。
• in_filter:IN过滤器,来自于where条件中的IN操作符,比如where city in (Beijing, Shanghai)。
• PlanState:查询运行时的查询状态,一般简称ps,每个子计划都拥有自己的子状态child_ps(可简单理解为PlanState.lefttree,但是注意 AppendState 的child_ps不太一样,是一个数组结构)。
• am:插件注册相关?

相关推荐

  1. PostgreSQL数据库技术名词解释

    2024-03-31 09:18:02       29 阅读
  2. 数据库常用语法大全整理,包含名词解释

    2024-03-31 09:18:02       55 阅读
  3. 【期末复习向】文本理解与数据挖掘-名词解释

    2024-03-31 09:18:02       61 阅读
  4. 架构:服务名词解释

    2024-03-31 09:18:02       60 阅读
  5. 计算机网络名词解释

    2024-03-31 09:18:02       53 阅读
  6. 推荐系统名词解释

    2024-03-31 09:18:02       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 09:18:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 09:18:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 09:18:02       87 阅读
  4. Python语言-面向对象

    2024-03-31 09:18:02       96 阅读

热门阅读

  1. mac 安装 pip,如果你的电脑已经有 python3

    2024-03-31 09:18:02       40 阅读
  2. Mac上设置环境变量PATH

    2024-03-31 09:18:02       36 阅读
  3. 实验九 枚举问题(运算模拟)

    2024-03-31 09:18:02       39 阅读
  4. WPF Width=“2*“

    2024-03-31 09:18:02       36 阅读
  5. pytorch 层和块

    2024-03-31 09:18:02       43 阅读
  6. wpf中引用自定义字体

    2024-03-31 09:18:02       37 阅读
  7. 大模型微调-数据部分

    2024-03-31 09:18:02       43 阅读
  8. 5 倍经验日

    2024-03-31 09:18:02       32 阅读
  9. Python:静态方法

    2024-03-31 09:18:02       42 阅读
  10. 5.91 BCC工具之tcpcong.py解读

    2024-03-31 09:18:02       40 阅读
  11. #!/bin/sh和#!/bin/bash的区别

    2024-03-31 09:18:02       38 阅读
  12. 【使用python读取多类型文件夹中的文档内容】

    2024-03-31 09:18:02       39 阅读
  13. pytest中文使用文档----9集成文档测试

    2024-03-31 09:18:02       47 阅读