暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB A 负载管理(队列控制)

墨天轮 2019-10-12
697

负载管理(队列控制)

为了防止并发过多时,系统负载过大时因资源竞争而导致的业务性能下降,需要通过并发管理来限制集群和资源池的并发量,保证重点业务的运行。系统支持的并发控制如表1所示。

表1 并发控制类型

并发控制类型

说明

全局并发控制

通过设置系统级别的GUC参数“max_active_statements”,可以对数据库的全局并发量进行管理。

  • 单CN最大并发量是指单个CN上允许同时运行的作业数量。
  • 全局并发量是指集群中允许同时运行的作业数量。集群是由多个CN提供服务的,因此,全局并发量是所有CN的最大并发量之和。
说明:

下面两类语句不受全局并发控制的限制:

  • 内部逻辑触发语句,例如系统视图内部逻辑、gs_clean、CM等工具执行逻辑等
  • 管理员执行的语句。

局部并发控制

局部并发量,又称资源池并发量,是指各个资源池上允许运行的最大作业并发量。通过设置资源池的参数“ACTIVE_STATEMENTS”和“MEM_PERCENT”,可以对资源池的并发量进行管理。

说明:
  • 一般而言,全局并发量应该大于或者等于局部并发量之和。如果全局并发量小于局部并发量,则实际业务执行时的并发量不大于设置的全局并发量。
  • 复杂语句才受局部并发控制的限制。非自适应负载模式下复杂语句是指执行代价大于等于GUC参数parctl_min_cost值的语句。常用语句中,DDL语句和set语句因为执行代价小,并不受局部并发机制管理。
  • 自适应负载模式下复杂作业是指,执行语句估算消耗的内存大于给定的阈值(当前为32MB)的语句。

操作步骤

全局并发控制

假设我们要设置全局并发量为30,集群部署有3个CN实例。根据全局并发量,计算单CN最大并发量。单CN最大并发量=30/3=10。

  • 以操作系统用户omm登录GaussDB 200集群任一主机。执行source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile命令启动环境变量。
  • 设置单CN最大并发量。

    gs_guc reload -Z coordinator -N all -I all -c "max_active_statements=10"

    max_active_statements表示CN上最大作业并发数量。

    • 当该值为0或者-1时,将不会执行全局的并发数管理。
    • 当值为正数时表示允许的最大并发数量。

局部并发控制

局部并发控制的操作步骤请参考静态负载管理和动态负载管理章节中的操作步骤。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论