# DWS_2000000023 DWS集群中存在持有锁过长的vacuum full操作
#### 告警解释
数据表执行vacuum full操作会持有八级锁，如果对某张表执行vacuum full操作且持有锁周期超过20分钟（可配置）时，则上报集群中存在持有锁过长的vacuum full操作的重要告警；当vacuum full结束后，则消除该重要告警。
#### 告警属性
| **告警ID**       | 告警归属 | **告警级别** | 告警类型  | 业务类型      | 是否可自动清除 |
|:---|:---|:---|:---|:---|:---|
| DWS_2000000023 | 租户面  | 重要       | 操作告警 | 数据仓库服务 | 是       |
   
#### 告警参数
| 类别     | **参数名称** | **参数含义**                        |
|:---|:---|:---|
| 定位信息  | 名称    | DWS集群中存在持有表锁过长的vacuum full操作。 |
| 定位信息  | 类型       | 操作告警。                          |
| 定位信息  | 发生时间    | 告警发生时间。                        |
| 附加信息 | 集群ID    | 集群resourceId、domain_id等详细信息。   |
   
#### 告警指标
调用[获取指定指标相关采集数据 - ListMetricsData](https://support.huaweicloud.com/api-dws/ListMetricsData.html)API接口获取该告警指标，其中接口中的指标名称为**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操作。
#### 处理步骤
1. 进入上报告警集群的"监控面板"中，在左侧导航栏选择"监控 \> 实时查询 \> 实时会话"页签，对会话列表进行查询，查询条件like，查询关键字"vacuum full"。 
   ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002587225788.png "点击放大")
   
   
2. 查询是否有等待vacuum full表锁的存在，在实时会话页面，根据"锁定对象"查询和vacuum full相同操作的锁对象。
   
   ![](https://support.huaweicloud.com/mgtg-dws/figure/zh-cn_image_0000002617625567.png "点击放大")
   
   
3. 确认是否需要处理vacuum full操作。 
   1. 确定vacuum full操作是否为当前系统行为，并确认是否影响系统功能，如果不影响其他业务查询，则等待表vacuum full结束后告警自动消除。
   
   2. 如果vacuum full操作影响正常业务执行，则可以通过"实时查询"页面对相关会话进行查杀，可以选择其他时间执行vacuum full操作。
   
   
   
   
 
#### 告警清除
当表vacuum full结束后，自动消除告警。
