首页 > 其他分享 >POLARDB IMCI 到底是怎么工作的,事务的路由,执行的计划,与语句执行器

POLARDB IMCI 到底是怎么工作的,事务的路由,执行的计划,与语句执行器

时间:2023-11-10 14:03:02浏览次数:40  
标签:执行器 IMCI POLARDB 引擎 节点 执行 PolarDB 路由


POLARDB  IMCI 到底是怎么工作的,事务的路由,执行的计划,与语句执行器_执行引擎

6 分析处理 6.1 透明查询路由

在PolarDB-IMCI中,通过一种基于成本的路由协议,可以在不同的节点和不同的执行引擎上执行查询。路由过程对应用程序和用户完全透明,并且具有两级策略:节点间路由和节点内路由。节点间路由通过代理层实现读写流的分割(负载均衡),而节点内路由通过优化器提供对数据访问路径和执行引擎(基于行或基于列)的动态选择。

节点间路由。PolarDB-IMCI的代理为所有应用程序请求(包括OLTP和OLAP)提供统一的SQL接口。当请求进入时,代理通过一个简单的语法解析器将读写请求(如事务)指向RW节点,并将只读查询(如分析查询)指向RO节点。

如果有多个 RO 节点可用,则代理会根据负载平衡策略选择一个可用的 RO 节点。节点内路由。在 RO 节点内部执行的查询通过优化器进行节点内路由。优化器根据查询的特性、数据分布和可用索引等因素,动态选择数据访问路径(行级或列级访问)和执行引擎。这样可以根据查询的需求最大程度地提高查询性能。

总的来说,透明查询路由机制使得在PolarDB-IMCI中执行的查询可以根据成本和数据访问需求智能地路由到最适合的节点和执行引擎,从而提高整体查询性能。

节点内路由。如图8所示,PolarDB-IMCI在每个RO节点内实现了两个执行引擎。一种是面向点查询的基于行的执行引擎,另一种是面向分析查询的基于列的执行引擎。PolarDB-IMCI的优化器根据基于行的成本估算来选择合适的执行引擎。通过假设所有查询优先在基于行的执行引擎中运行(即成本较低),优化器首先生成一个面向行的执行计划。如

果面向行的计划的估算成本超过一个阈值(即成本较高),则生成并使用一个面向列的计划来使用基于列的引擎。我们将新的行-列混合成本模型和混合执行计划的发展作为未来的研究方向。

6.2 IMCI计划生成 PolarDB-IMCI不是从顶向下构建面向列的执行计划,而是通过从面向行的计划转换而来。PolarDB-IMCI使用DPhyp [39]作为连接排序算法,并通过随机采样[10, 11, 26]收集统计信息。转换的工作流程如图8所示。通过这样做,面向列的计划可以保留所有的行为特征。

例如,在PolarDB-IMCI中,面向列的计划的隐式类型转换始终与面向行的计划一致。在计划生成过程中,PolarDB-IMCI将原始表达式转换为矢量化执行格式,以利用SIMD指令。这种转换是在表达式对象(例如MySQL中的Item类)内部处理的,并且严格遵循原始的隐式类型转换。另一个例子是,面向列的计划重用了面向行的计划的错误代码和消息。在不同的执行引擎之间对齐错误是具有挑战性的。在PolarDB-IMCI中,面向列的计划可以直接从面向行的计划中保留静态错误检测,以避免这个问题。对于运行时错误,PolarDB-IMCI会将执行回退为面向行的方式。因此,PolarDB-IMCI与MySQL现有框架的兼容性非常强。

 6.3 执行引擎 为了获得先进的OLAP性能,PolarDB-IMCI设计了一个新的高性能分析执行引擎(即基于列的引擎)。借鉴内存中列式数据库[4, 24, 35]的知识,分析引擎融入了许多最先进的技术,包括流水线执行模型、一组经过优化的并行操作符和矢量化表达式评估框架。

流水线执行。矢量化执行计划的执行树被分解成多个线性路径,称为流水线。在流水线中,非阻塞操作符(例如过滤器,连接探测)一次处理一个批次的数据而不是所有数据,然后将中间结果传递给下一个操作符。流水线执行带来了几个优点:(1). 流经多个操作符的一批数据总是被缓存;(2). 中间结果被减少以最小化内存占用。

并行操作符。为了并行化每个流水线,分析引擎中的所有操作符都支持并行执行。例如,TableScan可以以非交错的方式并发获取数据包,分析引擎实现了无锁分区连接[1]。此外,为了减少缓存失效,阻塞操作符尽可能使用精心设计的数据结构(例如友好缓存的哈希表[3])和软件预取[13]。此外,所有阻塞操作符都有一个经过优化的溢出到磁盘版本,用于处理内存溢出危机,例如动态混合哈希连接[29]。

表达式评估。当一批数据被缓存时,性能瓶颈从内存访问转换为CPU计算。SIMD指令,有时也称为矢量化指令,如AVX-512,对于加速CPU计算非常强大。因此,一个表达式评估框架[37]从操作符中分离出来,以矢量化的方式(即使用SIMD指令)为计算密集型模块提供服务。

6.4 强一致性 由于PolarDB-IMCI使用异步复制机制,分析查询可能会观察到陈旧的数据。例如,分析查询可能无法读取已经在RW节点中提交的更新。但是,通过代理层,PolarDB-IMCI可以实现多种一致性级别,以满足应用程序的需求,包括强一致性。代理会跟踪RW节点的写入LSN和所有RO节点的应用LSN。写入LSN和应用LSN分别表示RW和RO的事务提交点。在写入LSN之前的事务已经在RW节点上提交。同样,应用LSN之前的任何日志条目都保证在RO节点上已经被重放。为了满足强一致性的需求,代理只会将查询路由到应用LSN不小于写入LSN的RO节点。

POLARDB  IMCI 到底是怎么工作的,事务的路由,执行的计划,与语句执行器_操作符_02

标签:执行器,IMCI,POLARDB,引擎,节点,执行,PolarDB,路由
From: https://blog.51cto.com/u_14150796/8298103

相关文章

  • 工业自动化教程3执行器
    3执行器在上一章中,我们将人类的运作方式与自动化联系起来。我们将眼睛、触觉和嗅觉比作开关和传感器,而将控制器比作大脑。在本章中,我们将探讨执行器,它可以比作手。在我们的身体系统中,双手按照大脑的指令行事。同样,在自动化系统中,控制器让执行器做什么,执行器就做什么。执行器只是......
  • oracle to polardb-o (postgresql) dblink创建步骤
    一、架构图本质上polardb-o的底层是postgresql数据库,因此该需求可以转换为创建 oracleto postgresql的dblink。1. 原理图 2.实际架构 下面为实际创建步骤二、安装依赖包yuminstall-yunixODBCyuminstall-yunixODBC-develyuminstall-ylibtoolyuminstall-ylib......
  • xxl-job-executor执行器部署到k8s中时,port报错
    错误:15:48:21.902logback[main]ERRORo.s.boot.SpringApplication-Applicationrunfailedorg.springframework.beans.factory.UnsatisfiedDependencyException:Errorcreatingbeanwithname'xxlJobConfig':Unsatisfieddependencyexpressedthroughfie......
  • 【ROS2机器人入门到实战】控制舵机学会使用执行器
    3.控制舵机学会使用执行器写在前面当前平台文章汇总地址:ROS2机器人从入门到实战获取完整教程及配套资料代码,请关注公众号<鱼香ROS>获取教程配套机器人开发平台:两驱版|四驱版为方便交流,搭建了机器人技术问答社区:地址fishros.org.cn你好,我是爱吃鱼香ROS的小鱼。本节我们尝试使用第......
  • CloudQuery ✖️ PolarDB:让数据库管理更简单
    近日,CloudQuery数据操作管控平台与阿里云PolarDB数据库管理软件,完成产品集成认证测试。也在以下功能上完善了用户使用PolarDB的体验,使数据库的管理更加安全高效。1.支持在CloudQuery中创建连接,便于进行数据库管控。2.支持编辑连接、资源纳管、连接池管理以及连接设置,可设置......
  • 祝贺!Databend Cloud 和阿里云 PolarDB 达成认证
    近日,北京数变科技有限公司旗下产品与阿里云PolarDB开源数据库社区展开产品集成认证。测试结果表明,北京数变科技有限公司旗下产品《DatabendCloud(V1.25)》正式通过了《阿里云PolarDB数据库管理软件》的技术认证,并收到了阿里云颁发的产品认证证书。经过严格联合测试,双方产品完......
  • 2023年8月中国数据库排行榜:TiDB 重夺榜眼,PolarDB 再进一位
    斗力频催鼓、争都更少筹。2023年8月的 墨天轮中国数据库流行度排行 在炎炎夏日中火热出炉,本月共有286个数据库参与排名。本月排行榜前十中,头部变动加剧。TiDB发奋图强重夺榜眼,阿里云PolarDB排名连续上升,其余数据库稳居原位显魄力。本月排行榜解读文章「专家观点」板块邀......
  • OpenCloudOS 与PolarDB全面适配
    近日,OpenCloudOS开源社区签署阿里巴巴开源CLA(ContributionLicenseAgreement,贡献许可协议),正式与阿里云PolarDB开源数据库社区牵手,并展开OpenCloudOS(V8)与阿里云开源云原生数据库PolarDB分布式版、开源云原生数据库PolarDBPostgreSQL版兼容性适配。经过......
  • PolarDB-PG TPC-C 测试
    在本节中,我们将学习如何对PolarDB-PG进行TPCC测试,本次实践将基于单机本地存储来运行。TPC-C测试TPC-C是一种衡量OLTP性能的基准测试。TPC-C混合了五种不同类型和复杂程度的并发交易,这五种并发交易又包括了在线执行以及排队延迟执行。TPC-C数据库由九种类型的表组成,以......
  • mybatis-执行器
    MyBatis中的Executor接口有三个实现类:SimpleExecutor:SimpleExecutor是最简单的Executor实现。它每次执行SQL语句时都会创建一个新的Statement对象。这种实现方式的缺点是效率较低,因为每次执行SQL语句都需要创建一个新的Statement对象。ReuseExecutor:ReuseExec......