玩转GaussDB(DWS)资源负载管理系列 -- 各种配置参数和语句状态眼花缭乱,配置参数全解,看这一篇就清楚了

网友投稿 1234 2022-05-28

GaussDB(DWS)的负载管理具有众多参数和视图,有时候光弄清楚这些参数和视图的功能和字段就很费劲了,本文用来介绍下资源管理常用的所有的参数和视图说明。以便更好的了解和使用DWS的负载管理功能。

参数说明

通用参数

- use_workload_manager:资源负载管理总开关,关闭和打开决定是否走资源管理功能。 - max_active_statements:单个cn所能接受的最大并发数量,即单cn下发的语句,活跃数量最大值,超过该值会进入全局排队状态。

玩转GaussDB(DWS)资源负载管理系列 -- 各种配置参数和语句状态眼花缭乱,配置参数全解,看这一篇就清楚了

静态负载管理(资源池)

静态负载管理相当于将内存/并发,做资源池或者说是队列上的划分,在cn上进行资源判断,根据语句的cost决定该语句是简单还是复杂,简单作业进行并发管控,复杂作业进行用户对应资源池的资源管控。

术语及参数

- resource pool : 资源池,可以将多个用户关联到同一个资源池中,处于同一个资源池的用户共享该资源池的资源,包括并发数量。 - parctl_min_cost : 作为静态负载管理下,界定简单作业和复杂作业的阈值,大于该值为复杂作业,小于该值为简单作业。 - active_statements:资源池级别复杂作业并发数,即大于上述parctl_min_cost参数的语句最多能并行运行多少个。 - max_dop:资源池级别简单作业并发数,即小于上述parctl_min_cost参数的语句最多能并行运行多少个。

动态负载管理(ccn总体仲裁管理)

- enable_dynamic_workload: 动态负载管理开关,打开后自动使用内存自适应功能,会由ccn仲裁全局内存情况决定语句是否下发,如果内存不足以支撑sql语句执行,就会进入ccn的队列。 修改该参数需要重启集群生效。

磁盘管控参数

- enable_perm_space : 磁盘空间管控总开关,关闭该参数也可以关闭7天一次的总体统计线程。 - select gs_wlm_readjust_user_space(0); 该函数在用户磁盘空间统计不准确时候可以主动调用作为矫正。 由于用户的磁盘空间使用是维护在内存中的一个数据结构,实际物理文件变动的场景特别多,例如有文件直接被异常rm掉,数据库内核是不会统计此类情况的,因此可能会出现内存与实际有差异的情况,此时可以通过该函数进行一个矫正操作。 规格:8.0以下,该函数只能重新矫正连接的库,执行效率较低;8.0及以上将该函数进行了性能优化。并且会直接矫正全部库的磁盘使用情况。

资源监控参数

TOPSQL参数

- enable_resource_track :设置是否开启资源实时监控功能。此参数需在CN和DN同时应用。 - 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同时应用。 - resource_track_level :设置当前会话的资源监控的等级,建议使用query级别。 - resource_track_cost :设置对当前会话的语句进行资源监控的最小执行代价。该参数只有当参数enable_resource_track为on时才有效。 - resource_track_duration:设置资源监控实时视图(实时topsql)中记录的语句执行结束后进行历史信息转存的最小执行时间。当执行完成的作业,其执行时间不小于此参数值时,作业信息会从实时视图(以statistics为后缀的视图)转存到相应的历史视图(以history为后缀的视图)中。该参数只有当enable_resource_track为on时才有效。 - topsql_retention_time:gs_wlm_session_invo的老化时间,配置以后可以保留配置的时间的数据,其余会每10min发起一次delete进行清理。

内存相关参数

- disable_memory_protect : 禁止内存保护功能。当系统内存不足时如果需要查询系统视图,可以先将此参数置为on,禁止内存保护功能,保证视图可以正常查询。该参数只适用于在系统内存不足时进行系统诊断和调试,正常运行时请保持该参数配置为off。 该参数定位问题时很有用处。防止memory temprilary unaviliavle。 - max_process_memory : 进程最大使用内存,其中,以此值去除掉行列存扫描等配置的值之后,剩余量作为max_dynamic_memory用于用户SQL计算等行为(租户的内存分配也是基于max_dynamic_memory)。

视图说明

- pg_stat_activity/pgxc_stat_activity: 说明所有连到cn上的语句或者说连接的状态,重要字段解释如下: - state:当前语句的状态,几种state解释如下: - idle – 空闲连接 - active – 活跃连接,有语句执行或者排队 - idle in transaction – 事务未提交 - enqueue:当前语句的排队状态,几个排队状态解释如下 - waiting in global queue :表示语句在全局排队中。(活跃语句超过max_active_statements) - waiting in respool queue :表示语句在资源池排队中。(达到上述静态负载中复杂作业或者简单作业并发上限) - waiting in ccn queue:表示作业在CCN排队中。动态自适应功能判断内存不足以执行新sql。

pg_session_wlmstat:

各种作业正在运行时的负载管理相关信息,重要字段解释如下:

- priority : 语句所在的cgroup优先级 - attribute : 语句属性,用于判断语句是简单或者复杂作业等,几种类型介绍如下: - Ordinary : 语句刚发送到数据库,默认为此类型。 - Simple :简单语句。(会受资源池级别并发控制,全局并发控制) - Complicated : 复杂语句。(受资源池级别资源控制,全局并发控制) - Internal : 数据库内部语句。(不受管控,耗费资源很少) - enqueue : 语句详细排队状态,重要字段解释如下: - Global::在全局队列中排队。 - Respool:在资源池队列中排队。 - CentralQueue:在中心协调节点(CCN)中排队。 - Transaction:语句处于一个事务块中。 - StoredProc : 语句处于一个存储过程中。 - None:未在排队。 - Forced None : 事务块语句或存储过程语句由于超出设定的等待时间而强制执行。

pg_thread_wait_status:

通过PG_THREAD_WAIT_STATUS视图可以检测当前实例中工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况。

PS:此视图中的lwtid字段可以关联上述pg_session_wlmstat中的processid以定位到一个语句的线程处于什么状态。可是使用query_id关联到pg_thread_wait_status.

SQL监控视图

历史topsql:gs/pgxc_wlm_session_info

实时topsql:gs_wlm_session_statistics

用户资源监控功能

pg_total_user_resource_info

GS_WLM_USER_RESOURCE_HISTORY

实例级别资源监控功能

监控CN、DN实例资源使用状态(包括内存,CPU,磁盘IO,进程物理IO和进程逻辑IO)的系统表

pgxc_get_wlm_current_instance_info(‘ALL’);

GS_WLM_INSTANCE_HISTORY

内存相关视图

pv_total_memory_detail/pgxc_total_memory_detail:

pv_session_memory_detail:

资源池上的异常规则查询

通过gs_respool_exception_info(‘rp_name’)查看异常规则;

通过 gs_cgroup -p,也可以查看对应控制组上的异常规则;

EI企业智能 Gauss AP 数据仓库服务 GaussDB(DWS) 数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【云小课】EI第28课 ModelArts Pro 视觉套件 零代码构建视觉AI应用
下一篇:如何使用 Nagios 3.0 监控远程 Linux 主机
相关文章