程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2分區兼容性和並置的概念(2)

DB2分區兼容性和並置的概念(2)

編輯:DB2教程

並置

並置(collocation)是安置同一個數據庫分區中包含相關數據的不同表中的行。並置的表使 DB2 可以更有效地使用連接策略。

您可能會發現,作為對特定查詢的響應,兩個或多個表頻繁地提供數據。在此情況下,您會希望這樣的表中的相關數據的位置盡可能地靠近。在數據庫被物理地劃分為兩個或多個數據庫分區的環境中,必須有一種方法可將劃分的表的相關碎片盡可能地靠近。完成此過程的功能稱為表並置。

當存取用於連接或子查詢的多個表時,DB2(R) 通用數據庫(DB2 UDB)能夠識別要連接的數據是否位於相同數據庫分區上。於是 DB2 就可以在存儲數據的數據庫分區上執行連接或子查詢,而不必在數據庫分區之間移動數據。這種局部地執行連接或子查詢的能力具有顯著的性能優點。

要發生並置,表必須:

在相同數據庫分區組中,且這個數據庫分區組不能處在再分配期間。(在再分配期間,數據庫分區組中的表可能使用不同的分區映射 —— 它們不是並置的。)

有包含相同數量的列的分區鍵。

分區鍵的相應列是分區兼容的。

如果一個表在一個單分區數據庫分區組中,且該分區組是在另一個表所在的同一個分區上定義的,那麼也可以發生並置。

總結:

比如int, char, varchar之類能夠被散列的數據類型就是分區兼容性得,其他類似LOB, LF等類型不能被散列的就不是

對於並置,比如我有兩個表A,B,其中A包含列c1 int, c2 char,B包含c1 varchar, c2 int

然後表A按照c1分區,表B按照c2分區,也就是說,當用戶插入一行數據到表A,首先會對A.c1進行散列,然後模分區數量,把新的數據插入相應的分區,而對於表B則是對B.c2進行相同算法散列。

這樣當查詢select * from c1,c2 where A.c1=B.c2的時候,由於A.c1和B.c2的數據類型相同,使用相同的散列算法,如果A.c1與B.c2相等,那麼他們肯定在同一分區,這樣的話進行join的時候就不需要再分區間移動數據,只需要在本分區join完後向coord partition返回數據。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved