# 管理运维计划
智能运维功能目前仅支持Vacuum运维任务，VACUUM回收表或B-Tree索引中已删除的行所占据的存储空间。在一般的数据库操作中，被DELETE的行并未从所属的表中物理删除，在完成VACUUM之前它们仍然存在。因此有必要周期地运行VACUUM，特别是在经常更新的表上。
#### 约束与限制
- 该特性仅8.1.3及以上版本支持。其中小CU阈值、小CU占比仅9.1.0.200及以上集群版本支持，如果版本不符合将不展示该字段。
- Vacuum Full运维任务完成后系统会自动进行Analyze操作，用户无需手动执行。
- 运维任务公共配置模块仅8.1.3及以上集群版本支持，历史版本需要联系技术支持人员升级使用。

- 对于自动Vacuum运维任务，用户配置时间窗时，应避开业务高峰期。否则自动Vacuum将有可能与用户业务产生死锁冲突。
- Vacuum Full运维任务对于用户表并发度最高为24，最低为0；对于系统表并发度最高为1，最低为0。并发度不支持用户自定义，但可根据系统io_util自动调节：
  - io_util将0%\~60%划分为两个区间段：
    - 0%\~30%区间段，io_util每减少15%，并发度增加2。
    
    - 30%\~60%区间段，io_util值每减少15%，并发度增加1。
     
  
  - 60%\~70%并发度不变。
  
  - 70%以上并发度减1，如果仍维持70%以上IO，则并发度持续减到0。
   
- 调度器会在时间窗内扫描列存小CU膨胀情况，当检测到存在大量平均记录数小于指定阈值（如1000）的小CU时，可能表明存在CU碎片化或空间浪费，调度器会优先处理这类表。列存CU膨胀检测条件不受膨胀率、可回收空间限制。
- 优先级表最多支持添加100个任务表。
- 调度器自动Vacuum功能依赖于统计信息，若统计信息不准确，可能会影响调度器自动Vacuum执行顺序以及统计结果。
- 调度器不支持带有空格和单引号的表，包括数据库名、schema名、表名。如果vacuum在扫描过程中遇到带有单引号或空格的表，将自动跳过。对于优先级表中有空格或单引号的表，也自动跳过。
 
#### 运维任务公共配置
该配置应用于每个用户表VacuumFull运维任务中，其中正在运行中的任务不受影响，周期性任务新配置在下次任务执行时生效。
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左侧导航栏中，选择**"集群 \> 集群列表"**，在集群列表中单击指定集群名称。
3. 进入**"集群详情"** 页面，切换至**"智能运维"**页签。
4. 在页面上方**"运维任务公共配置"** 模块，修改下列公共配置值。
   
   - **用户表VacuumFull运维任务最大并发数**：配置应用于每个用户表VacuumFull运维任务。配置范围为1\~24，用户可根据剩余磁盘空间和IO负载，合理设置最大并发数，建议配置值为5。其中正在运行中的任务不影响，如果是周期性任务，新设置的并发数在下次运维任务运行时生效。
   
   - **小CU阈值**：根据小CU阈值来判定是不是小CU表，小于阈值为小CU表，小于等于该值为触发Vacuum的条件，越大触发越敏感，默认推荐值为1000。仅9.1.0.200及以上集群版本支持，如果版本不符合将不展示该字段。
   
   - **小CU占比**：小CU表占全部CU比率，大于等于该值为触发Vacuum的条件，越小触发越敏感，默认推荐值为50%。仅9.1.0.200及以上集群版本支持，如果版本不符合将不展示该字段。
   
   
   
   
5. 确认无误后，单击**"保存"**完成配置。
 
 #### 添加运维计划
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左侧导航栏中，选择**"集群 \> 集群列表"**，在集群列表中单击指定集群名称。
3. 进入**"集群详情"** 页面，切换至**"智能运维"**页签。
4. 在运维详情部分切换至运维计划模块，单击**"添加运维任务"**。
5. 在弹出的添加运维任务边栏，进行运维任务的基础配置。 
   表1运维任务基础配置项 
   | 配置项名称              | 配置项描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | 样例                                  |
   |:---|:---|:---|
   | 运维任务                | Vacuum（目前仅支持Vacuum运维任务）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Vacuum                             |
   | 任务简述                | 智能任务的简要描述。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | 该运维任务可帮助用户定期调用系统Vacuum命令，以实现空间回收。 |
   | 备注                | 备注信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | -                                  |
   | 调度模式   | 支持以下三种调度模式： - **自动**：智能运维将在指定时间窗内扫描数据库，依据用户业务负载、用户表可回收空间，自动下发表级Vacuum任务。  - **指定目标**：用户可选择指定Vacuum目标，智能运维将在指定时间窗内，自动下发表级Vacuum任务。  - **优先级模式**：用户可配置Vacuum目标，若时间窗剩余，智能运维将自动扫描其他可Vacuum的表，并下发表级Vacuum任务。   说明： 建议使用指定目标方式进行Vacuum和VacuumFull，同时不建议对列存宽表进行VacuumFull，以防止内存膨胀。                                                                                                                                                                                                                                                                                                                   | 指定目标                               |
   | 自动Vacuum目标         | 支持**系统表Vacuum** 或**用户表VacuumFull**。 - 对于系统表Vacuum，会持有系统表四级锁（share update exclusive锁），不会阻塞用户业务，仅会阻塞系统表DDL进程。  - 对于用户表Vacuum Full，会持有系统表的八级锁（access exclusive锁），期间所有访问会被阻塞，并等待Vacuum Full结束，建议用户合理安排调度时间，在业务负载低峰期执行Vacuum Full操作，避免锁表影响业务。  - 9.1.0.x集群版本新增Vacuum Full让锁机制，默认打开，运维Vacuum Full任务会自动为业务让锁，保证不堵塞业务，可通过**"forbid_interrupt_vacuum_full_appnames"**参数控制Vacuum Full语句给其它语句让锁的范围，当下发语句的应用名包含在参数指定的列表中时，Vacuum Full不会给该语句让锁。  - Vacuum Full操作相当于开辟一块和表数据大小相同的空间（表真实数据大小约为表总大小\* (1 -- 脏页率)），**因此表空间会先增后降** **，请提前计算好Vacuum Full所需要的空间再行处理。**   | 用户表VacuumFull                       |
   | Vacuum目标           | 用户可配置Vacuum目标，其中一行对应一张表，每张表以数据库名、模式名、表名表示，以空格进行分割。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | database1 schema1 table1           |
   | 高级配置                 | 选择**"** **自定义"** 时，可以设置Vacuum膨胀率和目标表可回收空间高级配置参数（满足其中一个条件即触发自动Vacuum），如果选择**"默认配置** **"**，将使用它们的默认值。 说明： Vacuum膨胀率：在数据库中频繁执行UPDATE、DELETE等操作后被删除或更新的行不会从表中物理删除，仅从数据库中被逻辑删除，在完成VACUUM之前这些过期数据仍然存储在磁盘中，从而导致表膨胀。当膨胀率达到运维任务中用户设置的百分比后，就会自动触发Vacuum。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 默认配置（Vacuum膨胀率80%；目标表可回收空间100GB）    |
      
   
   
6. 单击**"下一步：定时配置"** ，进行运维任务的**"定时配置"** 。
   
   选择运维类型：
   - **单次型任务：**需要设置起止时间，智能运维将在设置的时间段内运行运维任务。
   
   - **周期型任务：**需要配置时间窗，时间窗配置提供每日、每周、每月三种类型供用户选择。智能运维将自动分析用户注册的时间段，在每个时间段内运行运维任务。
   
   
   
   
7. 单击**"下一步：配置确认"** ，确认无误后单击**"配置确认"** 提交。请耐心等待一段时间，在**"运维计划** **"**列表中查看新添加的运维计划是否已显示，以确认添加成功。
 
#### 运维计划操作
1. [登录DWS管理控制台](https://console.huaweicloud.com/dws)。
2. 在左侧导航栏中，选择**"集群 \> 集群列表"**，在集群列表中单击指定集群名称。
3. 进入**"集群详情"** 页面，切换至**"智能运维"**页签。
4. 在运维详情部分切换至运维计划模块，可对指定运维计划进行以下操作。 
   表2运维计划操作 
   | 操作入口  | 描述                                                                                                                                         |
   |:---|:---|
   | 修改   | 在指定运维任务所在行操作列单击**"修改"** ，弹出修改运维任务边栏，修改运维任务功能与添加运维任务功能保持一致，详情请参见[添加运维计划]（修改配置下次运行时生效）。 |
   | 暂停    | 单击列表上方的**"暂停"**，暂停指定的运维计划。                                                                                                               |
   | 恢复   | 单击列表上方的**"恢复"**，恢复暂停的运维计划。                                                                                                                |
   | 查看 | 在指定运维任务所在行操作列单击**"详情"**，弹出运维任务详情边栏，用户可查看确认。                                                                                                |
   | 删除     | 单击列表上方的**"删除"**，删除指定的运维计划。                                                                                                                 |
      
   
   
5. 确认无误后单击**"确定"**提交。
 
