SAP HANA 管理員 - 表分割槽



使用分割槽,您可以將列儲存表分割成多個主機系統中的較小表。您甚至可以使用分割槽將表劃分為更小、更易於管理的部分。分割槽可以使用 DML SQL 語句完成。

當表被分割槽時,它包含每個部分的不同行集,並且可以基於不同的演算法進行分割槽——雜湊分割槽、單級或多級分割槽。

以下是使用表分割槽的好處:

分割槽剪枝

您可以確定是否可以在特定分割槽中分析查詢。使用此方法,您可以減少系統負載,從而提高響應時間。

示例 - 當您基於年份對錶進行分割槽時,將執行查詢以分析特定年份的資料。您可以使用特定分割槽,從而提高查詢效能。

負載均衡

您可以將各個分區劃分為多個主機,因此查詢不會由單個伺服器處理,從而在所有託管表分割槽的伺服器上實現更好的負載均衡。

大小限制

在列儲存表中,可以輸入的最大行數約為 20 億。您可以透過將列表的行分佈在多個分割槽上來克服此問題,因此每個分割槽的尺寸限制增加到 20 億。

改進的增量合併操作

在增量合併期間,如果僅修改某些分割槽的資料,則需要在增量合併中合併較少的分割槽。

查詢的並行處理

使用分割槽,您可以並行執行多個查詢,從而提高響應時間。

現在讓我們討論分割槽型別。

單級分割槽

SAP HANA 系統中提供了不同型別的單級分割槽:

  • 雜湊分割槽
  • 迴圈分割槽
  • 範圍分割槽

在雜湊分割槽中,行均勻分佈以執行負載均衡。在此分割槽型別中,您不需要有關表內容的詳細資訊。

與雜湊分割槽相比,在迴圈分割槽中,行均勻分佈到每個分割槽,新行均勻分配到每個分割槽。

要使用迴圈分割槽建立表的 4 個分割槽,您可以使用以下 SQL 查詢。不應定義主鍵。

CREATE COLUMN TABLE TABLENAME (a INT, b INT, c INT) 
PARTITION BY ROUNDROBIN PARTITIONS 4 

此命令將建立表的 4 個分割槽。

Command

CREATE COLUMN TABLE Table_Name (a INT, b INT, c INT, PRIMARY KEY (a,b)) 
PARTITION BY HASH (a, b) PARTITIONS 4 

這將在列ab上建立 4 個分割槽,您需要指定至少一列。

範圍分割槽

在範圍分割槽中,您為某些值建立專用分割槽,並且您應該對分割槽列的表內容有深入的瞭解。

示例 - 為每個日曆月份建立一個分割槽。

CREATE COLUMN TABLE TABLE_NAME (a INT, b INT, c INT, PRIMARY KEY (a,b)) 
PARTITION BY RANGE (a) 
(PARTITION 1 <= VALUES < 10, PARTITION 10 <= VALUES < 20, 
PARTITION VALUE = 50, PARTITION  OTHERS) 

這將建立 4 個分割槽,第一個分割槽範圍為 1 到 10,第二個分割槽範圍為 10 到 20,第三個分割槽值為 50,第四個分割槽為所有其他值。

多級分割槽

在多級分割槽中,您可以克服 HASH 和 RANGE 單級分割槽的限制,以使用關鍵列作為分割槽列。使用多級分割槽,您可以對不是主鍵的列進行分割槽。最常見的多級分割槽型別是HASH-Range 分割槽

在 Hash-Range 多級分割槽中,您在第一級實現雜湊分割槽以實現負載均衡,在第二級實現範圍分割槽以實現基於時間的分割槽。

CREATE COLUMN TABLE Table_name (a INT, b INT, c INT, PRIMARY KEY (a,b))
PARTITION BY HASH (a, b) PARTITIONS 4,
RANGE (c) (PARTITION 1 <= VALUES < 10, PARTITION 10 <= VALUES < 20) 

您可以使用迴圈分割槽代替在第一級使用雜湊分割槽,這被稱為迴圈-範圍多級分割槽

CREATE COLUMN TABLE Table_name (a INT, b INT, c INT) 
PARTITION BY ROUNDROBIN PARTITIONS 4,
RANGE (c) (PARTITION 1 <= VALUES < 10, PARTITION 10 <= VALUES < 20) 
廣告