全部產品
Search
文件中心

MaxCompute:儲存成本最佳化

更新時間:Feb 28, 2024

本文從資料分區、表生命週期和定期刪除表3個方面為您介紹如何最佳化儲存成本。

對於儲存最佳化而言,有三個關鍵點:

  • 合理地進行資料分區。

  • 設定合理的表生命週期。

  • 定期刪除廢表。

合理設定資料分區

MaxCompute將分區列的每個值作為一個分區。您可以指定多級分區,即將表的多個欄位作為表的分區,分區之間的關係類似多級目錄的關係。在使用資料時如果指定了需要訪問的分區名稱,則只會讀取相應的分區,避免全表掃描,提高處理效率,降低費用。

  • 假如最小統計周期為天,建議採用日期作為分區欄位。每天將資料移轉到指定分區,再讀取指定分區的資料進行下遊統計。

  • 假如最小統計周期為小時,建議採用日期+小時作為分區欄位。每小時將資料移轉到指定分區,再讀取指定分區的資料進行下遊統計。如果小時調度的統計任務也按天分區,資料每小時追加,則每小時將多讀取大量的無用資料,增加不必要的費用。

您可以根據實際的業務情況選擇分區欄位,除了日期和時間,也可以使用其他的枚舉值個數相對固定的欄位,例如渠道、國家和省份地市。或者使用時間和其他欄位共同作為分區欄位。一般而言,推薦使用二級分區,因為最大的單表最多隻支援6萬個分區。

合理設定表生命週期

您可以根據資料本身的使用方式,在建立表時對錶設定生命週期,MaxCompute會及時刪除超過生命週期的資料,達到節省儲存空間的目的。

例如,建立一張生命週期為100天的表。如果這張表或者分區的最後修改時間超過了100天將會被刪掉。

CREATE TABLE test3 (key boolean) PARTITIONED BY (pt string, ds string) LIFECYCLE 100;

生命週期最小單位是分區,所以一個分區表中,如果有部分分區達到了生命週期的閾值,那麼這些分區會被直接刪除掉,而達到生命週期閾值的分區不受影響。

已經建立的表可以通過如下命令修改生命週期。詳情請參見生命週期操作

ALTER TABLE table_name SET lifecycle days;

刪除廢表

建議您定期地刪除訪問跨度大(即長期不會訪問)的廢表,因為這些表的意義並不大,會極大地浪費儲存資源,例如:

  • 3個月內沒有被訪問的表。

  • 一張表是非分區表,同時最近1個月內沒有被訪問。

  • 儲存為0KB的表,即沒有儲存的表。