程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> DB2 並行版本中的查詢優化

DB2 並行版本中的查詢優化

編輯:關於MYSQL數據庫

1、簡介

SN, GAMMA, BUBBA,

SM, XPRS

DB2 Parallel Edition(DB2 PE) 運行於 AIX 並行機上,例如 SP2 等。它基於 SN 的體系結構和 Function Shipping 執行模型,提供了可擴展性和大處理能力。基於代價優化,其代價考慮了 CPU 、 IO 和消息傳遞。保證 ACID 特性,並行化的工具包括:

Load,Import,Reorganize Data,Create Index。還提供了一個並行數據重組織工具 Redistribute 有效的更正和處理負載不均衡。 Function shipping 指的是在數據存儲地點進行相應的數據操作,進行必要的數據過濾,從而減少網絡之間傳遞的數據量。系統設置了服務協調者,負責接受用戶輸入的 SQL 語句、分發查詢執行任務和返回最終結果。除此之外,需要做的工作有:

生成並行查詢執行計劃、數據和控制流、進程管理、並行事務和封鎖管理、並行工具。

支持 HASH 數據分片,擴展了 DDL :

CREATE NODEGROUP GROUP_1 ON ONODES(1 TO 32,40,45,48);

CREATE TABLE PARTS(Partkey integer, Partno integer) IN GROUP_1

PARTITIONING KEY(Partkey) USING HASHING;

CREATE TABLE PARTSUPP(Partkey integer, Suppkey integer) IN GROUP_1

PARTITIONING KEY(Partkey) USING HASHING;

HASH 函數是系統內置的。不同表在分片列上屬性值相同的元組被劃分到同一個結點。這樣的表稱為 collocated 。於是在這些表上的等值連接稱為 collocated joins 。例如 PARTSx (Partkey=Partkey) PARTSUPP 。

2 、查詢優化

(1) 代價優化——考慮了操作的固有並行性和消息通訊的代價;

(2) 綜合利用數據分布信息——利用基表和中間結果表的數據分布和分片信息;

(3) 透明的並行性——幾乎不需要從重寫查詢。

2.1 擴展的操作符

系統可以利用串行版本的基本操作,例如 Scan 等,但是還需要擴展:

(1) 用於控制多個子任務協同執行的操作——協調者;

(2) 進程間通訊操作 send/receive , send 可以是廣播或者單播, receive 可以是 merge 多個有序的輸入,也可以是 FIFO。

2.2 分片方法

DB2 的分片方法可以看作一個有效的負載均衡工具。優化器充分利用分片和結點組的信息,優化查詢,例如 collocated joins。

2.3 查詢優化和查詢計劃生成

查詢優化器所做的主要工作有: 1) 選擇優化的連接次序, 2) 確定基本表的存取方法和連接方式, 3) 決定操作的執行結點,例如數據的重新分片, 4) 計算查詢執行代價要考慮系統資源消耗和響應時間。 DB2 PE 采用了簡化的規則:

1) 在自底向上產生查詢執行計劃的時候,累計每個結點所占用的系統資源,其中的最大值作為系統響應時間。忽略了協調者的執行代價,以及多進程干擾的復雜性;

2) 在所有可能執行連接的節點子集中決定執行結點時,只考慮其中的一部分結點,例如內表分片所在的結點,外表分片所在的結點,以及其他的一些結點(沒有具體的說明)。由此簡化了計劃生成的搜索空間,保持在串行搜索空間的線性比例上。

連接操作的執行方法包括: collocated, directed, broadcast, repartitioned 。 directed join 指的是連接在一個輸入關系所在的節點進行,而把另外一個關系的元組發送到適當的節點(例如在一個輸入關系的分片屬性上做等值連接)。 repartitioned join 指的是重新分布輸入的連個關系,例如做等值連接時。 broadcat join 指的是在連接之前把其中一個關系的元組廣播到另一個關系所在的節點組,這可以對應於任意類型的連接。

基於代價的優化——兩階段優化不再適合。數據分片和放置對查詢計劃的選擇有很大的影響。

2.4 所有操作的並行化

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