玩转GaussDB(DWS)资源负载管理系列 -- 各种配置参数和语句状态眼花缭乱,配置参数全解,看这一篇就清楚了
【摘要】 GaussDB(DWS)的负载管理具有众多参数和视图,有时候光弄清楚这些参数和视图的功能和字段就很费劲了,本文用来介绍下资源管理常用的所有的参数和视图说明。以便更好的了解和使用DWS的负载管理功能。 参数说明 通用参数use_workload_manager:资源负载管理总开关,关闭和打开决定是否走资源管理功能。max_active_statements:单个cn所能接受的最大并发数量,即...
GaussDB(DWS)的负载管理具有众多参数和视图,有时候光弄清楚这些参数和视图的功能和字段就很费劲了,本文用来介绍下资源管理常用的所有的参数和视图说明。以便更好的了解和使用DWS的负载管理功能。
参数说明
通用参数
- use_workload_manager:资源负载管理总开关,关闭和打开决定是否走资源管理功能。
- max_active_statements:单个cn所能接受的最大并发数量,即单cn下发的语句,活跃数量最大值,超过该值会进入全局排队状态。
静态负载管理(资源池)
静态负载管理相当于将内存/并发,做资源池或者说是队列上的划分,在cn上进行资源判断,根据语句的cost决定该语句是简单还是复杂,简单作业进行并发管控,复杂作业进行用户对应资源池的资源管控。
术语及参数
- resource pool : 资源池,可以将多个用户关联到同一个资源池中,处于同一个资源池的用户共享该资源池的资源,包括并发数量。
- parctl_min_cost : 作为静态负载管理下,界定简单作业和复杂作业的阈值,大于该值为复杂作业,小于该值为简单作业。
- active_statements:资源池级别复杂作业并发数,即大于上述parctl_min_cost参数的语句最多能并行运行多少个。
- max_dop:资源池级别简单作业并发数,即小于上述parctl_min_cost参数的语句最多能并行运行多少个。
动态负载管理(ccn总体仲裁管理)
- enable_dynamic_workload: 动态负载管理开关,打开后自动使用内存自适应功能,会由ccn仲裁全局内存情况决定语句是否下发,如果内存不足以支撑sql语句执行,就会进入ccn的队列。
修改该参数需要重启集群生效。
资源池配置查询
- pg_resource_pool:资源池信息视图,可以直接查看资源池上的配置参数,排队是否正常,可以根据活跃语句数量,和此视图中的信息进行对比。主要是如下字段:
-- respool_name:资源池名称。
-- mem_percent:资源池内存配置的百分比。
-- control_group:资源池对应的cgroup。
-- active_statements:资源池上最大的复杂作业并发数。
-- max_dop:资源池上简单作业最大并发数。
磁盘管控参数
- enable_perm_space : 磁盘空间管控总开关,关闭该参数也可以关闭7天一次的总体统计线程。
- select gs_wlm_readjust_user_space(0);
该函数在用户磁盘空间统计不准确时候可以主动调用作为矫正。
由于用户的磁盘空间使用是维护在内存中的一个数据结构,实际物理文件变动的场景特别多,例如有文件直接被异常rm掉,数据库内核是不会统计此类情况的,因此可能会出现内存与实际有差异的情况,此时可以通过该函数进行一个矫正操作。
规格:8.0以下,该函数只能重新矫正连接的库,执行效率较低;8.0及以上将该函数进行了性能优化。并且会直接矫正全部库的磁盘使用情况。
- 实际每个用户的空间上限配置情况,可以查看系统表pg_user/pg_roles,tempspacelimit/spillspacelimit/spacelimit查看。分别对应临时表、算子落盘、永久表空间大小。
资源监控参数
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,也可以查看对应控制组上的异常规则;
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)