数据仓库服务 GAUSSDB(DWS)-资源管理优秀实践:场景介绍

时间:2024-06-07 10:54:01

场景介绍

当有多个数据库用户同时在GaussDB(DWS)上执行SQL作业时,可能出现以下情况:

  1. 一些复杂SQL可能会长时间占用集群资源,从而影响其他查询的性能。例如一组数据库用户不断提交复杂、耗时的查询,而另一组用户经常提交短查询。在这种情况下,短时查询可能不得不在资源池中等待耗时查询完成。
  2. 一些SQL由于数据倾斜、执行计划未调优等原因,占用过多内存空间,导致其他语句因申请不到内存而报错,或占用过多磁盘空间,导致磁盘满而触发集群只读,无法进行写入。

为了提高系统整体吞吐量,避免坏SQL影响系统整体运行,您可以使用GaussDB(DWS)工作负载管理功能处理这类问题,例如,将经常提交复杂查询作业的数据库用户分为一类,为这类用户创建一个资源池并给这个资源池分配多一些的资源,之后将这类用户添加至这个资源池中,那么这类用户所提交的复杂作业只能使用所创建资源池拥有的资源;同时再创建一个占用资源较少的资源池分配给执行短查询的用户使用,这样两种作业就能够同时执行互不影响。

以A用户为例,该用户业务场景主要分为联机交易(OLTP)和报表分析(OLAP)两大类,其中报表服务的优先级相对较低,在合理的情况下优先保障业务系统的正常运行。业务系统中运行的SQL分为简单SQL和复杂SQL,大量复杂SQL的并发执行会导致数据库服务器资源争抢,简单SQL的大量并发对服务器不构成持续压力,短时间内可执行完成,不会造成业务堆积。其中报表服务中运行的SQL以复杂SQL居多,整体业务逻辑相对复杂,在数据库层面需要分别对核心交易和报表服务进行合理的资源管控,以保障业务系统正常运行。

报表分析类业务的优先级和实时性相对较低,但是复杂度更高,为有效进行资源管控,将报表分析和核心交易业务进行数据库用户分离,例如核心交易业务使用数据库用户budget_config_user,报表分析业务使用数据库用户report_user。针对交易用户和报表用户分别进行CPU资源和并发数控制以保障数据库稳定运行。

结合报表分析业务的负载调研、日常监控和测试验证,50并发以内的复杂报表SQL不会引起服务器资源争抢,不会引起业务系统卡慢,配置报表用户可使用20%的CPU资源。

结合核心交易业务的负载调研、日常监控和测试验证,100并发以内的查询SQL不会对系统造成持续压力,配合交易用户可使用60%的CPU资源。

  • 报表用户资源配置(对应资源池pool_1):CPU=20%,内存=20%,存储=1024000MB,并发=20。
  • 交易用户资源配置(对应资源池pool_2):CPU=60%,内存=60%,存储=1024000MB,并发=200。

设置单个语句最大内存使用量,超过使用量则报错退出,避免单个语句占用过多内存。

异常规则中设置阻塞时间=1200S,执行所消耗时间1800s,强制终止。

support.huaweicloud.com/bestpractice-dws/dws_05_0075.html