

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 管理集合级文档压缩
<a name="doc-compression"></a>

Amazon DocumentDB 5.0 馆藏级文档压缩允许您通过压缩馆藏中的文档来降低存储和 IO 成本。您可以在集合层面启用文档压缩，并通过用压缩指标（例如已压缩文档的存储大小和压缩状态）衡量存储增益，根据需要查看压缩指标。亚马逊 DocumentDB 5.0 使用 LZ4 压缩算法来压缩文档。

Amazon DocumentDB 从版本 5.0 开始支持文档压缩。以下是集合级文档压缩功能：
+ **默认行为**-5.0 集群上新集合的默认压缩设置由群集参数确定`default_collection_compression`。默认情况下，该参数设置为“禁用”。
+ **压缩现有集合** - 可以使用 `collMod` 命令更改现有集合的压缩设置。
+ **更改压缩阈值** - 默认压缩阈值为 2 KB。可以使用 `createCollection` 命令为新集合指定此值，也可以使用 `collMod` 命令为现有集合更改此值。

**注意**  
Amazon DocumentDB 版本 3.6 和 4.0 不支持 Amazon DocumentDB 文档压缩。

**Topics**
+ [管理文档压缩](#manage-compression)
+ [监控文档压缩](#monitoring-compression)

## 管理文档压缩
<a name="manage-compression"></a>

### 在集合中启用文档压缩
<a name="enabling-collection-compression"></a>

使用`db.createCollection()`以下方法在 Amazon DocumentDB 5.0 上创建馆藏时启用文档压缩：

```
db.createCollection( sample_collection,{
    storageEngine : {
        documentDB: {
            compression:{enable: <true | false>}
        }
    }
})
```

### 在集群中启用文档压缩
<a name="enabling-cluster-compression"></a>

默认情况下，可以通过将集群参数 `default_collection_compression` 设置为“启用”，为所有新集合启用集群级的文档压缩。当此参数设置为“启用”时，集群上新创建的集合将默认启用压缩功能，压缩阈值为 2 KB。

### 压缩现有集合
<a name="compress-existing-collections"></a>

您还可以使用 `collMod` 操作并指定以下 `storageEngine` 配置来修改现有集合的压缩设置。请注意，使用此命令所做的更改仅适用于新 inserted/updated 文档，以前插入的文档的压缩效果不会改变。

```
db.runCommand({ 
    collMod: "orders", 
    storageEngine: { 
        documentDB: {compression: {enable: <true | false>} }
    }
})
```

### 设置压缩阈值
<a name="set-compression-threshold"></a>

在默认情况下，压缩集合的压缩阈值为 2032 字节。在创建一个启用压缩的新集合时，可以在 `createCollection` 命令中设置此阈值：

```
db.createCollection( sample_collection, {
    storageEngine : {
        documentDB: {
            compression: {
                enable: true,
                threshold: <128 - 8000>
            }
        }
    }
})
```

您还可以使用 `collMod` 操作并指定以下 `storageEngine` 配置来修改现有压缩集合的压缩阈值：

```
db.runCommand({ 
    collMod: "orders", 
    storageEngine: { 
        documentDB: {
            compression: {
                enable: true,
                threshold: <128 - 8000>
            }
        }
    }
})
```

请注意，压缩阈值只能设置为 128 和 8000 字节之间的值。此外，在指定压缩阈值时，`enable` 选项需要设置为“true”。

## 监控文档压缩
<a name="monitoring-compression"></a>

您可以检查某集合是否已压缩如下计算其压缩率。

通过运行来自 mongo Shell 的 `db.printCollectionStats()` 或 `db.collection.stats()` 命令查看压缩统计量。输出向您显示原始大小和压缩后的大小，您可以比较这些大小来分析来自文档压缩的存储增益。在此示例中，集合“sample\$1collection”的统计量显示如下：下面使用 1024\$11024 的缩放因子来输出 `size` 和 `storageSize` 值，单位为 MB。

```
db.sample_collection.stats(1024*1024)
```

以下是上述命令的输出示例：

```
{
    "ns" : "test.sample_collection",
    "count" : 1000000,
    "size" : 3906.3,
    "avgObjSize" : 4096,
    "storageSize" : 1953.1, 
    compression:{"enabled" : true,"threshold" : 2032},
    ...
}
```
+ **大小** -文档集合原始大小。
+ **avgObjSize**-压缩前的平均文档大小四舍五入到小数点后第一位。计量单位是字节。
+ **storageSize** - 压缩后集合的存储空间大小。计量单位是字节。
+ **启用** - 指示压缩是启用还是禁用。

要计算实际压缩率，请将集合大小除以存储空间大小（大小/storageSize）。对于以上示例，计算结果为 3906.3/1953.1，这转换成 2:1 压缩率。