openGauss的SQL引擎在3.1.0版本中做了哪些优化?

openGauss3.1.0版本通过优化分区表页面估算、去除不必要的PartitionIterator算子和改进SeqScan算子,提升数据库执行性能,特别是针对分区表和CPU密集型场景。

openGauss的SQL引擎在3.1.0版本中做了哪些优化?

收录于合集#技术干货83个

查询执行能力对数据库来说至关重要,这直接决定了查询语句生成的执行计划以何种方式进行执行,如果哪个执行算子的执行表现不好,将会对数据库的整体性能产生极大的影响。同时,执行算子的实现也极大考验一款数据库的工程实现能力。为此,openGauss数据库在3.1.0版本中,进一步优化了当前的部分执行算子,并希望通过优化执行算子的实现,来提高数据库的整体表现。下面介绍一下在该版本中,openGauss数据库都做了哪些SQL引擎的优化。

分区表页面估算优化

目前分区表的统计信息,代价模型使用的是普通表的机制,由于分区表和普通表结构上的不同,所以不能完全依赖普通表的机制去处理分区表的代价问题。由于分区表存在天然的分区优势,所以在分区剪枝的情况下,SQL语句在查询过程中不会访问所有分区。对于分区存在剪枝的场景,分区表页面统计时就不能单纯的统计所有分区的页面。在剪枝场景下只需要统计剪枝后的分区页面数即可。由于目前分区表没有统计每个分区的页面数,因此基于均匀性假设(分区页面不倾斜),用以下公式估算分区页面数:

剪枝后分区页面数 = 分区表总页面数 * (剪枝后分区数 / 总分区数)

通过改进分区表页面的估算方法,可以优化数据库的表扫描性能,从而提升数据库在分区表场景中的执行表现。该特性可通过GUC参数partition_page_estimation控制。

Partition Iterator算子优化

在openGauss数据库中,分区表是依靠分区迭代算子进行分区扫描的,迭代算子控制每一个分区依次扫描数据。当分区剪枝结果只有一个分区时,迭代算子已经失去了迭代器的作用,在此情况下消除迭代算子,可以避免执行时迭代算子计算的开销。由于执行器的pipeline架构,迭代算子会被重复执行,在数据量比较大的场景下消除迭代算子的收益将十分可观。故在该版本中,我们通过对迭代算子进行改进,消除分区扫描时的overhead,进而提升数据库在该场景下的执行性能。该特性可通过GUC参数partition_iterator_elimination控制。

SeqScan算子优化

开启该优化,当用户不采集cpu信息时(例如explain cpu off),关闭cpu信息采集功能(例如执行CPUUsageGetCurrent函数),从而减少cpu执行周期。该特性不影响正常的cpu信息采集,相关监控视图和系统函数不受影响。同时,从磁盘读取数据时,优化mdread机制,减少冗余的checksum检查,进而通过消除无用的操作来提升数据库性能。该特性可通过GUC参数enable_seqscan_fusion控制。

参考资源链接:[农行网上支付平台商户接口编程指南](https://wenku.csdn.net/doc/55je6g9ygc?utm_source=wenku_answer2doc_content) 农行支付接口V3.1.0版本为Java开发者提供了丰富的功能,以支持网上支付平台的商户进行支付和退款操作。首先,为了正确配置农行支付接口,你需要遵循以下步骤: 1. **下载并安装接口开发软件包**:按照《农行网上支付平台商户接口编程指南》中的安装步骤进行,确保系统满足所有必要的前提条件。 2. **配置配置文件**:正确设置`TrustMerchant.properties`文件,确保其中包含了所有必要的商户信息,如商户号、证书路径、签名密钥等。对于需要从数据库读取配置项的情况,也需要相应配置`ConfigSource.properties`文件。 3. **实现支付操作**:根据接口文档中的操作说明,编写代码以实现支付功能。通常需要创建支付对象,设置支付参数,并调用相应的支付接口方法。支付结果的处理可以通过页面通知或服务器直接通知的方式实现,开发者需要根据实际业务场景选择合适的方式。 4. **实现退款操作**:退款功能同样需要根据接口文档中提供的API进行操作。首先要调用退款接口,并按照规定格式传入必要的参数,如订单号、退款金额等。在退款流程中,还应处理可能出现的各种状态码和异常情况,确保整个退款过程的安全和效率。 在实现以上功能的过程中,安全措施是不可忽视的一环。开发者应该遵循接口提供的安全指南,使用HTTPS协议保证数据传输的安全,合理管理密钥和证书,以及对所有输入进行验证和过滤,防止SQL注入和XSS攻击等安全风险。 对于初学者或希望更深入了解农行支付接口的开发者,《农行网上支付平台商户接口编程指南》是一份宝贵的资源。它详细介绍了接口的安装、配置以及各种交易类型的操作说明,包括支付、退款等,同时提供了丰富的代码示例和错误处理方案。通过这份指南,开发者不仅能够快速上手接口操作,还能够深入理解接口背后的机制和最佳实践,为后续的项目开发和维护打下坚实的基础。 参考资源链接:[农行网上支付平台商户接口编程指南](https://wenku.csdn.net/doc/55je6g9ygc?utm_source=wenku_answer2doc_content)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值