大數據“復活”記
1063
2025-03-31
GaussDB(DWS)之數據庫對象設計
1、根據應用邏輯設計數據庫
根據業務邏輯,抽象出表定義,表其實就是描述了實體的各個屬性;根據業務邏輯,判斷表在數據庫中的存儲方式;優化表定義和查詢語句;
2、行存儲和列存儲的特點
能夠根據數據特征自適應的選擇壓縮算法,平均壓縮比7:1;根據預置的時間策略對數據自動壓縮;
壓縮數據可通過數據庫接口繼續訪問,壓縮過程對應用透明;壓縮數據可直接訪問,對業務透明,無需導入導出,極大縮短歷史數據訪問的準備時間;
- 優點:數據庫性能瓶頸經常集中在磁盤I/O,數據壓縮后,讀取數據時,相對于壓縮解壓,減少I/O能夠更好地提高性能;
3、選擇行存還是列存
- 列存適合的場景:統計分析類查詢(group,join多的場景);即興查詢(查詢條件列不確定,行存無法確定索引);
- 行存適合的場景:點查詢(返回記錄少,基于索引的簡單查詢);增刪改比較多的場景;
4、數據分布方式
復制Replication方式;散列Hash方式
- 復制(Replication)方式 - 將表中的所有數據復制到集群中每一個DN實例上,主要適用于記錄集較小的表(10W行記錄以下);
- 散列(Hash)方式 - 將表中指定字段進行hash運算后,生成對應的hash值,根據DN實例與哈希值的映射關系獲得該元組的目標存儲位置,適用于數據量較大的表;
5、數據分布策略
分布存儲和并發查詢是MPP架構數據庫的主要優勢所在,將一個大數據量表中的數據,按合適分布策略分散存儲在多個DN實例內,可極大提升數據庫性能;
6、分布列的選擇
- 盡量選擇distinct值比較多的列,保證數據均勻分布,分布均勻是為了避免木桶效應,讓各個主機對等執行;
- 盡量選擇Join列或group 列做分布列,盡量選擇Join列或group列是為了避免DN之間數據流動, 提高性能;
- 盡量不要選擇filter列作為分布列;
- 不同DataNode的數據量相差5%以上即可視為傾斜,如果相差10%以上就必須要調整分布列;
7、分布表和復制表的關聯查詢
T1為hash表,T2為復制表:T1表的每一部分在各DN上分別與T2表進行連接 -> 各DN上的連接結果集在Coordinator上進行匯聚,產生最終輸出的結果集;
8、分布表與分布表關聯查詢
T1表和T3表都為分布表:在DN1實例上,T1表的part1部分與T3表的T1部分進行關聯 -> T3表的part2、part3、part4復制到DN1上,與T1的part1部分進行關聯 -> DN2、DN3、DN4實例操作與DN1類似 -> Coordinator節點對各DN生成的結果集進行匯聚,生成最終數據結果集;
9、分區剪枝
分區表是將大表的數據分成稱為分區的許多小的子集;
- 好處:基于時間的查詢分區枝剪可以大大提高查詢性能;數據容易管理;
- 建議:業務表一般按照時間或地區做Range分區
10、索引介紹
索引是對數據庫表中一列或多列的值進行排序的一種結構;使用索引可快速訪問數據庫表中的特定信息;
分類:行存表索引/列存表索引
- 行存表索引 - B-Tree索引:適合數據重復度低的數據字段, 例如 身份證號碼 等字段;
*B-Tree索引 - 優點:有B-tree索引,就像翻書目錄一樣,可以通過索引直接定位到要查詢的數據(減少了I/O操作);另外查詢性能與表中數據量無關;
*注意:不適合鍵值重復率較高的字段上創建B-Tree索引;
- 列存表索引 - PCK索引(Partial Cluster Key 局部聚集):一種針對列存的約束條件;一般在建表時創建,在數據導入時,根據約束,在列存存儲單元(CU)內對數據做聚集;
*Psort索引:一種列存局部索引,對列存存儲單元(CU)內的數據,創建局部索引(MIN/MAX index稀疏索引),提高查詢效率;
*PCK索引 - 注意:先創建后使用,之前入庫的數據不會自動根據索引聚集;
11、如何選擇索引
行存選擇索引注意事項:
- 查詢條件列上創建B-tree index, 也可以創建組合索引, distinct值比較少的列不適合建立index;
- 行存不適合建立太多B-tree index, 然后做數據導入,這樣的導入性能非常差; 一般這種情況需要禁用該表的索引,待數據導入后重建index;
列存選擇索引注意事項
- 查詢條件出現最多的列,例如filter條件或者join列上建立partial cluster key(約束);
- 條件列上可以建立psort index, 也可以創建組合索引;
EI企業智能 數據倉庫服務 GaussDB(DWS) Gauss AP 數據庫 HUAWEI CONNECT
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。