
# 清理无历史版本的删除标记以提高性能
#### 使用场景
开启多版本控制后，在对象列表中，未打开"历史版本"开关，单击单个对象右侧操作列的"更多\>删除"或选中多个对象并单击上方的"删除"（未指定版本ID删除对象），该删除对象操作并未完全删除对象，OBS将插入一个删除标记，当前版本对象会成为历史版本对象，删除标记成为当前版本，打开对象列表上方的"历史版本"开关即可看到。
图1删除标记和历史版本对象   
![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002611993057.png "点击放大")
带删除标记的版本不占用存储空间，因此不收取任何费用，但如果所有的历史版本对象已被删除，仅保留带删除标记的版本没有任何意义且会影响OBS桶性能，因此建议您及时清理无历史版本的删除标记。
#### 约束限制
如果配置生命周期规则时，**使用标签作为筛选条件** 或**当前版本配置了过期删除**，那么无法通过配置生命周期规则来自动清理无历史版本的删除标记。
#### 前提条件
- 多版本控制的状态为"已开启"或"暂停"。
- 所有历史版本对象均已被彻底删除，仅剩余1个删除标记。 ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002639865886.png "点击放大")
  
 
#### 手动删除无历史版本的删除标记
OBS支持通过[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)、API、SDK方式手动删除无历史版本的删除标记，不支持通过OBS Browser+、obsutil方式手动删除无历史版本的删除标记。
#### 使用OBS控制台
1. 在OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)左侧导航栏选择"桶列表"。
2. 在桶列表中，单击待操作的桶，进入"对象"页面。
3. 打开对象列表上方的"历史版本"开关。
4. 在"最后修改时间"列找到带"删除标记"的对象，单击其操作列的"彻底删除"。 
   也可以选中所有带"删除标记"的对象，单击对象列表上方的"彻底删除"来批量删除带"删除标记"的对象。
   
   
5. 在"彻底删除对象"弹窗，单击"确定"。
 
#### 使用API
[删除对象](https://support.huaweicloud.com/api-obs/obs_04_0085.html)
[批量删除对象](https://support.huaweicloud.com/api-obs/obs_04_0086.html)
#### 使用SDK
![](https://support.huaweicloud.com/usermanual-obs/public_sys-resources/note_3.0-zh-cn.png)
使用BrowserJS SDK与OBS服务交互时，必须将AK/SK暴露到前端，这样会存在安全问题。为避免该问题出现，可让后端生成临时签名URL给前端，前端再与OBS交互。相关操作请参见[如何在不暴露AKSK的条件下实现与OBS交互](https://support.huaweicloud.com/sdk-browserjs-devg-obs/obs_24_1717.html)。
| [Java](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_0804.html) | [Python](https://support.huaweicloud.com/sdk-python-devg-obs/obs_22_0918.html) | [C](https://support.huaweicloud.com/sdk-c-devg-obs/obs_20_0604.html) | [Go](https://support.huaweicloud.com/sdk-go-devg-obs/obs_33_0506.html) | [BrowserJS](https://support.huaweicloud.com/sdk-browserjs-devg-obs/obs_24_0704.html)  | [.NET](https://support.huaweicloud.com/sdk-dotnet-devg-obs/obs_25_0604.html) | [Android](https://support.huaweicloud.com/sdk-android-devg-obs/obs_26_0604.html) | [iOS](https://support.huaweicloud.com/sdk-ios-devg-obs/obs_27_0604.html) | [PHP](https://support.huaweicloud.com/sdk-php-devg-obs/obs_28_0604.html) | [Node.js](https://support.huaweicloud.com/sdk-nodejs-devg-obs/obs_29_0606.html) |
|---|---|---|---|---|---|---|---|---|---|
   
#### 通过生命周期规则清理无历史版本的删除标记
OBS支持通过[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)、API、SDK方式配置生命周期规则来自动清理无历史版本的删除标记，不支持通过OBS Browser+、obsutil方式配置生命周期规则来自动清理无历史版本的删除标记。
#### 使用OBS控制台
1. 在OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)左侧导航栏选择"桶列表"。
2. 在OBS管理控制台桶列表中，单击待操作的桶，进入"对象"页面。
3. 在左侧导航栏单击"数据管理 \> 生命周期规则"，进入"生命周期规则"界面。
4. 单击"创建"，系统弹出创建生命周期规则对话框。
5. 根据要求，配置以下参数。其他参数可根据需要设置，具体请参见[配置生命周期规则](https://support.huaweicloud.com/usermanual-obs/obs_41_0074.html#ZH-CN_TOPIC_0000001945139386)。
   
   ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002581553208.png "点击放大")
   表1"基本信息"参数说明 
   | 参数名称         | 示例            | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   |:---|:---|:---|
   | 状态           | **已开启**       | 是否启用生命周期规则。 - 开关开启，启用生命周期规则，受规则影响的对象将在指定天数后转换存储类别/自动删除/删除碎片/清理无历史版本的删除标记。  - 开关关闭，表示不启用生命周期规则。                                                                                                                                                                                                                          |
   | 规则名称         | **rule-925d** | 生命周期规则的名称。 命名规则如下： - 长度不超过255个字符。  - 只能由大写或小写的英文字母、数字、英文句号（.）、下划线（_）和连字符（-）组成。                                                                                                                                                              |
   | 范围           | **所有对象**      | 使用对象名称作为筛选条件，明确生命周期规则适用的对象范围。 - 对象前缀：配置对象前缀后，桶内满足该前缀的对象将受生命周期规则管理。  - 所有对象：桶内所有对象都将受生命周期规则管理。   **配置范围时，需要注意多条生命周期规则之间重叠的情况，重叠的规则必须要满足[重叠规则约束](https://support.huaweicloud.com/zh-cn/usermanual-obs/obs_41_0072.html#ZH-CN_TOPIC_0000001972178513__zh-cn_topic_0000001870567984_section139151017133111)，否则将会因规则冲突导致生命周期规则配置失败。** |
   | 当前版本         | **未开启**       | 是否启用"当前版本"的配置。 - 开关打开，表示启用配置，**最多配置4条记录**。  - 开关关闭，表示不启用配置。                                                                                                                                                                                                                                                                    |
   | 历史版本         | **未开启**       | 是否启用"历史版本"的配置。 - 开关打开，表示启用配置，**最多配置4条记录**。  - 开关关闭，表示不启用配置。                                                                                                                                                                                                                                                                   |
   | 清理无历史版本的删除标记 | **已开启**       | 无历史版本的删除标记是指对象的所有历史版本被删除后，对象仅剩余的1个删除标记。此操作将清理该删除标记，清理后有利于提高性能。 **状态**：是否启用"清理无历史版本的删除标记"。开关打开，表示启用；开关关闭，表示不启用。 **如果使用标签作为筛选条件或当前版本配置了过期删除，则不支持配置清理无历史版本的删除标记。**                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
      
   
   
6. 勾选"我已确认以上生命周期规则设置，以及可能会产生的费用。"。
7. 单击"确定"，完成生命周期规则配置。
 
#### 使用OBS API
[设置桶的生命周期](https://support.huaweicloud.com/api-obs/obs_04_0034.html)
#### 使用OBS SDK
| [Java](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_1102.html) | [Python](https://support.huaweicloud.com/sdk-python-devg-obs/obs_22_0821.html) | [C](https://support.huaweicloud.com/sdk-c-devg-obs/obs_20_0902.html) | [Go](https://support.huaweicloud.com/sdk-go-devg-obs/obs_33_0423.html) | [BrowserJS](https://support.huaweicloud.com/sdk-browserjs-devg-obs/obs_24_1002.html) | [.NET](https://support.huaweicloud.com/sdk-dotnet-devg-obs/obs_25_0902.html) | [Android](https://support.huaweicloud.com/sdk-android-devg-obs/obs_26_0902.html) | [iOS](https://support.huaweicloud.com/sdk-ios-devg-obs/obs_27_0902.html) | [PHP](https://support.huaweicloud.com/sdk-php-devg-obs/obs_28_0902.html) | [Node.js](https://support.huaweicloud.com/sdk-nodejs-devg-obs/obs_29_0902.html) |
|---|---|---|---|---|---|---|---|---|---|
   
