本文從資料分區、表生命週期和定期刪除表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的表,即沒有儲存的表。