openGauss学习笔记-230 openGauss性能调优-系统调优-配置并行查询功能

文章目录

    • openGauss学习笔记-230 openGauss性能调优-系统调优-配置并行查询功能
      • 230.1 适用场景与限制
      • 230.2 资源对SMP性能的影响
      • 230.3 其他因素对SMP性能的影响
      • 230.4 配置步骤

openGauss学习笔记-230 openGauss性能调优-系统调优-配置并行查询功能

openGauss的SMP并行技术是一种利用计算机多核CPU架构来实现多线程并行计算,以充分利用CPU资源来提高查询性能的技术。在复杂查询场景中,单个查询的执行较长,系统并发度低,通过SMP并行执行技术实现算子级的并行,能够有效减少查询执行时间,提升查询性能及资源利用率。SMP并行技术的整体实现思想是对于能够并行的查询算子,将数据分片,启动若干个工作线程分别计算,最后将结果汇总,返回前端。SMP并行执行增加数据交互算子(Stream),实现多个工作线程之间的数据交互,确保查询的正确性,完成整体的查询。

230.1 适用场景与限制

SMP特性通过算子并行来提升性能,同时会占用更多的系统资源,包括CPU、内存、I/O等等。本质上SMP是一种以资源换取时间的方式,在合适的场景以及资源充足的情况下,能够起到较好的性能提升效果;但是如果在不合适的场景下,或者资源不足的情况下,反而可能引起性能的劣化。SMP特性适用于分析类查询场景,这类场景的特点是单个查询时间较长,业务并发度低。通过SMP并行技术能够降低查询时延,提高系统吞吐性能。然而在事务类大并发业务场景下,由于单个查询本身的时延很短,使用多线程并行技术反而会增加查询时延,降低系统吞吐性能。

  • 适用场景

    • 支持并行的算子:计划中存在以下算子支持并行。

      • Scan:支持行存普通表和行存分区表顺序扫描、列存普通表和列存分区表顺序扫描。
      • Join:HashJoin、NestLoop
      • Agg:HashAgg、SortAgg、PlainAgg、WindowAgg(只支持partition by,不支持order by)。
      • Stream:Local Redistribute、Local Broadcast
      • 其他:Result、Subqueryscan、Unique、Material、Setop、Append、VectoRow
    • SMP特有算子:为了实现并行,新增了并行线程间的数据交换Stream算子供SMP特性使用。这些新增的算子可以看做Stream算子的子类。

      • Local Gather:实现实例内部并行线程的数据汇总。
      • Local Redistribute:在实例内部各线程之间,按照分布键进行数据重分布。
      • Local Broadcast:将数据广播到实例内部的每个线程。
      • Local RoundRobin:在实例内部各线程之间实现数据轮询分发。
    • 示例说明,以TPCH Q1的并行计划为例。

      img

      在这个计划中,实现了Scan以及HashAgg算子的并行,并新增了Local Gather数据交换算子。其中3号算子为Local Gather算子,上面标有的“dop: 1/4”表明该算子的发送端线程的并行度为4,而接受端线程的并行度为1,即下层的4号HashAggregate算子按照4并行度执行,而上层的1~2号算子按照串行执行,3号算子实现了实例内并行线程的数据汇总。

      通过计划Stream算子上表明的dop信息即可看出各个算子的并行情况。

  • 非适用场景

    • 索引扫描不支持并行执行。
    • MergeJoin不支持并行执行。
    • WindowAgg order by不支持并行执行。
    • cursor不支持并行执行。
    • 存储过程和函数内的查询不支持并行执行。
    • 不支持子查询subplan和initplan的并行,以及包含子查询的算子的并行。
    • 查询语句中带有median操作的查询不支持并行执行。
    • 带全局临时表的查询不支持并行执行。
    • 物化视图的更新不支持并行执行。

230.2 资源对SMP性能的影响

SMP架构是一种利用富余资源来换取时间的方案,计划并行之后必定会引起资源消耗的增加,包括CPU、内存、I/O等资源的消耗都会出现明显的增长,而且随着并行度的增大,资源消耗也随之增大。当上述资源成为瓶颈的情况下,SMP无法提升性能,反而可能导致数据库实例整体性能的劣化。下面对各种资源对SMP性能的影响情况分别进行说明。

  • CPU资源

    在一般客户场景中,系统CPU利用率不高的情况下,利用SMP并行架构能够更充分地利用系统CPU资源,提升系统性能。但当数据库服务器的CPU核数较少,CPU利用率已经比较高的情况下,如果打开SMP并行,不仅性能提升不明显,反而可能因为多线程间的资源竞争而导致性能劣化。

  • 内存资源

    查询并行后会导致内存使用量的增长,但每个算子使用内存上限仍受到work_mem等参数的限制。假设work_mem为4GB,并行度为2,那么每个并行线程所分到的内存上限为2GB。在work_mem较小或者系统内存不充裕的情况下,使用SMP并行后,可能出现数据下盘,导致查询性能劣化的问题。

  • I/O资源

    要实现并行扫描必定会增加I/O的资源消耗,因此只有在I/O资源充足的情况下,并行扫描才能够提高扫描性能。

230.3 其他因素对SMP性能的影响

除了资源因素外,还有一些因素也会对SMP并行性能造成影响。例如分区表中分区数据不均,以及系统并发度等因素。

  • 数据倾斜对SMP性能的影响

    当数据中存在严重数据倾斜时,并行效果较差。例如某表join列上某个值的数据量远大于其他值,开启并行后,根据join列的值对该表数据做hash重分布,使得某个并行线程的数据量远多于其他线程,造成长尾问题,导致并行后效果差。

  • 系统并发度对SMP性能的影响

    SMP特性会增加资源的使用,而在高并发场景下资源剩余较少。所以,如果在高并发场景下,开启SMP并行,会导致各查询之间严重的资源竞争问题。一旦出现了资源竞争的现象,无论是CPU、I/O、内存,都会导致整体性能的下降。因此在高并发场景下,开启SMP往往不能达到性能提升的效果,甚至可能引起性能劣化。

230.4 配置步骤

  1. 观察当前系统负载情况,如果系统资源充足(资源利用率小于50%),执行2;否则退出。

  2. 设置query_dop=1(默认值),利用explain打出执行计划,观察计划是否符合适用场景与限制中的适用场景。如果符合,进入3。

  3. 设置query_dop=value,不考虑资源情况和计划特征,强制选取dop为1或value。

  4. 在符合条件的查询语句执行前设置合适的query_dop值,在语句执行结束后关闭query_dop。举例如下。

    openGauss=# SET query_dop = 4;
    openGauss=# SELECT COUNT(*) FROM t1 GROUP BY a;
    ......
    openGauss=# SET query_dop = 1;
    

    img 说明:

    • 资源许可的情况下,并行度越高,性能提升效果越好。
    • SMP并行度支持会话级设置,推荐客户在执行符合要求的查询前,打开smp,执行结束后,关闭smp。以免在业务峰值时,对业务造成冲击。

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

img

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

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

相关文章

使用面向对象思想去封装实现canvas功能

前言 各种插件/库和一些常规的业务代码,最大的区别就在于编程的思路与方法。 比如我们现在想写一段业务代码,使用js实现一个矩形,那很简单,几行代码就可以了 const canvas document.getElementById(canvas)const mode canvas.getContext(2d)mode.rect(200,200,200,200)mode…

CIM的基本概念知识,以及应用场景介绍

CIM的理念 CIM基本理念总结为:依托先进技术、面向具体需求、融合动态信息、描述实体单元、支撑各类应用。 首先要依托于对 BIM、GIS、IOT技术的透彻理解和深度应用,并与云计算、大数据等技术充分融合。 同时,针对不同区域、不同运行管理对象、…

【dc-dc】AP5101C 高压线性恒流IC 9-19V 500ma LED电源驱动方案 过压保护 抗浪涌线路

产品描述 AP5101C 是一款高压线性 LED 恒流芯片 , 外围简单 、 内置功率管 , 适用于6- 100V 输入的高精度降压 LED 恒流驱动芯片。最大电流2.0A。AP5101C 可实现内置MOS 做 2.0A,外置 MOS 可做 3.0A 的。AP5101C 内置温度保护功能 ,温度保护…

拜登:“一切非 Rust 项目均为非法”,开发界要大变天?

文章目录 科技巨头应为安全漏洞负起责任使用其他语言的开发者​该何去何从? 白宫国家网络总监办公室(ONCD,以下简称网总办)在本周一发布的报告中说道:“程序员编写代码并非没有后果,他们的⼯作⽅式于国家利…

练习 2 Web [ACTF2020 新生赛]BackupFile 1

[ACTF2020 新生赛]BackupFile 1 Web常规题目 首先尝试查找常见的前端页面index.php之类的,没找到 题目有个“BackupFile”——备份文件 尝试用工具遍历查找相关的文件 御剑没扫出来,搜索搭建好dirsearch后,扫出来的index.php.bak 扫描工…

我又上来啦!湖人胜率反超勇士升至第九 勇士降第十

nba直播吧 02月29日讯 湖人今日在洛杉矶德比中116-112逆转击沉快船! 赛后,湖人的战绩来到32胜28负,胜率反超勇士(30胜27负),升至西部第九,勇士降到西部第十。

eBay美国站怎么样?eBay跨境电商卖家开店必知!

在众多跨境电商平台之中,eBay作为全球知名的电商平台之一,为卖家提供了跨境电商的机会。对于中国卖家而言,这是一个充满机遇的市场。那么,eBay美国站怎么样?如何顺利在美国eBay上开店呢?让我们一起来了解一…

Apache SeaTunnel 及 Web 功能部署指南(小白版)

在大数据处理领域,Apache SeaTunnel 已成为一款备受青睐的开源数据集成平台,它不仅可以基于Apache Spark和Flink,而且还有社区单独开发专属数据集成的Zeta引擎,提供了强大的数据处理能力。随着SeaTunnel Web的推出,用户…

证明StringBuilder不是现性安全的

1 理论证明 StringBuilder存放字符串的属性是char value[], 这在其父类AbstractStringBuilder里面可以查看: 数组都是创建在堆中,堆中的内存任意线程都可以访问。而且这个字符数组没有像String类那样用final修饰,所以任意线程都可以修改&am…

八、ActiveMQ持久化

ActiveMQ持久化 一、MQ的高可用二、持久化介绍三、持久化存储方式1.AMQ Mesage Store(了解)2.KahaDB消息存储(默认)2.1 存储原理 3.JDBC消息存储4.LevelDB消息存储(了解)5.JDBC Message Store with ActiveMQ Journal查询持久化存储方式 四、持久化存储使用1.JDBC消息…

【小夏送书 | 第二期】世界顶级名校计算机专业,都在用哪些书当教材?

🌄参与规则 参与方式:关注博主点赞收藏评论,(每人最多评论三次) 本次送书1~3本【取决于阅读量,阅读量越多,送的越多】 活动时间至:2024-3-6 20:00:00 | 随机抽取由博主动态公布抽…

linux centos 挂载磁盘

linux centos 挂载磁盘 未挂载磁盘分区挂载硬盘 背景:客户新加了一块600G的数据盘要挂载使用 未挂载磁盘分区 查看未挂载的磁盘 fdisk -l开始分区 fdisk /dev/sdb按照图示一次输入指令 再次查看 fdisk -l格式化 mkfs -t ext4 /dev/sdb1挂载硬盘 创建数据目录…

Visio使用笔记

记录一下需要的常用操作 圆角矩形的弧度调整 如果一开始创建的是圆角矩形,可以菜单栏先改为矩形 取消箭头的对齐吸附 alt F9,取消勾选 忘记快捷键,可以菜单栏找到视图,点击视觉帮助右下角的小箭头,引出上面的界面…

《Decoupling Representation and Classifier for Long-Tailed Recognition》阅读笔记

论文标题 《Decoupling Representation and Classifier for Long-Tailed Recognition》 用于长尾识别的解耦表示和分类器 作者 Bingyi Kang、Saining Xie、Marcus Rohrbach、Zhicheng Yan、 Albert Gordo、Jiashi Feng 和 Yannis Kalantidis 来自 Facebook AI 和 新加坡国…

推荐一款桌面端redis连接工具, redis desktop manager替代品——another redis desktop manager

下载地址 Another Redis Desktop Manager | 更快、更好、更稳定的Redis桌面(GUI)管理客户端,兼容Windows、Mac、Linux,性能出众,轻松加载海量键值 封面对比 对比redis desktop manager ,ui上有巨大的改进 但是redis desktop ma…

力扣262 行程和用户

如何计算特定时间段内非禁止用户的出租车行程取消率。这个问题可以通过SQL查询来解决,我们需要关联Trips表和Users表来筛选出符合条件的行程记录,并计算取消率。 目录 题目描述 思路整理 完整代码及解释 题目描述 表:Trips -----------…

数据卷(Data Volumes)自定义镜像(Dockerfile)

目录 一.数据卷(Data Volumes) 二.自定义镜像(Dockerfile) 自定义centos 一.数据卷(Data Volumes) 数据卷(Data Volumes)是一个可供一个或多个容器使用的特殊目录,它将主机操作系统目录直接映射进容器,它可以提供很多有用的特性: 1.数据卷…

软件测试如何做到充分性测试?

做软件测试要想保质保量,就要做到测试充分,什么是测试充分,就是把所需要覆盖的场景都要覆盖到。如何做到场景全面覆盖,特别是在时间紧任务重的时候?我把我这些年来工作的一点经验总结一下分享给大家,希望对…

基于springboot实现二手图书交易平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现二手图书交易平台系统演示 摘要 本文讲述了基于B/S模式的校园二手交易网站统的设计与实现。所谓的校园二手交易网站统是通过网站推广互联企业的二手物品和技术服务,并使客户随时可以了解企业和企业的产品,为客户提供在线服务和订单处…

ctfshow——反序列化

文章目录 web 254——啥也没web 255——反序列化对变量进行赋值(1)web 256——反序列化对变量进行赋值(2)web 257——对象注入web 258——对象注入(绕过preg_match)web 259 web 254——啥也没 这里就是使用GET传输,use…