閱讀119 返回首頁    go 阿裏雲 go 技術社區[雲棲]


MaxCompute分區表和非分區表使用對比

本文我們將通過對有同樣數據量、表結構除分區列其他都一模一樣的表,從查詢計算、寫入、刪除數據幾個簡單操作進行對比,了解MaxCompute分區表和非分區表在使用上有什麼差異。

在介紹之前,需要大家先了解MaxCompute分區的概念

數據準備

分區表:公共數據集中的表dwd_prouduct_house_basic_info_out(二手房產數據集);

非分區表:執行建表語句:

create table dwd_prouduct_house_basic_info_out_npt as select * from public_data.dwd_prouduct_house_basic_info_out;

創建表的同時將源表的所有數據都複製到新表dwd_prouduct_house_basic_info_out_npt中。
由於create table … as select …語句創建的表不會複製分區屬性,隻會把源表的分區列作為目標表的一般列處理,所以新表dwd_prouduct_house_basic_info_out_npt為非分區表。

可以分別執行select count(*) from public_data.dwd_prouduct_house_basic_info_out;select count(*) from dwd_prouduct_house_basic_info_out_npt;查看這兩個表的記錄數會是一樣。

本次操作表的記錄數為1147676063條。

計算對比

我們執行一個簡單的查詢某個分區數據的job:

Select * from public_data.dwd_prouduct_house_basic_info_out where ds= '20170113';--分區表查詢
Select * from dwd_prouduct_house_basic_info_out_npt where ds= '20170113';--非分區表查詢

計算時長對比

計算資源充足的情況下進行操作。

  • 分區表裏查詢使用時間1秒,:
    image

    直接在對應分區中取出該分區所有數據。

  • 非分區裏表查詢:
    加上job等待時間共1分15秒
    image
    真正執行時長53秒
    image

    需要在整個表1147676063條記錄中取出滿足條件的數據。
    image

計算費用對比

我們可以直接通過大數據開發套件->“數據開發”工作區中的“成本估計”對兩條查詢語句進行費用預估,該預估功能采用的計費公式可參考“計量計費->I/O後付費”。

若采用計算預付費模式,可不用在意該計算費用。

下圖是通過成本估計功能預估的費用,結果顯示在非分區表中查詢一樣條件的數據會花費更多,當然最終花費還得看最後的賬單。

image

table size對比

由於MaxCompute存儲壓縮比不一定完全一致,兩個表數據在MaxCompute的size也會有一定的差異。

desc public_data.dwd_prouduct_house_basic_info_out;分區表執行結果如下圖:

image

desc dwd_prouduct_house_basic_info_out_npt; 非分區表執行結果如下圖:

image

寫入對比

創建三個表,表結構除了分區列,其他都一致:

  • 非分區表,

    create  table   house_test_npt(house_id string  , house_total_price string , house_unit_price string , house_type string , house_floor string , house_direction string , house_deckoration string , house_area string , house_community_name string , house_region string  , house_city string, ds string)
    
    
  • 以時間為分區的分區表

    create  table   house_test_pt_1(house_id string  , house_total_price string , house_unit_price string , house_type string , house_floor string , house_direction string , house_deckoration string , house_area string , house_community_name string , house_region string  , house_city string ) partitioned by ( ds string)
    
    
  • 以時間為一級分區,城市為二級分區的分區表

    create  table   house_test_pt(house_id string  , house_total_price string , house_unit_price string , house_type string , house_floor string , house_direction string , house_deckoration string , house_area string , house_community_name string , house_region string ) partitioned by (ds string , house_city string)
    
    

分別執行3個insert語句,源表取一模一樣的數據,即select分句一模一樣:

insert overwrite table house_test_npt select house_id,house_total_price,house_unit_price,house_type,house_floor,house_direction,house_deckoration,house_area,house_community_name,house_region,house_city,ds from public_data.dwd_prouduct_house_basic_info_out where ds ='20170114';--寫入非分區表

insert overwrite table house_test_pt_1 partition (ds='20170114') select house_id,house_total_price,house_unit_price,house_type,house_floor,house_direction,house_deckoration,house_area,house_community_name,house_region,house_city from public_data.dwd_prouduct_house_basic_info_out where ds ='20170114';--寫入一級分區表

insert overwrite table house_test_pt partition (ds='20170114',house_city) select house_id,house_total_price,house_unit_price,house_type,house_floor,house_direction,house_deckoration,house_area,house_community_name,house_region,house_city from public_data.dwd_prouduct_house_basic_info_out where ds ='20170114';--使用動態分區方式寫入二級分區表

對比執行過程:

  • 非分區表,一個task,耗時41s:
    image

  • 一級分區表,一個task,耗時41s:
    image

  • 二級分區表,第二級分區值為動態輸入,2個task,最長task耗時1分31秒:
    image

數據刪除操作對比

假設要刪除表某一天的數據,由於MaxCompute不支持delete語法,我們需要通過別的方式進行數據刪除。

  • 分區表隻需要通過alter語句drop對應分區即可,如下刪除分區為20170112的數據:

    ALTER TABLE public_data.ods_enterprise_share_basic DROP IF EXISTS PARTITION (ds='20170112');
    
    
  • 非分區表,需要將不需要刪除的數據查詢出來並覆蓋寫入方式寫回表中,增加了計算量。

    INSERT OVERWRITE TABLE dwd_prouduct_house_basic_info_out_npt SELECT * FROM dwd_prouduct_house_basic_info_out_npt WHERE ds<>'20170112';
    

最後更新:2017-07-05 16:02:25

  上一篇:go  SEO優化網站索引量突然下降的主要原因
  下一篇:go  首秀 | 攜手CCF-GAIR人工智能大會,思必馳DUI開放平台全麵亮相!