摘要:对于如此多的管控功能,管控起来实际的效果到底如何,本篇文章就基于当前最新版本,进行效果实测,并进行一定的分析说明。

本文分享自华为云社区《GaussDB(DWS) 资源负载管理:并发管控以及CPU管控效果实测以及分析说明【这次高斯不是数学家】》,作者: Malick 。

背景

​GaussDB(DWS)提供了复杂多样的资源负载管理手段:既可以从单个cn的总并发数限制作业的数量(max_active_statements),也可以创建资源池,对于指定资源池的用户进行并发限制。在资源池上,即可以进行内存、CPU的限制,也可以不进行资源限制。对于CPU资源的管控,即可以使用指定具体核数的硬限制,也可以使用空闲时按需分配,cpu跑满时按照配比分配资源的软限制。

​正因为有这么多的功能配置,才可以让DWS在不同的业务场景中,采取不同的配置方案,维持业务稳定性,保证重要业务的资源使用。

​对于如此多的管控功能,管控起来实际的效果到底如何,本篇文章就基于当前最新版本,进行效果实测,并进行一定的分析说明。主要分为以下几个部分:

  • 并发数限制在资源瓶颈时的作用
  • CPU限额的实际使用效果
  • CPU配额的实际效果,配额CPU与限额CPU的能力对比

场景一:并发数限制在资源瓶颈时的作用

​所谓资源瓶颈,即CPU、内存、IO、网络其中的一项或者多项达到瓶颈,出现作业之前争抢资源,造成性能大幅下降。对于此类场景,我们日常解决问题时,通常想到的几个办法:

​1.降低业务的并发量; 2.抓出消耗资源高的sql语句,令其优化;3.对于耗费cpu高的作业进行资源限制,保障其他作业有足够的资源可以使用。

​理论上每个方法都有效果,但是效果如何,并不能简单得说清楚,需要数据来进行一些印证。

环境搭建

1.配置:3台物理机,规格:

2.GaussDB(DWS)集群规格:

PS:集群的版本对测试结果基本没有影响,各个版本功能规格基本没有变化。

数据构造

测试CPU资源管控对于灵活短查询以及复杂查询的影响,复杂查询采取TPCDS数据和灵活查询采取TPCC数据。此处构造1500x的TPCDS/100xTPCC。

数据来源:

  1. tpcds数据由tpcds工具构造。耗时近一晚上。启动本地gds服务器,创建tpcds相应原表及外表,直接导入。HDD盘,导入性能也较差。
  2. tpcc数据在其余测试数据服务器中有现成数据,直接创建原表外表进行gds导入,100x数据,导入大约10min左右。

测试思路

  1. 找到tpcds中高CPU消耗的语句,测试几个并发能将CPU打满,并且需要运行时间不要过长,避免影响测试效率。
  2. 找到语句后,定好一批作业的并发数,例如整体作业数量为30个,只需4并发就会将CPU打满,那么测试不同的并发控制下,作业性能情况。
  3. 不同并发下第一个完成作业时间由于CPU争抢程度不同,时间都不一样,因此也需要记录下来。

测试数据

说明:tpcds-Q9,在本测试环境1500x数据下,单并发可使物理机cpu达到30%-50%,单并发运行时间在100s左右。;本测试采取Q9*30作为一批作业。控制不同并发数,记录每批的运行情况;4并发时cpu基本已经达到瓶颈,因此本轮测试从4并发开始。

测试结果如下:

结论分析

  1. 首先我们绘制一个并发数与整体执行时间,单个执行时间的趋势变化图:

图表如下:

2.图表分析,由上折线图可以看出:

  1. 随着并发数的增加,整体运行时间略微有所提升,说明在CPU瓶颈的情况下,并发数的降低,并不能提升批量作业的整体性能。
  2. 作业整体平均运行时间也比较平稳,平均每个作业运行的时间消耗,在不同并发数下也没有大的差别。
  3. 第一个结束的作业运行时间,在并发数为4的情况下,只有400s+,而在并发数30拉满的情况,达到了1620s+,差距很大,变化趋势基本是随着并发数的增长线性变长。

综合说明

根据测试结论分析,在CPU瓶颈的情况下,限制并发数,实际并不能提升整体运行的性能;但是在不同场景下,可以选择不同的配置策略。

例如:需要有作业及时响应的,可以将并发数限制少一些,这样能保证总有作业能以较快的速度完成;需要整体作业运行性能较快的,根据测试数据,可以将并发数设大,这样整体运行的时间最短。

点击关注,第一时间了解华为云新鲜技术~

细说GaussDB(DWS)复杂多样的资源负载管理手段的更多相关文章

  1. GaussDB(DWS)应用实践丨负载管理与作业排队处理方法

    摘要:本文用来总结一些GaussDB(DWS)在实际应用过程中,可能出现的各种作业排队的情况,以及出现排队时,我们应该怎么去判断是否正常,调整一些参数,让资源分配与负载管理更符合当前的业务:或者在作业 ...

  2. 由两个问题引发的对GaussDB(DWS)负载均衡的思考

    摘要:GaussDB(DWS)的负载均衡通过LVS+keepAlived实现.对于这种方式,需要思考的问题是,CN的返回结果是否会经过LVS,然后再返回给前端应用?如果经过LVS,那么,LVS会不会成 ...

  3. 详解GaussDB(DWS) 资源监控

    摘要:本文主要着重介绍资源池资源监控以及用户资源监控. 本文分享自华为云社区<GaussDB(DWS)资源监控之用户.队列资源监控>,作者: 一只菜菜鸟. GaussDB(DWS)资源监控 ...

  4. 十八般武艺玩转GaussDB(DWS)性能调优(三):好味道表定义

    摘要:表结构设计是数据库建模的一个关键环节,表定义好坏直接决定了集群的有效容量以及业务查询性能,本文从产品架构.功能实现以及业务特征的角度阐述在GaussDB(DWS)的中表定义时需要关注的一些关键因 ...

  5. 从数据仓库双集群系统模式探讨,看GaussDB(DWS)的容灾设计

    摘要:本文主要是探讨OLAP关系型数据库框架的数据仓库平台如何设计双集群系统,即增强系统高可用的保障水准,然后讨论一下GaussDB(DWS)的容灾应该如何设计. 当前社会.企业运行当中,大数据分析. ...

  6. 详解GaussDB(DWS) explain分布式执行计划

    摘要:本文主要介绍如何详细解读GaussDB(DWS)产生的分布式执行计划,从计划中发现性能调优点. 前言 执行计划(又称解释计划)是数据库执行SQL语句的具体步骤,例如通过索引还是全表扫描访问表中的 ...

  7. 十八般武艺玩转GaussDB(DWS)性能调优:SQL改写

    摘要:本文将系统介绍在GaussDB(DWS)系统中影响性能的坏味道SQL及SQL模式,帮助大家能够从原理层面尽快识别这些坏味道SQL,在调优过程中及时发现问题,进行整改. 数据库的应用中,充斥着坏味 ...

  8. GaussDB(DWS)应用实战:对被视图引用的表进行DDL操作

    摘要:GaussDB(DWS)是从Postgres演进过来的,像Postgres一样,如果表被视图引用的话,特定场景下,部分DDL操作是不能直接执行的. 背景说明 GaussDB(DWS)是从Post ...

  9. 十八般武艺玩转GaussDB(DWS)性能调优:路径干预

    摘要:路径生成是表关联方式确定的主要阶段,本文介绍了几个影响路径生成的要素:cost_param, scan方式,join方式,stream方式,并从原理上分析如何干预路径的生成. 一.cost模型选 ...

随机推荐

  1. gh-ost使用问题记录

    因为 pt-osc 对数据库性能影响较大,且容易造成死锁问题,目前我们在线更改表结构都使用 gh-ost 工具进行修改,这里记录一下使用 gh-ost 过程中的问题,以作记录:首先先复习一下gh-os ...

  2. 读完学会shell语法,shell脚本80%已经学会

    第3章 shell语法讲解 3.1 shell运算讲解 3.1.1 运算符的讲解 3.1.2 shell运算方式的讲解 3.1.2.1 $(())运算 [root@m01 test_init] # a ...

  3. Java指令重排序在多线程环境下的应对策略

    一.序言 指令重排在单线程环境下有利于提高程序的执行效率,不会对程序产生负面影响:在多线程环境下,指令重排会给程序带来意想不到的错误. 本文对多线程指令重排问题进行复原,并针对指令重排给出相应的解决方 ...

  4. python学习番外篇——字符串的数据类型转换及内置方法

    目录 字符串的数据类型转换及内置方法 类型转换 内置方法 优先掌握的方法 需要掌握的方法 strip, lstrip, rstrip lower, upper, islower, isupper 插入 ...

  5. C# 一维数组如何快速实现数组元素的数据类型的转换?

    一.场景假设 假设有一串字符串如下所示,字符串中的数字之间已用英文状态下的逗号隔开.要求用此字符串中的数字快速生成int类型的数组,且尽可能使用最少的代码量. string str = "1 ...

  6. slice-substring-substr-split-splice

    一.字符串slice(startIndex, endBeforeIndex) endBeforeIndex < 0,则 endBeforeIndex 为 负数,第二个参数为字符串长度加上负值,之 ...

  7. springcloud + nacos实现共用基础服务(灰度版本)

    背景: 当我们使用微服务时,若想在本地联调就需要启动多个服务,为了避免本地启动过多服务,现将注册中心等基础服务共用.当我们在服务A开发时,都是注册到同一个nacos,这样本地和开发环境的服务A就会同时 ...

  8. 一款高速的NET版的离线免费OCR

    PaddleOCR.Onnx 一款基于Paddle的OCR,项目使用ONNX模型,速度更快.本项目同时支持X64和X86的CPU上使用.本项目是一个基于PaddleOCR的C++代码修改并封装的.NE ...

  9. 4┃音视频直播系统之浏览器中通过 WebRTC 进行桌面共享

    一.共享桌面原理 共享桌面在直播系统中是一个必备功能 共享者:每秒钟抓取多次屏幕,每次抓取的屏幕都与上一次抓取的屏幕做比较,取它们的差值,然后对差值进行压缩:如果是第一次抓屏或切幕的情况,即本次抓取的 ...

  10. 【拖拽可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!

    "整篇文章较长,干货很多!建议收藏后,分章节阅读." 一.设计方案 整体设计方案思维导图: 整篇文章,也将按照这个结构来讲解. 若有重点关注部分,可点击章节目录直接跳转! 二.项目 ...