了解 PostgerSQL 的门户 – Executor vs Process Utility

 当您向 PostgreSQL 发送查询时,查询会依次经历多个处理阶段,并在最后返回结果。这些阶段称为:

  • 解析

  • 分析

  • 重写

  • 计划

  • 执行

在另一篇文章中,我简要概述了PostgreSQL在每个查询处理阶段的主要责任。你可以在这里找到它。

https://www.highgo.ca/2024/01/26/a-comprehensive-overview-of-postgresql-query-processing-stages/

在这篇文章中。有一个主要聚焦规划器模块的功能,您可以在此处找到。

https://www.highgo.ca/2024/03/22/understand-postgresqls-planner-simple-scan-paths-vs-plans/

在这篇博客中,我们将重点介绍查询处理的执行器部分,作为连接 PostgreSQL 内部模块的关键枢纽,执行器负责协调并收集查询所需的确切数据。

实际上,将执行器用于描述查询处理的这一阶段并不准确。在 PostgreSQL 源代码中,这一角色更多地被整合在名为“portal”的对象框架内。通常,它有 2 条潜在的路径,即“执行器”路径或“指令处理器”路径。

通常情况下,我们只是将此阶段称为“执行器”而不是“门户”,因为执行器处理大多数涉及 SELECT、INSERT、UPDATE、DELETE 的 DML 查询类型......等等,它必须根据“planner”模块创建的查询计划来处理它们。

另一方面,”指令处理器”并不依赖于“计划器”生成的查询计划来执行流程,而是直接处理DDL(数据定义语言)操作以及其他非DML(数据操纵语言)的查询类型,例如 VACUUM、CREATE、PREPARE ...等。

就所涉及的逻辑而言,门户(或执行器)并不像计划器那么复杂,但它同样是PostgreSQL内部架构中不可或缺的一环,因为它需要协调众多其他模块共同协作,确保能够准确地处理并产生查询的正确输出。让我们来看看。

1、一切从这里开始

postgres.c 中的函数 exec_simple_query()函数 是查询处理阶段的关键环节。我们将重点关注 在调用 PortalStart() 函数之后会发生什么。

图片

2、Portal、Executor 和 ProcessUtility 之间的关系

如上所述,portal 是封装“executor”和“process utility”的对象,其中:

l执行器负责执行计划器创建的“计划”——选择、更新、插入......等

l指令处理器负责处理与计划无关的其他非 DML – 创建、显示、游标...等

它们可以可视化为:

图片

执行器在执行过程中,通常会与表和索引的访问方法紧密协作。这些方法通常访问缓冲区管理器,并最终访问磁盘以执行数据操作。有关访问方法的更多信息,请点击此处。

另一方面,指令处理器必须查看“nodeTag”并决定访问哪个模块才能完成请求。例如:

  • nodeTag=TRANS_STMT_BEGIN – 访问事务管理器以启动事务

  • nodeTag=T_CreateTableSpaceStmt – 访问表空间管理器以创建新的表空间

  • nodeTag=T_TruncateStmt – 访问截断表的访问方法

  • nodeTag=T_CreateRoleStmt – 访问用户管理器以创建新角色

  • .. 还有很多其他的。

3、门户 – 执行器路径

我们知道门户的目标,但具体实现细节则通过一系列复杂的函数调用得以展现。下面的调用堆栈图说明了用于处理不同类型扫描 (SELECT) 的重要函数调用。这将触发门户选择“执行器”路径。

图片

在PostgreSQL的执行阶段,两个核心函数——ExecInitNode和ExecProcNode,其通过它们执行器获取计划器模块创建的计划并将其转换为执行器可以理解的数据结构。最终会创建一个树结构,就像它的计划一样,其中包含类型为execProcNodes的一个主节点和若干个子节点例如,对于并行顺序扫描,主节点的类型为“gather”,而子节点 的类型为“seqScan”。

之所以这样布局,是因为 Gather 节点需要从其所有 seqScan 子节点收集元组数据。请注意,将在 PortalRun 期间创建快照,在获取元组时计算元组的可见性时,需要这样做。有关可见性的更多信息,请点击此处。

4、门户 – 指令处理器路径

指令处理器路径不像执行器部分那么复杂。它不需要基于计划创建 execProcNode。它基本上从正确的模块调用正确的函数来处理不同类型的 NodeTag。

图片

5、总结

执行器和指令处理器共同构成了 PostgreSQL 数据库引擎的核心支柱。几乎每个查询类型都由执行器或指令处理器处理。然而,它们并非孤立工作,而是巧妙地扮演着“调度者”的角色,将适当的任务分配给正确的模块来执行。因此,当您在 PostgreSQL 中引入一个新的自定义模块时,您可能还需要修改执行器/指令处理器。希望此文能够帮助您探索 PostgreSQL 内部机制、深入理解其工作原理。

原文链接:

https://www.highgo.ca/2024/05/17/understand-postgersqls-portal-executor-vs-process-utility/

IvorySQL——一款开源的兼容Oracle的PostgreSQL

官方网址:

https://www.ivorysql.org

社区仓库:

https://github.com/IvorySQL/IvorySQL

IvorySQL社区欢迎并赞赏所有类型的贡献,期待您的加入!

记得在GitHub给我们一个 ⭐奥~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/773596.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SS8812T替代DRV8812的国产双通道H桥电机驱动芯片

由工采网代理的SS8812T是一款国产双通道H桥电机驱动芯片;该芯片为打印机和其它电机一体化应用提供一种双通道集成电机驱动方案;可Pin-to-Pin兼容替代DRV8812,可广泛应用于POS、打印机、安防相机、办公自动化设备、游戏机、机器人等。 产品描述…

14-8 小型语言模型的兴起

过去几年,我们看到人工智能能力呈爆炸式增长,其中很大一部分是由大型语言模型 (LLM) 的进步推动的。GPT-3 等模型包含 1750 亿个参数,已经展示了生成类似人类的文本、回答问题、总结文档等能力。然而,虽然 LLM 的能力令人印象深刻…

第14届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年8月21日真题

第14届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年8月21日真题 题目总数:5 总分数:128 更多真题下载点我👇https://pan.baidu.com/s/1JRLLwW2C-OBbcY2tJ3uYJg?pwd2wk2 编程题 第 1 题 问答题 编程实现&…

antd实现简易相册,zdppy+vue3+antd实现前后端分离相册

前端代码 <template><a-image:preview"{ visible: false }":width"200"src"http://localhost:8889/download/1.jpg"click"visible true"/><div style"display: none"><a-image-preview-group:previe…

【设计模式】设计模式学习线路与总结

文章目录 一. 设计原则与思想二. 设计模式与范式三. 设计模式进阶四. 项目实战 设计模式主要是为了改善代码质量&#xff0c;对代码的重用、解耦以及重构给了最佳实践&#xff0c;如下图是我们在掌握设计模式过程中需要掌握和思考的内容概览。 一. 设计原则与思想 面向对象编…

PMP--知识卡片--波士顿矩阵

文章目录 记忆黑话概念作用图示 记忆 一说到波士顿就联想到波士顿龙虾&#xff0c;所以波士顿矩阵跟动物有关&#xff0c;狗&#xff0c;牛。 黑话 你公司的现金牛业务&#xff0c;正在逐渐变成瘦狗&#xff0c;应尽快采取收割策略&#xff1b;问题业务的储备太少&#xff0…

AGI|Transformer自注意力机制超全扫盲攻略,建议收藏!

一、前言 2017年&#xff0c;谷歌团队推出一篇神经网络的论文&#xff0c;首次提出将“自注意力”机制引入深度学习中&#xff0c;这一机制可以根据输入数据各部分重要性的不同而分配不同的权重。当ChatGPT震惊世人时&#xff0c;Transformer也随之进入大众视野。一夜之间&…

【机器学习】连续字段的特征变换

介绍 除了离散变量的重编码外&#xff0c;有的时候我们也需要对连续变量进行转化&#xff0c;以提升模型表现或模型训练效率。在之前的内容中我们曾介绍了关于连续变量标准化和归一化的相关内容&#xff0c;对连续变量而言&#xff0c;标准化可以消除量纲影响并且加快梯度下降…

智能合约与企业数字化转型:案例分析与未来展望

随着区块链技术的快速发展&#xff0c;智能合约作为其重要应用之一&#xff0c;正逐渐成为推动企业数字化转型的关键工具。智能合约不仅可以自动执行和验证合同&#xff0c;还能够增强数据安全性、优化业务流程&#xff0c;并提升企业间的信任和透明度。本文将深入探讨智能合约…

CPU cache

参考&#xff1a;https://levelup.gitconnected.com/understanding-l1-l2-and-l3-caches-how-to-improve-cpu-performance-d9dcc3e2e1f5 2、以下部分&#xff1a;如何获取x86 CPU L1、L2和L3 cache的大小 - 知乎 (zhihu.com) CPU cache是介于CPU内核和物理内存&#xff08;动态…

ssm校园志愿服务信息系统-计算机毕业设计源码97697

摘 要 随着社会的进步和信息技术的发展&#xff0c;越来越多的学校开始重视志愿服务工作&#xff0c;通过组织各种志愿服务活动&#xff0c;让学生更好地了解社会、服务社会。然而&#xff0c;在实际操作中&#xff0c;志愿服务的组织和管理面临着诸多问题&#xff0c;如志愿者…

实战演练:Fail2Ban部署全攻略,确保您的服务器免受CVE-2024-6387侵害!

Fail2Ban是一个开源的入侵防护软件&#xff0c;它可以扫描日志文件&#xff0c;识别恶意行为&#xff08;如多次失败的登录尝试&#xff09;&#xff0c;并自动采取措施&#xff08;如更新防火墙规则&#xff09;来阻止攻击者。最近&#xff0c;CVE-2024-6387漏洞的爆出使我们更…

一分钟学习数据安全—自主管理身份SSI分布式加密密钥管理

在这篇之前&#xff0c;我们已经对SSI有了一个全局的了解。这个系列的文章可以作为一个学习笔记来参考&#xff0c;真正要实践其中的一些方案、协议&#xff0c;还需要参考专业的书籍和官方文档。作为一个SSI系列学习笔记的最后一篇&#xff0c;我们做一个简单的延伸&#xff0…

无服务器【Serverless】架构的深度剖析:组件介绍、优缺点与适用场景

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、云计算的发展趋势 2、无服务器计算简介 二、无服务…

DPDK概述

文章目录 1. DPDK概述1.1 DPDK 内存管理Mbuf单帧结构:1.2 DPDK内核驱动 igb_uio驱动1.3 DPDK源码下载方式1.4 pktgen源码下载方式1.5 DPDK相关名词解释 1. DPDK概述 Intel DPDK全称Intel Data Plane Development Kit&#xff0c;是Intel提供的数据平面开发工具集&#xff0c;为…

AI语音工具——Fish Speech:使用简单,可训练专属语音模型!

今天给大家介绍一款超好用的AI语音工具——Fish Speech&#xff0c;使用简单&#xff0c;还可以训练自己的语音模型&#xff01; 工具介绍 Fish Speech是由 Fish Audio 开发的免费开源文本转语音模型。经过十五万小时的数据训练&#xff0c;Fish Speech能够熟练掌握中文、日语…

binutils ifunc 流程图

上图是x86 binutils 的流程图。 函数说明_bfd_x86_elf_link_hash_table_createInit local STT_GNU_IFUNC symbol hash.elf_x86_64_check_relocsAdd support for handling STT_GNU_IFUNC symbols_bfd_elf_x86_get_local_sym_hashFind and/or create a hash entry for local sym…

SSL/CA 证书及其相关证书文件解析

在当今数字化的时代&#xff0c;网络安全变得至关重要。SSL&#xff08;Secure Socket Layer&#xff09;证书和CA&#xff08;Certificate Authority&#xff09;证书作为保护网络通信安全的重要工具&#xff0c;发挥着关键作用。 一、SSL证书 SSL证书是数字证书的一种&…

前端八股文 说一下盒模型

网页中任何一个元素都可以视为一个盒子&#xff0c;由里到外&#xff0c;盒模型包括外边界&#xff08;margin&#xff09;、边框&#xff08;border&#xff09;、内边界&#xff08;padding&#xff09;和内容&#xff08;content&#xff09;。 盒模型基本分为3种&#xff1…

【遥感语义分割】UNetFormer

原文&#xff1a;UNetFormer: An UNet-like Transformer for Efficient Semantic Segmentation of Remotely Sensed Urban Scene Imagery Libo Wang1, 2, Rui Li1, Ce Zhang3, 4, Shenghui Fang1*, Chenxi Duan5, Xiaoliang Meng1, 2 and Peter M. Atkinson3, 6, 7 1) 中国…