張貼日期: Dec 21, 2017

Amazon Redshift 現在使用後期實體化,可為含述詞篩選條件的查詢減少掃描資料量,同時改善效能。

後期實體化 (資料列層級篩選) 可對述詞篩選進行批次處理和因素化,然後再擷取下一欄的資料區塊,透過篩選條件來減少查詢的 I/O。例如,假設在有數百萬個列的 CUSTOMER_DETAIL 表格上,由查詢的篩選條件對表格中運作的兩個欄進行篩選:

SELECT FIRST_NAME, LAST_NAME, EMAIL, CITY, SALES_REP, 
FROM CUSTOMER_DETAIL 
WHERE CUSTOMER_SINCE_DATE < ’01-01-2000’
AND CUSTOMER_STATUS_LEVEL IN (’Gold’ , ’Silver’) ;

透過後期實體化,Redshift 從 CUSTOMER_SINCE_DATE 和 CUSTOMER_STATUS_LEVEL 欄擷取批次資料,然後套用個別的述詞。假如 CUSTOMER_DETAIL 表格列中只有 10% 符合述詞篩選條件,Redshift 就能省下 90% 用於其餘欄的 I/O,因此可改善查詢效能。此外,以批次掃描欄,而非一次掃描列,亦有助進一步改善效能。 

在此版本中,我們將新的「is_rlf_scan」欄加入到 STL_SCAN 表格。假如查詢使用後期實體化,此欄的值為「t」或 TRUE;否則值為「f」或 FALSE。

Amazon Redshift 預設啟用後期實體化。當 Redshift 偵測到查詢能改善效能時,便會自動觸發。在最新組建 1.0.1583 中,後期實體化在所有的 AWS 區域皆有提供。