负载管理
未对数据库资源做控制时,容易出现并发任务抢占资源导致操作系统过载甚至最终崩溃。操作系统过载时,其响应用户任务的速度会变慢甚至无响应;操作系统崩溃时,整个系统将无法对用户提供任何服务。GaussDB(DWS)的负载管理功能能够基于可用资源的多少均衡数据库的负载,以避免数据库系统过载。
use_workload_manager
参数说明:是否开启资源管理功能。此参数需在CN和DN同时应用。
参数类型:SIGHUP
取值范围:布尔型
- on表示打开资源管理。
- off表示关闭资源管理。
- 当使用GUC参数设置来修改参数值时,新参数值只能对更改操作执行后启动的线程生效。此外,对于后台线程以及线程复用执行的新作业,该参数值的改动不会生效。如果希望这类线程即时识别参数变化,可以使用kill session或重启节点的方式来实现。
- use_workload_manager参数由off变为on状态后,资源管理视图变为可用,并且可以查询off状态下统计的存储资源使用情况。若存在些许误差的情况下,需要矫正用户使用的存储资源,可数据库中执行如下命令,在执行该命令的过程中,如果对表中插入数据,可能会出现统计不够准确的情况:
1
select gs_wlm_readjust_user_space(0);
默认值:on
enable_control_group
参数说明:是否开启Cgroups功能。此参数需在CN和DN同时应用。
参数类型:SIGHUP
取值范围:布尔型
- on表示打开Cgroups管理。
- off表示关闭Cgroups管理。
默认值:on
当使用GUC参数设置来修改参数值时,新参数值只能对更改操作执行后启动的线程生效。此外,对于后台线程以及线程复用执行的新作业,该值的改动不会生效。如果希望这类线程即时识别参数变化,可以使用kill session或重启节点的方式来实现。
enable_backend_control
参数说明:是否控制数据库常驻线程到DefaultBackend控制组。此参数需在CN和DN同时应用。
参数类型:POSTMASTER
取值范围:布尔型
- on表示控制常驻线程到DefaultBackend控制组。
- off表示不控制常驻线程到DefaultBackend控制组。
默认值:on
enable_vacuum_control
参数说明:是否控制数据库常驻线程autoVacuumWorker到Vacuum控制组。此参数需在CN和DN同时应用。
参数类型:POSTMASTER
取值范围:布尔型
- on表示控制数据库常驻线程autoVacuumWorker到Vacuum控制组。
- off表示不控制数据库常驻线程autoVacuumWorker到Vacuum控制组。
默认值:on
enable_perm_space
参数说明:是否开启perm space功能。此参数需在CN和DN同时应用。
参数类型:POSTMASTER
取值范围:布尔型
- on表示打开perm space管理。
- off表示关闭perm space管理。
默认值:on
enable_verify_active_statements
参数说明:在静态自适应负载场景下,是否开启后台校准功能。此参数需在CN上应用。
参数类型:SIGHUP
取值范围:布尔型
- on表示打开后台校准功能。
- off表示关闭后台校准功能。
默认值:on
max_active_statements
参数说明:设置全局的最大并发数量。此参数只应用到CN,且针对一个CN上的执行作业。
数据库管理员需根据系统资源(如CPU资源、IO资源和内存资源)情况,调整此数值大小,使得系统支持最大限度的并发作业,且防止并发执行作业过多,引起系统崩溃。
参数类型:SIGHUP
取值范围:整型,-1 ~ INT_MAX。设置为-1和0表示对最大并发数不做限制。
默认值:60
parctl_min_cost
参数说明:设置语句受到资源池并发控制的最小执行代价。
参数类型:SIGHUP
取值范围:整型,-1 ~ INT_MAX
- 值为-1时或者执行语句的代价小于10时,作业受快车道管控。
- 值大于等于0时,如果执行语句的代价大于或等于10并且超过这个参数值就会受到资源池并发控制。
默认值:100000
cgroup_name
参数说明:设置当前使用的Cgroups的名字或者调整当前group下排队的优先级。
即如果先设置cgroup_name,再设置session_respool,那么session_respool关联的控制组起作用,如果再切换cgroup_name,那么新切换的cgroup_name起作用。
切换cgroup_name的过程中如果指定到Workload控制组级别,数据库不对级别进行验证。级别的范围只要在1-10范围内都可以。
参数类型:USERSET
建议尽量不要混合使用cgroup_name和session_respool。
取值范围:字符串
默认值:DefaultClass:Medium
DefaultClass:Medium表示DefaultClass下Timeshare控制组中的Medium控制组。
cpu_collect_timer
参数说明:设置语句执行时在DN上收集CPU时间的周期。
数据库管理员需根据系统资源(如CPU资源、IO资源和内存资源)情况,调整此数值大小,使得系统支持较合适的收集周期,太小会影响执行效率,太大会影响异常处理的精确度。
参数类型:SIGHUP
取值范围:整型,1 ~ INT_MAX, 单位为秒。
默认值:30
enable_cgroup_switch
参数说明:是否控制数据库执行语句时根据类型自动切换到TopWD组。
参数类型:USERSET
取值范围:布尔型
- on表示控制数据库执行语句时根据类型自动切换到TopWD组。
- off表示控制数据库执行语句时根据类型不自动切换到TopWD组。
默认值:off
memory_tracking_mode
参数说明:设置记录内存信息的模式。
参数类型:USERSET
取值范围:
- none,不启动内存统计功能。
- normal,仅做内存实时统计,不生成文件。
- executor,生成统计文件,包含执行层使用过的所有已分配内存的上下文信息。
- fullexec,生成文件包含执行层申请过的所有内存上下文信息。
默认值:none
memory_detail_tracking
参数说明:设置需要的线程内分配内存上下文的顺序号以及当前线程所在query的plannodeid。
参数类型:USERSET
取值范围:字符型
默认值:空
该参数不允许用户进行设置,建议保持默认值。
enable_resource_track
参数说明:设置是否开启资源实时监控功能。此参数需在CN和DN同时应用。
参数类型:SIGHUP
取值范围:布尔型
- on表示打开资源监控。
- off表示关闭资源监控。
默认值:on
enable_resource_record
参数说明:设置是否开启资源监控记录归档功能。开启时,对于history视图(GS_WLM_SESSION_HISTORY和GS_WLM_OPERATOR_HISTORY)中的记录,每隔3分钟会分别被归档到相应的info视图(GS_WLM_SESSION_INFO和GS_WLM_OPERATOR_INFO),归档后history视图中的记录会被清除。此参数需在CN和DN同时应用。
参数类型:SIGHUP
取值范围:布尔型
- on表示开启资源监控记录归档功能。
- off表示关闭资源监控记录归档功能。
默认值:off
enable_user_metric_persistent
参数说明:设置是否开启用户历史资源监控转存功能。开启时,对于PG_TOTAL_USER_RESOURCE_INFO视图中数据,会定期采样保存到GS_WLM_USER_RESOURCE_HISTORY系统表中。
参数类型:SIGHUP
取值范围:布尔型
- on表示开启用户历史资源监控转存功能。
- off表示关闭用户历史资源监控转存功能。
默认值:on
user_metric_retention_time
参数说明:设置用户历史资源监控数据的保存天数。该参数仅在enable_user_metric_persistent为on时有效。
参数类型:SIGHUP
取值范围:整型,0~3650,单位为天。
- 值等于0时,用户历史资源监控数据将永久保存。
- 值大于0时,用户历史资源监控数据将保存对应天数。
默认值:7
enable_instance_metric_persistent
参数说明:设置是否开启实例资源监控转存功能。开启时,对实例的监控数据会保存到GS_WLM_INSTANCE_HISTORY系统表中。
参数类型:SIGHUP
取值范围:布尔型
- on表示开启实例资源监控转存功能。
- off表示关闭实例资源监控转存功能。
默认值:on
instance_metric_retention_time
参数说明:设置实例历史资源监控数据的保存天数。该参数仅在enable_instance_metric_persistent为on时有效。
参数类型:SIGHUP
取值范围:整型,0~3650,单位为天。
- 值等于0时,实例历史资源监控数据将永久保存。
- 值大于0时,实例历史资源监控数据将保存对应设置天数。
默认值:7
resource_track_level
参数说明:设置当前会话的资源监控的等级。该参数只有当参数enable_resource_track为on时才有效。
参数类型:USERSET
取值范围:枚举型
- none,不开启资源监控功能。
- query,开启query级别资源监控功能,开启此功能会把SQL语句的计划信息(类似explain输出信息)记录到top SQL中。
- perf,开启perf级别资源监控功能,开启此功能会把包含实际执行时间和执行行数的计划信息(类似explain analyze输出信息)记录到top SQL中。
- operator,开启operator级别资源监控功能,开启此功能不仅会把包含实际执行时间和执行行数的信息记录到top SQL中,还会把算子级别执行信息刷新到top SQL中。
默认值:query
resource_track_cost
参数说明:设置对当前会话的语句进行资源监控的最小执行代价。该参数只有当参数enable_resource_track为on时才有效。
参数类型:USERSET
取值范围:整型,-1~INT_MAX
- 值为-1时,不进行资源监控。
- 值大于或等于0时,对执行代价超过该参数值的语句进行资源监控。
默认值:100000
resource_track_duration
参数说明:设置资源监控实时视图(参见表1)中记录的语句执行结束后进行历史信息转存的最小执行时间。当执行完成的作业,其执行时间不小于此参数值时,作业信息会从实时视图(以statistics为后缀的视图)转存到相应的历史视图(以history为后缀的视图)中。
参数类型:USERSET
取值范围:整型,0~INT_MAX,单位为秒。
默认值:1min
dynamic_memory_quota
参数说明:自适应负载场景下,设置内存控制的比重,即可以使用系统最大可用内存的比例。
参数类型:SIGHUP
取值范围:整型,1~100
默认值:80
disable_memory_protect
参数说明:禁止内存保护功能。当系统内存不足时如果需要查询系统视图,可以先将此参数置为on,禁止内存保护功能,保证视图可以正常查询。该参数只适用于在系统内存不足时进行系统诊断和调试,正常运行时请保持该参数配置为off。
参数类型:USERSET
取值范围:布尔型
- on表示禁止内存保护功能。
- off表示启动内存保护功能。
默认值:off
query_band
参数说明:用于标示当前会话的作业类型,由用户自定义。
参数类型:USERSET
取值范围:字符型
默认值:空
enable_bbox_dump
参数说明:是否开启黑匣子功能,在系统不配置core机制的时候仍可产生core文件。此功能需要在CN和DN同时应用。
参数类型:SIGHUP
取值范围:布尔型
- on表示打开黑匣子功能。
- off表示关闭黑匣子功能。
默认值:off
enable_dynamic_workload
参数说明:是否开启动态负载管理功能。
参数类型:POSTMASTER
取值范围:布尔型
- on表示打开动态负载管理功能。
- off表示关闭动态负载管理功能。
默认值:on
- 开启内存自适应后,收集统计信息后不再需要使用work_mem进行算子内存使用调优,由系统根据当前负载情况,为每个语句生成计划,并估算每个算子的内存使用量和整个语句的内存使用量。系统根据负载情况和整个语句内存使用量进行队列调度,所以多并发场景会出现语句排队的情况。
- 由于优化器行数估算不准现象的存在,会出现语句内存使用量低估或高估的情况。低估时,执行时内存会自动扩展。高估时,会导致系统内存利用不足,排队语句增多,可能导致性能非最优。此时需要识别语句估算内存远大于实际DN峰值内存的语句,通过设置query_max_mem进行调优,详见SQL调优关键参数调整。
bbox_dump_count
参数说明:在bbox_dump_path定义的路径下,允许存储的GaussDB(DWS)所产生core文件最大数。超过此数量,旧的core文件会被删除。此参数只有当enable_bbox_dump为on时才生效。
参数类型:USERSET
取值范围:整型,1~20
默认值:8
在并发产生core文件时,core文件的产生个数可能大于bbox_dump_count。
io_limits
参数说明:每秒触发IO的上限。
参数类型:USERSET
取值范围:整型,0~1073741823
默认值:0
io_priority
参数说明:IO利用率高达90%时,重消耗IO作业进行IO资源管控时关联的优先级等级。
参数类型:USERSET
取值范围:枚举型
- None:表示不受控。
- Low:表示限制iops为该作业原始触发数值的20%。
- Medium:表示限制iops为该作业原始触发数值的50%。
- High:表示限制iops为该作业原始触发数值的80%。
默认值:None
session_respool
参数说明:当前的session关联的resource pool。
参数类型:USERSET
即如果先设置cgroup_name,再设置session_respool,那么session_respool关联的控制组起作用,如果再切换cgroup_name,那么新切换的cgroup_name起作用。
切换cgroup_name的过程中如果指定到Workload控制组级别,数据库不对级别进行验证。级别的范围只要在1-10范围内都可以。
建议尽量不要混合使用cgroup_name和session_respool。
取值范围:字符串,通过create resource pool所设置的资源池。
默认值:invalid_pool
enable_transaction_parctl
参数说明:是否管控事务块语句和存储过程语句。
参数类型:USERSET
取值范围:布尔型
- on表示对事务块及存储过程语句进行管控。
- off表示对事务块及存储过程语句不进行管控。
默认值:on
session_statistics_memory
参数说明:设置实时查询视图的内存大小。
参数类型:SIGHUP
取值范围:整型,5MB~max_process_memory的50%。
默认值:5MB
session_history_memory
参数说明:设置历史查询视图的内存大小。
参数类型:SIGHUP
取值范围:整型,10MB~max_process_memory的50%。
默认值:100MB
topsql_retention_time
参数说明:设置历史TopSQL中gs_wlm_session_info和gs_wlm_operator_info表中数据的保存时间。
参数类型:SIGHUP
取值范围:整型,0~3650,单位为天。
- 值为0时,表示数据永久保存。
- 值大于0时,表示数据能够保存的对应天数。
默认值:0
设置此GUC参数启用数据保存功能前,请先清理gs_wlm_session_info和gs_wlm_operator_info表中的数据。
transaction_pending_time
参数说明:当enable_transaction_parctl为on时,事务块语句和存储过程语句排队的最大时间。
参数类型:USERSET
取值范围:整型,-1~INT_MAX,单位为秒。
- 值为-1或0:事务块语句和存储过程语句无超时判断,排队至资源满足可执行条件。
- 值大于0:事务块语句和存储过程语句排队超过所设数值的时间后,无视当前资源情况强制执行。
默认值:0
此参数仅对存储过程及事务块的内部语句有效,即PG_SESSION_WLMSTAT中enqueue字段显示为Transaction或StoredProc的语句才会生效。
wlm_sql_allow_list
参数说明:用于指定资源管理SQL白名单语句,SQL白名单语句不受资源管理监控。
参数类型:SIGHUP
取值范围:字符串
默认值:空
- wlm_sql_allow_list中可指定一条或多条SQL白名单语句,指定多条时,通过“;”进行分隔。
- 系统通过前置匹配判断SQL语句是否受监控,不区分大小写,例如:wlm_sql_allow_list='SELECT',则所有select语句均不受资源管理监控。
- 识别参数值白名单字符串头部的空格,例如:'SELECT'与' SELECT'的含义是不一致的,' SELECT'只过滤头部带空格的SELECT语句。
- 系统默认部分SQL语句为白名单语句,默认白名单语句不可修改;可以通过系统视图gs_wlm_sql_allow查询默认和已经通过GUC设置成功的SQL白名单语句。
- 通过wlm_sql_allow_list指定的SQL语句不可追加,只能通过覆盖的方式设置;若需追加SQL语句,需要先查出原先指定的GUC值,在原值后面加补上新增的语句,以“;”分隔后重新设置。