全部產品
Search
文件中心

PolarDB:冷資料歸檔使用說明

更新時間:Sep 12, 2025

本文將為您介紹如何使用冷資料歸檔。使用前,請先確認您要歸檔的格式以及您的叢集是否滿足要求。更多資訊,請參見歸檔格式對比版本要求

版本要求

  • 歸檔為CSV格式

    • 產品系列為叢集版時,核心版本需為如下版本之一:

      • MySQL 8.0.1且修訂版本為8.0.1.1.47及以上。

      • MySQL 8.0.2且修訂版本為8.0.2.2.10及以上。

    • 產品系列為多主叢集(Limitless)時,核心版本需為8.0.1.0.13及以上。

  • 歸檔為ORC格式

    • 產品系列為叢集版時,修訂版本需為8.0.2.2.30及以上。

    • 產品系列為多主叢集(Limitless)時,修訂版本需為8.0.2.2.30及以上。

歸檔冷資料

您需先開啟冷資料歸檔。在進行冷資料歸檔時,您可以根據實際需求選擇歸檔普通表或分區表。

查詢冷資料

  • 普通表

    無論您選擇什麼歸檔格式,均可在無需修改表的訪問方式的情況下查詢歸檔資料。

  • 分區表

    • 歸檔至OSS外表:需要修改表的訪問方式才可查詢到歸檔資料,即查詢指定的歸檔表。更多資訊,請參見分區表歸檔至OSS外表

    • 歸檔分區表:歸檔後的表為混合分區表。更多資訊,請參見查詢混合分區

      您可以通過以下兩種方式來查詢不同引擎的分區資料。

      • 在控制台將 hybrid_partition_query_mix_engine_enabled參數設定為ON,執行查詢語句時,查詢結果中就會包含非InnoDB分區的資料。樣本如下:

        SELECT * FROM t1;

        其中,t1表示需要查詢的混合分區表。

      • 在控制台將 hybrid_partition_query_mix_engine_enabled參數設定為OFF,查詢指定分區中的資料。樣本如下:

        SELECT * FROM t1 partition (p1);

        其中,t1表示需要查詢的混合分區表,p1表示需要查詢的分區。

說明

由于歸檔後的冷資料為單表多檔案格式,在查看冷資料時,您可以採用並行查詢進行查詢最佳化,詳情請參見冷資料並行查詢

修改冷資料

如果您有低頻修改OSS上冷資料的需求,您可以通過ALTER文法將OSS上的冷資料導回至PolarDB儲存空間進行修改。資料導回後,會同步刪除OSS上的冷資料。完成資料修改後,您可以將修改後的表資料再次歸檔至OSS。

普通表

文法

ALTER TABLE table_name ENGINE[=]engine_name;

參數說明

參數

參數說明

table_name

需要導回的OSS表的表名。

engine_name

導回後的引擎類型。

注意事項

OSS表為唯讀狀態時,不支援執行修改操作(INSERTUPDATEDELETE)。如需修改已經歸檔的冷資料,您需要將OSS錶轉換成可讀可寫的表,如InnoDB表。修改唯讀狀態下的OSS表時,報錯資訊如下:

1036 - Table 't' is read only

樣本

在資料庫oss_test中將OSS表t導回至PolarDB儲存空間。

ALTER TABLE `oss_test`.`t` ENGINE = InnoDB;

修改InnoDB表t的資料,修改完資料之後,再次將InnoDB引擎中的表t歸檔至OSS。樣本如下:

ALTER TABLE t ENGINE = CSV CONNECTION = 'default_oss_server';

ALTER TABLE t ENGINE = CSV STORAGE OSS;

分區表

文法

ALTER TABLE table_name REORGANIZE PARTITION part_name INTO (partition_definition);

參數說明

參數

參數說明

table_name

需要導回的OSS表的表名。

part_name

需要導回的分區名稱。

partition_definition

與需要導回的分區的partition_definition保持一致。

樣本

在資料庫中,將歸檔在OSS上的分區表tp1分區上的資料導回至PolarDB儲存空間。

ALTER TABLE t REORGANIZE PARTITION p1 INTO(PARTITION p1 values less than(100));

刪除冷資料

說明
  • 當前僅滿足以下版本的PolarDB MySQL版叢集支援刪除OSS上對應的檔案:

    • 8.0.1版本且小版本需為8.0.1.1.42及以上。

    • 8.0.2版本且小版本需為8.0.2.2.23及以上。

  • 若您的叢集的小版本不滿足以上版本要求時,暫不支援刪除OSS上對應的檔案。建議升級您叢集的小版本,具體請參見小版本管理

在您將OSS上的表刪除或導回至PolarDB儲存空間後,OSS上的檔案將不會自動同步刪除。確認資料不再使用後,您可以按照以下步驟刪除OSS上相應的檔案。更多資訊,請參見刪除OSS上對應的檔案

  • 普通表和OSS外表

    你需要使用DROP TABLE刪除歸檔表,然後再通過CALL dbms_oss.delete_table_file('database_name', 'table_name');命令來刪除OSS上對應的檔案。

  • 分區表

    通過CALL dbms_oss.delete_table_file('database_name', 'table_name');命令來刪除OSS上對應的檔案。

刪除OSS上對應檔案的操作為非同步執行,需等待叢集中的所有節點不再依賴該OSS檔案後,方可完成完全刪除。此外,在流量較大時,此過程可能會存在一定的延遲。

FORCE STORAGE OSS選項

說明

當前僅滿足PolarDB MySQL版8.0.2版本且小版本需為8.0.2.2.29及以上的版本支援FORCE STORAGE OSS選項強制移除OSS檔案。

  • 普通表和OSS外表

    DROP TABLE table_name [FORCE STORAGE OSS];
    說明

    DROP TABLE命令FORCE STORAGE OSS選項提供了一鍵式清理能力,可在刪除表結構的同時自動刪除關聯的OSS隱藏檔。

  • 分區表

    ALTER TABLE table_name DROP PARTITION part_name [FORCE STORAGE OSS];
    說明

    ALTER TABLE語句的DROP PARTITION子句配合FORCE STORAGE OSS選項,可實現分區表中繼資料和對應OSS隱藏檔的同步刪除。

  • CHANGE PARTITION ENGINE

      ALTER TABLE table_name CHANGE PARTITION part_name ENGINE = CSV|ORC [FORCE STORAGE OSS]
    說明

    CHANGE PARTITION ENGINE冷資料歸檔功能提供強制覆蓋機制,允許同名檔案的自動替換操作。

歸檔格式對比

歸檔冷資料時,您可以根據以下對比評估選擇適合的格式進行歸檔。

說明
  • 歸檔普通表、OSS外表以及分區表均存在相關限制。請在進行歸檔操作之前仔細閱讀,以避免對您的業務產生影響。

  • 冷資料歸檔後,資料將儲存在系統預設的Object Storage Service服務(OSS)上,而非儲存在您的OSS中。目前,僅支援在PolarDB控制台上查看歸檔後的資料列表。

  • 分區表歸檔方式說明:

    • 分區表歸檔:是將分區表中的某個分區就地歸檔。資料還在原來的表中,只是該分區的儲存介質從PolarDB(熱儲存)換成了OSS(冷儲存),表本身變成了包含熱/冷分區的混合分區表。

    • 分區表歸檔至OSS外表:是將分區表中的某個分區的資料移出,存放到一個全新且獨立的OSS外表中。原表中的這個分區會被刪除。

對比項

CSV

ORC

開源格式

歸檔方式

手動歸檔:

歸檔速度

說明

只支援使用單線程方式歸檔資料。

說明

只支援使用單線程方式歸檔資料。

查詢速度

  • 較差。在沒有索引且使用串列查詢的情況下,查詢效能約為InnoDB儲存引擎的五分之一到十分之一。

  • 行存節點上,較ORC格式快。

說明

支援使用單線程和多線程兩種方式讀取資料。

  • 較差。在沒有索引且使用串列查詢的情況下,查詢效能約為InnoDB儲存引擎的五分之一到十分之一。

  • 適合通過單獨的列存節點進行AP查詢。

說明

只支援使用單線程方式讀取資料。

支援事務

索引能力

歸檔後的資料修改方式

OSS上的歸檔表唯讀,需要將OSS資料導回至PolarDB儲存空間,再進行修改。

佔用的儲存空間

與沒有索引的InnoDB引擎中的表佔用的儲存空間一致。

相同資料量的情況下,佔用的儲存空間為CSV格式檔案佔用的儲存空間的45%。

備份恢複

不支援。

說明

進行備份操作時,不會對OSS上已歸檔的冷資料進行備份,因此不支援通過備份進行庫表恢複、備份恢複或按還原時間點操作。

歸檔後影響