本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon DocumentDB 8.0 中管理字典型壓縮
Amazon DocumentDB 8.0 引進新的文件壓縮演算法 zstd,作為 LZ4 的改善替代方案。當您選取 Zstd 做為壓縮演算法,在 Amazon DocumentDB 8.0 集合上啟用字典壓縮時,會取樣集合中的文件,以建立自訂壓縮字典。新的和更新的文件會使用此字典和 zstd 演算法壓縮。這種方法通常會達到比標準壓縮方法更高的壓縮比率,特別是對於具有一致文件結構描述或重複欄位名稱的集合。
Lz4 是一種專為快速壓縮和解壓縮所設計的演算法。已知在 CPU 上很亮,同時實現明顯的壓縮。Zstd 是一種一般用途演算法,具有預設設定,使用更多的 CPU,但壓縮率比 lz4 更好。字典的使用可進一步改善大多數 JSON 文件的壓縮。Zstd 演算法的一些優點如下:
降低儲存成本:較高的壓縮比率意味著更低的儲存用量和更低的成本。
較低的 I/O:壓縮的文件需要較少的 I/O,可能改善效能。
針對您的集合進行最佳化:字典專門針對集合的資料模式進行訓練。
注意
Amazon DocumentDB 3.6、4.0 和 5.0 版不支援字典型壓縮。
效能考量
Zstd 壓縮涉及下列權衡:
儲存體與 CPU 的比較:Zstd 壓縮可實現更好的壓縮率,但相較於 LZ4 壓縮,可能會使用稍微多一點的 CPU 資源。
初始壓縮:在插入足夠的文件來訓練有效的字典之前,新集合可能無法達到最佳壓縮。目前,如果集合至少 100 個文件,則會訓練字典。
工作負載類型:讀取密集型工作負載,其中整個資料都符合緩衝區快取,可能會因為解壓縮負荷而增加延遲和 CPU 用量。
Zstd 壓縮對於具有小型文件、文件陣列和重複欄位名稱的集合特別有效。
啟用字典型壓縮
對於新集合,您可以使用下列命令來啟用 Zstd 壓縮:
db.createCollection("myCollection", { storageEngine: { documentDB: { compression: { enable: true, algorithm: "zstd" } } } } )
您也可以在現有集合上啟用或修改壓縮:
db.runCommand({ collMod: "myCollection", storageEngine: { documentDB: { compression: { enable: true, algorithm: "zstd" } } } })
若要啟用叢集上所有集合的 Zstd 演算法,您可以修改叢集參數群組,以選取「zstd」作為參數「default_collection_compression」的值。
開始使用
Amazon DocumentDB 8.0 預設會開啟 Zstd 壓縮。您一律可以在叢集參數群組中將 ‘default_compression’ 的值設定為停用,以將其關閉。請注意,從 Amazon DocumentDB 8.0 開始,「啟用」不再是 default_compression 的有效選擇,您必須從 Zstd 和 LZ4 中選取。
監控
您可以使用下列其中一個命令來檢視集合的壓縮資訊:
db.runCommand({ collStats: "myCollection" }) 或
db.collection.stats()
這些命令會傳回可用於計算壓縮比率的金鑰統計資料:
compression.algorithm:使用的演算法 ("lz4" 或 "zstd")
storageSize:壓縮後集合使用的實際儲存體。請注意,此數字包含分段 (也就是資料庫頁面中未使用的空間)
avgObjSize:解壓縮集合文件的平均邏輯大小。請注意,如果您的集合有超過 20,000 個文件,則此數字將根據 20,000 個文件的範例進行估算。
size:沒有壓縮的集合邏輯大小。此數字是透過將 avgObjSize 乘以集合中的文件總數來取得,因此如果 avgObjSize 是近似值,則此數字也會是近似值。
計數:集合中的文件數量
下列 CloudWatch 指標在評估字典型壓縮時很有幫助:
CPUUtilization
FreeableMemory
VolumeBytesUsed
VolumeReadIOPs
VolumeWriteIOPs
collStats 指標:
storageSize
size
此外,追蹤應用程式特定的指標很有用,例如每個查詢類型或 API 的延遲和輸送量。