全部產品
Search
文件中心

:儲存資源-階層式存放區

更新時間:Nov 06, 2024

MaxCompute階層式存放區支援標準儲存、低頻儲存和長期儲存,預設情況下為標準儲存。您可以根據資料的訪問頻率,將某些表或分區的儲存類型設定為低頻儲存或長期儲存,實現資料的冷熱分層,以降低資料存放區費用。

申請開通使用

  • 目前如下地區新增的專案預設可使用階層式存放區功能,包括中國香港、日本(東京)、印尼(雅加達)、馬來西亞(吉隆坡)和德國(法蘭克福)地區。

  • 存量專案及其他地區(如新加坡),若需要使用此功能,需單擊申請開通,在新功能試用申請頁面申請開通使用階層式存放區功能。關於新功能申請介紹詳情,請參見新功能試用申請

階層式存放區類型介紹

儲存類型

描述

標準儲存

預設儲存類型,適用於經常訪問資料並對資料進行頻繁讀寫操作的情境。

低頻儲存

適用於不需要頻繁訪問的資料,能夠有效降低儲存費用。

說明
  • 不支援PAI和Hologres直接存取。

  • 如果訪問資料量大或訪問頻次過多,可能會導致費用高於標準儲存費用,例如:

    • 一個月全量訪問一次低頻儲存的表或分區產生的費用,將等於標準儲存的費用。

    • 六個月全量訪問一次長期儲存的表或分區產生的費用,將等於標準儲存的費用。

長期儲存

階層式存放區計費

儲存類型

計費公式

價格

說明

標準儲存

日儲存費用=日儲存量平均值×單價

專案的實際資料存放區量在1 GB以內(包含1 GB)免費,超過1 GB的部分,計費單價為:0.0006 USD/GB/天。

日儲存量平均值=採集到的儲存量之和÷24

低頻儲存

  • 日儲存費用=日儲存量平均值×單價

  • 資料訪問費=資料訪問量×單價

  • 低頻儲存計費單價為:0.000412 USD/GB/天。

  • 低頻儲存資料訪問費單價為:0.006191 USD/GB。

  • 日儲存量平均值=採集到的儲存量之和÷24

  • 當低頻儲存的表或者分區轉成標準儲存或者長期儲存時,操作會收取當前整張表或者分區的低頻儲存訪問費,但通過階層式存放區生命週期自動將低頻儲存轉成長期儲存時,不收訪問費。

  • 當長期儲存的表或者分區轉成標準儲存或者低頻儲存時,會收取當前整張表或者分區的長期儲存訪問費。

長期儲存

  • 日儲存費用=日儲存量平均值×單價

  • 資料訪問費=資料訪問量×單價

  • 長期儲存計費單價為:0.00017 USD/GB/天。

  • 長期儲存資料訪問費單價為:0.080793 USD/GB。

  • 關於儲存計費的詳情介紹,請參見儲存費用

  • 您可以登入費用與成本,在賬單管理 > 賬單詳情頁面,查看不同儲存類型的費用,其中標準儲存、低頻儲存和長期儲存對應的計費項目名稱分別是儲存、階層式存放區-低頻和長期儲存。具體操作,請參見查看賬單詳情

注意事項

  • 當前低頻儲存和長期儲存類型的資料不支援PAI和Hologres直接存取。

  • 當表或分區設定為低頻儲存或長期儲存時,請注意訪問資料量和頻次,如果訪問資料量大或訪問頻次過多,可能會導致費用高於標準儲存費用。

    • 一個月全量訪問一次低頻儲存的表或分區產生的費用,將等於標準儲存的費用。

    • 六個月全量訪問一次長期儲存的表或分區產生的費用,將等於標準儲存的費用。

設定儲存類型

儲存類型之間可以相互轉換,且修改儲存類型不會影響資料訪問。image

儲存類型轉換說明如下:

轉換過程

說明

標準儲存->低頻儲存

支援手動和自動方式轉換,無I/O訪問費,同時不更新表/分區的“資料最後更新時間”和“資料最後訪問時間”。

標準儲存->長期儲存

低頻儲存->長期儲存

支援手動和自動方式轉換,手動切換有I/O訪問費,自動切換沒有,同時不更新表/分區的“資料最後更新時間”和“資料最後訪問時間”。

低頻儲存->標準儲存

僅支援手動轉換,有I/O訪問費,同時更新表/分區的“資料最後更新時間”和“資料最後訪問時間”。

長期儲存->低頻儲存

長期儲存->標準儲存

手動自訂設定

對於非分區表或分區,直接手動自訂設定為低頻儲存或長期儲存類型,設定後立即生效。

命令格式

ALTER TABLE <TABLE_NAME> [PARTITION(<PARTITION_SPEC>)]
        SET <TBLPROPERTIES|PARTITIONPROPERTIES>("storagetier"="standard|lowfrequency|longterm");

參數說明

  • TABLE_NAME:必填,待修改的表或者分區儲存類型的表名稱。

  • PARTITION_SPEC:當修改分區儲存類型時必填。

  • TBLPROPERTIES|PARTITIONPROPERTIES:修改表或分區的儲存類型,取值說明:

    • TBLPROPERTIES:修改表的儲存類型。

    • PARTITIONPROPERTIES:修改分區的儲存類型。

  • storagetier:必填,階層式存放區類型,取值說明:

    • standard:標準儲存,只收取儲存費用。

    • lowfrequency:低頻儲存,會收取儲存費用和低頻儲存資料訪問費用。

    • longterm:長期儲存,會收取儲存費用和長期儲存資料訪問費用。

說明

僅支援對分區表中的分區設定階層式存放區,不支援對分區表設定階層式存放區。

使用樣本

  • 樣本1:設定非分區表的儲存類型為低頻儲存。

    ALTER TABLE tablename
            SET TBLPROPERTIES("storagetier"="lowfrequency");

    查看錶屬性,可以通過StorageTier欄位確認當前的儲存類型。

    --查看錶屬性
    DESC extended tablename;  
    
    ---返回結果如下
    +-------------------------------------------------------------------+
    | Owner:                    ALIYUN$mofan_****@test.aliyunid.com      |
    | Project:                  mf_mc_****                                |
    | TableComment:                                                     |
    +-------------------------------------------------------------------+
    | CreateTime:               2021-11-18 15:14:00                     |
    | LastDDLTime:              2023-09-11 14:34:55                     |
    | LastModifiedTime:         2023-09-13 15:02:28                     |
    | LastAccessTime:           2023-09-14 10:50:57                     |
    +-------------------------------------------------------------------+
    | InternalTable: YES      | Size: 1923683131                        |
    +-------------------------------------------------------------------+
    | Native Columns:                                                   |
    +-------------------------------------------------------------------+
    | Field| Type| Label |ExtendedLabel| Nullable| DefaultValue|Comment |
    +-------------------------------------------------------------------+
    | empno    | bigint |       |               | true     | NULL  |    |
    | ename    | string |       |               | true     | NULL  |    |
    | job      | string |       |               | true     | NULL  |    |
    | mgr      | bigint |       |               | true     | NULL  |    |
    | hiredate | datetime |     |               | true     | NULL  |    |
    | sal      | bigint |       |               | true     | NULL  |    |
    | comm     | bigint |       |               | true     | NULL  |    |
    | deptno   | bigint |       |               | true     | NULL  |    |
    +-------------------------------------------------------------------+
    | Extended Info:                                                    |
    +-------------------------------------------------------------------+
    | TableID:                  8e0cc78c81ab4ad7af30bff7a8e****         |
    | IsArchived:               false                                   |
    | PhysicalSize:             5771049393                              |
    | FileNum:                  3                                       |
    | StoredAs:                 AliOrc                                  |
    | CompressionStrategy:      normal                                  |
    | odps.timemachine.retention.days: 1                                |
    | ColdStorageStatus:        N/A                                     |
    | encryption_enable:        false                                   |
    | StorageTier:              lowfrequency                            |
    | StorageTierLastModifiedTime:  2023-09-11 14:34:55                 |
    +-------------------------------------------------------------------+
  • 樣本2:設定分區表bank_data_pt相應分區的儲存類型為低頻儲存。

    ALTER TABLE bank_data_pt  PARTITION (credit='yes') SET PARTITIONPROPERTIES ("storagetier" = 'lowfrequency');

    查看分區屬性,可以通過StorageTier欄位確認當前的儲存類型。

    --查看分區屬性
    DESC extended bank_data_pt PARTITION(credit='yes');  
    
    --返回結果
    +------------------------------------------------------------------------------------+
    | PartitionSize: 0                                                                   |
    +------------------------------------------------------------------------------------+
    | CreateTime:               2024-05-10 10:28:16                                      |
    | LastDDLTime:              2024-05-10 10:31:01                                      |
    | LastModifiedTime:         2024-05-10 10:28:16                                      |
    +------------------------------------------------------------------------------------+
    | IsExstore:                false                                                    |
    | IsArchived:               false                                                    |
    | PhysicalSize:             0                                                        |
    | FileNum:                  0                                                        |
    | ColdStorageStatus:        N/A                                                      |
    | StorageTier:              LowFrequency                                             |
    | StorageTierLastModifiedTime:  2024-05-10 10:31:01                                  |
    +------------------------------------------------------------------------------------+

通過生命週期規則自動化佈建

對專案或分區表定義階層式存放區生命週期規則,基於該規則引發階層式存放區類型自動轉換。即:

  • 專案設定後,專案內所有非分區表和分區滿足規則,表和分區會自動轉換為對應的儲存類型。

  • 分區表設定後,該表下所有分區滿足規則,分區會自動轉換為對應的儲存類型。

使用說明

  • 不支援對分區以及非分區表單獨配置階層式存放區生命週期規則。

  • 分區表的階層式存放區生命週期規則優先順序高於專案設定的階層式存放區生命週期規則。

  • 當表或分區的生命週期同時滿足長期儲存(longterm)規則和低頻儲存(lowfrequency)規則時,會被優先轉換為longterm。

  • 當表或分區的生命週期先滿足lowfrequency規則時,會被轉換為lowfrequency,之後再滿足longterm規則時,會再次被轉換為longterm,此時從lowfrequency變成longterm不會產生lowfrequency的訪問費用,計費詳情請參見階層式存放區計費

  • 平台每天定時進行兩次規則掃描設定,因此可能出現表或分區滿足條件後無法立即進行設定,會存在一定的延遲。

命令格式

  • 專案層級設定生命週期規則

    setproject odps.table.lifecycle.config=<lifecycle_config_json_string>;

    除此之外您也可通過MaxCompute控制台進行設定,具體如下:

    1. 登入MaxCompute控制台,在左上方選擇地區。

    2. 在左側導覽列選擇工作區>專案管理,單擊目標專案操作列的管理

    3. 參數配置頁簽的生命週期配置地區,配置最近訪問配置策略最近修改配置策略參數。image

      • 最近訪問配置策略:對應DaysAfterLastAccessGreaterThan參數。

      • 最近修改配置策略:對應DaysAfterLastModificationGreaterThan參數。

  • 分區表設定生命週期規則

    • 分區表建表時設定:

      CREATE [EXTERNAL] TABLE [if NOT EXISTS] <table_name>
       [PRIMARY key (<pk_col_name>, <pk_col_name2>),(<col_name> <data_type> [NOT NULL] [DEFAULT <default_value>] [comment <col_comment>], ...)]
       partitioned BY (<col_name> <data_type> [comment <col_comment>], ...)
      tblproperties ('lifecycle_config' = '<lifecycle_config_json_string>')
      ;
    • 分區表修改設定:

      ALTER TABLE <TABLE_NAME> SET TBLPROPERTIES ('lifecycle_config' = '<lifecycle_config_json_string>');

參數說明

主要參數說明如下,其餘參數資訊請參見通用參數

lifecycle_config_json_string

  • 當專案層級設定生命週期規則時,定義如下。

    {
      "TierToLowFrequency": {
        "DaysAfterLastModificationGreaterThan": <days>, //距離最後修改時間超過xx天
        "DaysAfterLastAccessGreaterThan": <days>, //距離最後訪問時間超過xx天
      },
      "TierToLongterm": {
        "DaysAfterLastModificationGreaterThan": <days>,
        "DaysAfterLastTierModificationGreaterThan": <days>
      }
      //每個條件為可選條件,多個條件為or的關係
    }
  • 當分區表設定生命週期規則時,定義如下。

    {
      \"TierToLowFrequency\": {
        \"DaysAfterLastModificationGreaterThan\": <days>, //距離最後修改時間超過xx天
        \"DaysAfterLastAccessGreaterThan\": <days>, //距離最後訪問時間超過xx天
      },
      \"TierToLongterm\": {
        \"DaysAfterLastModificationGreaterThan\": <days>,
        \"DaysAfterLastTierModificationGreaterThan\": <days>
      }
      //每個條件為可選條件,多個條件為or的關係
    }
  • TierToLowFrequency:低頻儲存標識。

  • TierToLongterm:長期儲存標識。

  • DaysAfterLastModificationGreaterThan:定義距離資料最後修改時間超過多少天后自動化佈建,對應表或分區的LastModifiedTime。

  • DaysAfterLastAccessGreaterThan:定義距離資料最後訪問時間超過多少天后自動化佈建,若表或分區的LastAccessTime為空白,則:

    • 對於2023年10月01日前建立的表或分區,預設按照UTC+0時區的2023.10.01 00:00:00時間計算。

    • 對於2023年10月01日後建立的表或分區,若資料沒被訪問過,按照CreateTime時間計算。

使用樣本

  • 樣本1:專案層級設定生命週期規則。

    setproject odps.table.lifecycle.config={"TierToLongterm":{"DaysAfterLastModificationGreaterThan":180},"TierToLowFrequency":{"DaysAfterLastModificationGreaterThan":120}};
  • 樣本2:取消專案層級生命週期配置。

    setproject odps.table.lifecycle.config=;
  • 樣本3:分區表設定生命週期規則。

    --分區表建表時設定
    CREATE TABLE lifecycle_part_t (key string) 
    partitioned BY (ds  STRING)
    tblproperties ('lifecycle_config' = '{\"TierToLowFrequency\": {\"DaysAfterLastModificationGreaterThan\": 2,\"DaysAfterLastAccessGreaterThan\": 2},\"TierToLongterm\": {\"DaysAfterLastModificationGreaterThan\": 4,\"DaysAfterLastTierModificationGreaterThan\": 7}}')
    ;
    --分區表修改設定
    ALTER TABLE lifecycle_part_t SET tblproperties ('lifecycle_config'='{\"TierToLowFrequency\": {\"DaysAfterLastModificationGreaterThan\": 90,\"DaysAfterLastAccessGreaterThan\": 30},\"TierToLongterm\": {\"DaysAfterLastModificationGreaterThan\": 180,\"DaysAfterLastTierModificationGreaterThan\": 7}}');