DWS_2000000023 DWS集群中存在持有锁过长的vacuum full操作
告警解释
数据表执行vacuum full操作会持有八级锁,如果对某张表执行vacuum full操作且持有锁周期超过20分钟(可配置)时,则上报集群中存在持有锁过长的vacuum full操作的重要告警;当vacuum full结束后,则消除该重要告警。
告警属性
| 告警ID | 告警归属 | 告警级别 | 告警类型 | 业务类型 | 是否可自动清除 |
|---|---|---|---|---|---|
| DWS_2000000023 | 租户面 | 重要 | 操作告警 | 数据仓库服务 | 是 |
告警参数
| 类别 | 参数名称 | 参数含义 |
|---|---|---|
| 定位信息 | 名称 | DWS集群中存在持有表锁过长的vacuum full操作。 |
| 类型 | 操作告警。 | |
| 发生时间 | 告警发生时间。 | |
| 附加信息 | 集群ID | 集群resourceId、domain_id等详细信息。 |
告警指标
调用获取指定指标相关采集数据 - ListMetricsDataAPI接口获取该告警指标,其中接口中的指标名称为SessionStats。
- 请求示例:
GET https://{Endpoint}/v1/{project_id}/clusters/{cluster_id}/dms/metrics/SessionStats?offset=0&limit=1&from=1786782138946&to=1786785551018&order_by=ctime&sort_by=desc - 响应示例:
告警指标为响应结果中的lock_mode不为"-"、lock_relname不为"-"和stmt_type为VACUUM,其中lock_mode表示锁模式;lock_relname表示锁等待的资源;stmt_type表示语句类型。
{ "code": 0, "msg": "OK", "data": [ { "virtual_cluster_id": 81882, "waiting": false, "query_id": "0", "backend_start": 1786782298, "user_name": "Ruby", "pid": "140504051969432", "resource_pool": "default_pool", "client_port": "20482", "application_name": "wlm", "elapsed_time": 11, "ctime": 1786782308000, "curr_xact_start": -1, "client_address": "172.16.114.248", "state": "idle", "lock_type": "-", "lock_relname": "-", "stmt_type": "COMMIT PREPARED", "query_elapsed_time": -1, "control_group": "", "query": "-", "query_start": 1786782298, "db_name": "gaussdb", "client_hostname": "", "system_query": true, "lock_mode": "-", "inst_name": "cn_5001", "state_change": 1786782298 } ], "count": 743 }
对系统的影响
会使其他操作对此表持有锁失败,导致业务无法执行。
可能原因
集群中存在持有锁过长的vacuum full操作。
处理步骤
- 进入上报告警集群的“监控面板”中,在左侧导航栏选择“监控 > 实时查询 > 实时会话”页签,对会话列表进行查询,查询条件like,查询关键字“vacuum full”。

- 查询是否有等待vacuum full表锁的存在,在实时会话页面,根据“锁定对象”查询和vacuum full相同操作的锁对象。

- 确认是否需要处理vacuum full操作。
- 确定vacuum full操作是否为当前系统行为,并确认是否影响系统功能,如果不影响其他业务查询,则等待表vacuum full结束后告警自动消除。
- 如果vacuum full操作影响正常业务执行,则可以通过“实时查询”页面对相关会话进行查杀,可以选择其他时间执行vacuum full操作。
告警清除
当表vacuum full结束后,自动消除告警。