全部產品
Search
文件中心

Tablestore:生命週期管理

更新時間:Jul 25, 2026

通過 Java SDK 配置多元索引的資料生命週期(Time To Live,TTL),Tablestore 會自動清理超過儲存期限的索引資料。

前提條件

開始前,完成以下準備工作:

  • 安裝 5.12.0 及以上版本的Tablestore Java SDK並初始化用戶端。

  • 已建立待配置的資料表,並將最大版本數設定為 1。

注意事項

  • 使用多元索引生命週期管理功能前,必須禁止資料表通過 UpdateRow 更新資料,以避免資料表與多元索引的資料不一致。

    資料表 TTL 按屬性列生效,多元索引 TTL 按整行生效。使用 UpdateRow 更新資料時,系統清理到期資料後,資料表可能只保留部分屬性列,而多元索引仍保留整行資料。

    需要更新資料時,請改用 PutRow 覆蓋整行資料。

  • 多元索引 TTL 的單位為秒,取值為 -1 或 int32 範圍內的正整數。-1 表示永久儲存,正整數最大值對應的儲存時間約為 68 年。

  • 多元索引 TTL 與資料表 TTL 獨立配置,但多元索引 TTL 必須小於或等於資料表 TTL。如果多元索引的目標 TTL 大於當前資料表 TTL,先增巨量資料表 TTL;如果同時減小二者,先減小多元索引 TTL。

  • Tablestore 每天自動清理多元索引中的到期資料。在下一次清理完成前,查詢仍可能返回已到期但尚未清理的資料。

  • 更新資料表或多元索引的 TTL 後,Tablestore 會在下一次清理周期自動清理因 TTL 變更而到期的存量資料。

操作步驟

生命週期配置包括禁止資料表通過 UpdateRow 更新資料、設定多元索引生命週期,以及按需設定資料表生命週期。資料表生命週期不是固定的最後一步,操作順序必須保證多元索引 TTL 小於或等於資料表 TTL:如果多元索引的目標 TTL 大於當前資料表 TTL,先增巨量資料表 TTL;如果同時減小二者,先減小多元索引 TTL。

  1. 禁止資料表通過 UpdateRow 更新資料。

    以下樣本禁止 example_table 通過 UpdateRow 更新資料。

    String tableName = "example_table";
    UpdateTableRequest request = new UpdateTableRequest(tableName);
    TableOptions tableOptions = new TableOptions();
    tableOptions.setAllowUpdate(false);
    request.setTableOptionsForUpdate(tableOptions);
    
    client.updateTable(request);
  2. 設定多元索引生命週期。

    根據多元索引是否已建立,選擇相應的設定方式。

    建立索引

    建立多元索引時,將生命週期設定為 7 天。

    String tableName = "example_table";
    String indexName = "example_index";
    IndexSchema indexSchema = new IndexSchema();
    indexSchema.setFieldSchemas(Arrays.asList(
            new FieldSchema("category", FieldType.KEYWORD),
            new FieldSchema("price", FieldType.LONG)));
    
    CreateSearchIndexRequest request = new CreateSearchIndexRequest();
    request.setTableName(tableName);
    request.setIndexName(indexName);
    request.setIndexSchema(indexSchema);
    request.setTimeToLiveInDays(7);
    
    client.createSearchIndex(request);

    已有索引

    將已有多元索引的生命週期更新為 7 天。

    String tableName = "example_table";
    String indexName = "example_index";
    UpdateSearchIndexRequest request =
            new UpdateSearchIndexRequest(tableName, indexName);
    request.setTimeToLiveInDays(7);
    
    client.updateSearchIndex(request);
  3. 按需設定資料表生命週期。

    以下樣本將 example_table 的生命週期設定為 7 天。請根據上述 TTL 約束,在設定多元索引生命週期之前或之後執行此操作。

    String tableName = "example_table";
    UpdateTableRequest request = new UpdateTableRequest(tableName);
    TableOptions tableOptions = new TableOptions();
    tableOptions.setTimeToLiveInDays(7);
    request.setTableOptionsForUpdate(tableOptions);
    
    client.updateTable(request);

完成配置後,查詢表資訊多元索引資訊,確認二者的生命週期符合預期。