Redshift 如何設計表

2021-10-24 12:14:41 字數 2086 閱讀 3812

aws redshift 中設計表

aws redshift 是基於 postgresql 的資料倉儲。 那麼如何建立乙個表, 這個表的建立於普通的關係型資料庫的表有什麼不同呢?

在建立 redshift table 時, 可以選擇排序鍵、分配方式和壓縮編碼。

設計表是為了 減少 i/o 運算元和儘量減少處理查詢所需的記憶體。

排序鍵將您的資料按照排序順序儲存在磁碟中。amazon redshift 查詢優化程式在確定最佳查詢計畫時會使用排序順序。

如何選擇排序鍵:

根據需要頻繁查詢的資料而決定, 例如時間列或常查詢的某一列。

根據需要頻繁查詢的語句而決定, 例如聯接表的關聯列。

根據需要頻繁查詢的範圍條件而決定, 例如條件範圍。

在執行查詢時,查詢優化程式根據執行聯接和聚合的需要將行重新分配到計算節點。選擇表分配方式的目的是通過在執行查詢前將資料放在需要的位置來最大程度地減小重新分配步驟的影響。

資料表只能有乙個分配鍵

只有用於聯接的行需要分配,因此需要考慮篩選後的資料集的大小,而不是表的大小。

在過濾的結果集中選擇基數高的列。

分配方式:

key 分配:

根據一列中的值分配行。領導節點會嘗試將匹配的值放置到同乙個節點切片上。

all 分配:

向每個節點分配整個表的副本。even 分配或 key 分配只將表中的部分行放置在每個節點上,而 all 分配則確保為該錶參與的所有聯接並置每一行。

even 分配:

不管任意特定列中的值是什麼,系統都以輪詢方式向所有切片分配行。even 分配是預設分配方式。

auto 分配:

在自動 (auto) 分配方式下,基於表資料大小分配最佳分配方式。最初向小型表分配的是 all 分配,然後在表變大時更改為 even 分配。

通過 pg_class_info 檢視應用於表的分配方式。

svv_table_info 中的 diststyle 列指示表的當前分配方式。

例:

create

table dist_key (col1 int

)diststyle key distkey (col1)

;create

table dist_even (col1 int

)diststyle even;

create

table dist_all (col1 int

)diststyle all

;create

table dist_auto (col1 int

);

可以在建立表時指定壓縮編碼,但在大多數情況下,自動壓縮具有最佳的效果。

自動壓縮將在選擇壓縮編碼時平衡整體效能。如果排序鍵列的壓縮率遠高於同一查詢中的其他列,則範圍受限掃瞄的執行效果可能會很差。因此,自動壓縮將選擇乙個效率較低的壓縮編碼來讓排序鍵列與其他列保持平衡。

壓縮方式:

raw, az64, byte-dictionary, delta, lzo, mostly, runlength, text255 and text32k, zstd

例:

create

table customer(

custkey int encode delta,

custname varchar(30

) encode raw,

gender varchar(7

) encode text255,

address varchar

(200

) encode text255,

city varchar(30

) encode text255,

state char(2

) encode raw,

zipcode char(5

) encode bytedict,

start_date date encode delta32k)

;

不強制實施唯

一、主鍵和外來鍵約束。

除非您的應用程式強制實施約束,否則不要定義主鍵和外來鍵約束。amazon redshift 不強制實施唯

一、主鍵和外來鍵約束。 如果主鍵不唯一,則會造成問題。

中文摘要 redshift是如何改變了遊戲規則

1.從多年前,當自己寫的單機處理程式無法處理大量資料的時候,我們考慮購買商業資料倉儲支援 每tb年單位 2萬 60萬美金每年 或自己搭建hadoop機群。兩個方案都不足以明顯的降低成本。這一切從redshift出現而改變。下面我們用資料來看看redshift的價效比 2.介紹測試機群和資料集。red...

資料庫如何設計表

閒來無事,總結一下資料庫各種關聯 的優缺點 一對一 一對一是將資料表 垂直切分 其實是不常見,或不常用的。也就是 a 表的一條記錄對應 b 表的一條記錄,為什麼要這樣的設計呢,不是增加了程度的複雜性嗎,然而並不一定,舉例說明 乙個系統必然有 employee 員工表 包含字段 employeeid ...

如何設計資料庫表?

背景 最近在準備軟體設計師的資格考試。首先表達一下我為什麼會去考這個證,主要有以下兩點 薪資待遇,求職。雖然很多人說該證書沒有用。但是有一些大廠會直接給你加薪的。我記得hk中級資格證書,每個月1000的補貼。高階資格證書是1500的補貼。並且在簡歷中,你有這個證書,hr對你的認可也會深刻。在福利面前...