云數(shù)據(jù)庫GaussDB 規(guī)劃存儲模型
GaussDB支持行列混合存儲。行、列存儲模型各有優(yōu)劣,建議根據(jù)實際情況選擇。
行存儲是指將表按行存儲到硬盤分區(qū)上,列存儲是指將表按列存儲到硬盤分區(qū)上。默認情況下,創(chuàng)建的表為行存儲。行存儲和列存儲的差異請參見下圖。
圖中,左上為行存表,右上為行存表在硬盤上的存儲方式。左下為列存表,右下為列存表在硬盤上的存儲方式。
云數(shù)據(jù)庫GaussDB 行、列存儲有如下優(yōu)缺點:
|
存儲模型
|
優(yōu)點
|
缺點
|
|---|---|---|
行存 |
數(shù)據(jù)被保存在一起。INSERT/UPDATE容易。 |
選擇(Selection)時即使只涉及某幾列,所有數(shù)據(jù)也都會被讀取。 |
列存 |
查詢時只有涉及到的列會被讀取。 投影(Projection)很高效。 任何列都能作為索引。 |
選擇完成時,被選擇的列要重新組裝。 INSERT/UPDATE比較麻煩。 |
云數(shù)據(jù)庫GaussDB 行、列存儲類型對應的適用場景
一般情況下,如果表的字段比較多(大寬表),查詢中涉及到的列不多的情況下,適合列存儲。如果表的字段個數(shù)比較少,查詢大部分字段,那么選擇行存儲比較好。
|
索引方式
|
描述
|
|---|---|
唯一索引 |
可用于約束索引屬性值的唯一性,或者屬性組合值的唯一性。如果一個表聲明了唯一約束或者主鍵,則GaussDB自動在組成主鍵或唯一約束的字段上創(chuàng)建唯一索引(可能是多字段索引),以實現(xiàn)這些約束。目前,GaussDB只有B-Tree及UBTree可以創(chuàng)建唯一索引。 |
多字段索引 |
一個索引可以定義在表中的多個屬性上。目前,GaussDB中的B-Tree支持多字段索引,且最多可在32個字段上創(chuàng)建索引。 |
云數(shù)據(jù)庫GaussDB 行存表
默認創(chuàng)建表的類型。數(shù)據(jù)按行進行存儲,即一行數(shù)據(jù)是連續(xù)存儲。適用于對數(shù)據(jù)需要經(jīng)常更新的場景。
云數(shù)據(jù)庫GaussDB 列存表
數(shù)據(jù)按列進行存儲,即一列所有數(shù)據(jù)是連續(xù)存儲的。單列查詢IO小,比行存表占用更少的存儲空間。適合數(shù)據(jù)批量插入、更新較少和以查詢?yōu)橹鹘y(tǒng)計分析類的場景。列存表不適合點查詢。
云數(shù)據(jù)庫GaussDB 行存表和列存表的選擇
|
特點
|
方案
|
|---|---|
更新頻繁程度 |
數(shù)據(jù)如果頻繁更新,選擇行存表。 |
插入頻繁程度 |
頻繁的少量插入,選擇行存表。一次插入大批量數(shù)據(jù),選擇列存表。 |
表的列數(shù) |
表的列數(shù)很多,選擇列存表。 |
查詢的列數(shù) |
如果每次查詢時,只涉及了表的少數(shù)(<50%總列數(shù))幾個列,選擇列存表。 |
壓縮率 |
列存表比行存表壓縮率高。但高壓縮率會消耗更多的CPU資源。 |
專題內(nèi)容推薦
活動對象:華為云電銷客戶及渠道伙伴客戶可參與消費滿送活動,其他客戶參與前請咨詢客戶經(jīng)理
活動時間: 2020年8月12日-2020年9月11日
活動期間,華為云用戶通過活動頁面購買云服務,或使用上云禮包優(yōu)惠券在華為云官網(wǎng)新購云服務,累計新購實付付費金額達到一定額度,可兌換相應的實物禮品。活動優(yōu)惠券可在本活動頁面中“上云禮包”等方式獲取,在華為云官網(wǎng)直接購買(未使用年中云鉅惠活動優(yōu)惠券)或參與其他活動的訂單付費金額不計入統(tǒng)計范圍內(nèi);