ITPub博客

首页 > 数据库 > > 负载管理(队列控制)-动态负载管理

负载管理(队列控制)-动态负载管理

作者:GaussDB_数据库 时间:2020-01-14 15:54:03 0 删除 编辑

背景信息

动态负载管理指数据库内部根据用户负载情况,自动对复杂查询进行队列控制,不再需要手动设置参数,做到系统参数免调优。

前提条件

动态负载管理功能不能在加速集群场景下使用,需要设置enable_acceleration_cluster_wlm的取值为off。

gs_guc set -Z coordinator -Z datanode -N all -I all -c "enable_acceleration_cluster_wlm=off"
操作步骤
  1. 以操作系统用户omm登录GaussDB 200集群任一主机。执行source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile命令启动环境变量。
  2. 打开开关enable_dynamic_workload为on。
    gs_guc set -Z coordinator -Z datanode -N all -I all -c "enable_dynamic_workload=on"
    打开开关enable_memory_limit为on。
  3. gs_guc set -Z coordinator -Z datanode  -N all -I all -c "enable_memory_limit=on"
    使用业务用户执行复杂作业。
  4.  说明:
    • 集群有一个CN会作为中心协调节点(CCN),用于收集和调度作业执行,该节点可以通过gs_om -t status --detail查询到,Central Coordinator State会显示其状态。当CCN不存在时,作业不再受动态负载管理控制。
    • 单CN上依然受到max_active_statements参数限制,但不是强制限制,实际运行的作业可能稍微大于该数值。
    • 简单查询作业(估算值<32MB)、非DML(即非INSERT、UPDATE、DELETE和SELECT)语句,不走自适应负载,需要通过max_active_statements来进行单CN的上限控制。
    • 默认work_mem数值为64MB,在自适应负载特性下,该数值不能变大,否则会引起内存不受控(例如未做Analyze的语句)。
    • 以下场景或语句由于内存使用特殊性和不确定性,可能导致大并发场景内存不受控,如果遇到需要降低并发数。
      • 单条元组占用内存过大的场景,例如,基表包含超过MB级别的宽列。
      • 完全下推语句的查询。
      • 需要在CN上耗费大量内存的语句,例如,不能下推的语句,withhold cursor场景。
      • 由于计划生成不当导致hashjoin算子建立的hash表重复值过多,占用大量内存。
      • 包含UDF的场景,且UDF中使用大量内存的场景。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3130379/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-01-06

  • 博文量
    2907
  • 访问量
    19319