压缩数据(compact_data)

数据压缩

本主题描述了如何在 Milvus 中对数据进行压缩。

Milvus 默认支持自动数据压缩。您可以 配置 Milvus 以启用或禁用 压缩自动压缩

如果自动压缩被禁用,您仍然可以手动压缩数据。

为了确保使用时间旅行时的搜索准确性,Milvus会在common.retentionDuration中指定的时间范围内保留数据操作日志。因此,在此期间操作的数据将不会被压缩。

手动压缩数据

压缩请求是异步处理的,因为它们通常需要花费很长时间。

Python Java GO Node.js CLI Curl

from pymilvus import Collection
collection = Collection("book")      # Get an existing collection.
collection.compact()
 
const res = await milvusClient.compact({
  collection_name: "book",
});
const compactionID = res.compactionID;
 
// This function is under active development on the GO client.
 
R<ManualCompactionResponse> response = milvusClient.manualCompaction(
  ManualCompactionParam.newBuilder()
    .withCollectionName("book")
    .build()
);
long compactionID = response.getData().getCompactionID();
 
compact -c book
 
curl -X 'POST' 
  'http://localhost:9091/api/v1/compaction' 
  -H 'accept: application/json' 
  -H 'Content-Type: application/json' 
  -d '{
    "collectionID": 434262071120432449
  }'
 

Output:

{"status":{},"compactionID":434262132129005569}
 
参数描述
collection_name要压缩数据的集合的名称。
参数描述
CollectionName要压缩数据的集合的名称。
选项描述
-c要压缩数据的集合的名称。

检查压缩状态

您可以通过手动触发压缩时返回的压缩ID来检查压缩状态。

Python Java GO Node.js CLI Curl

collection.get_compaction_state()
 
const state = await milvusClient.getCompactionState({
    compactionID
});
 
// This function is under active development on the GO client.
 
milvusClient.getCompactionState(GetCompactionStateParam.newBuilder()
  .withCompactionID(compactionID)
  .build()
);
 
show compaction_state -c book
 
curl -X 'GET' 
  'http://localhost:9091/api/v1/compaction/state' 
  -H 'accept: application/json' 
  -H 'Content-Type: application/json' 
  -d '{
    "compactionID": 434262132129005569
  }'
 

Output:

{"status":{},"state":2}
 

下一步操作