自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

DB2 并行版本中的查詢優(yōu)化登峰造極!

數(shù)據(jù)庫(kù)
以下的文章主要向大家講述的是DB2 并行版本中的查詢優(yōu)化的操作流程,以及對(duì)查詢優(yōu)化與查詢計(jì)劃生成、所有操作的并行化的內(nèi)容描述。

此文章主要向大家講述的是DB2 并行版本中的查詢優(yōu)化的操作步驟,同時(shí)本文也有對(duì)查詢優(yōu)化與查詢計(jì)劃生成、所有操作的并行化以及子查詢處理需要注意的問(wèn)題包括那些內(nèi)容的描述,以下就是文章的主要內(nèi)容講述。

查詢

 

1、簡(jiǎn)介

 

SN, GAMMA, BUBBA,

 

SM, XPRS

 

DB2 Parallel Edition(DB2 PE) 運(yùn)行于 AIX 并行機(jī)上,例如 SP2 等。它基于 SN 的體系結(jié)構(gòu)和 Function Shipping 執(zhí)行模型,提供了可擴(kuò)展性和大處理能力。基于代價(jià)優(yōu)化,其代價(jià)考慮了 CPU 、 IO 和消息傳遞。保證 ACID 特性,并行化的工具包括:

 

Load,Import,Reorganize Data,Create Index。還提供了一個(gè)并行數(shù)據(jù)重組織工具 Redistribute 有效的更正和處理負(fù)載不均衡。 Function shipping 指的是在數(shù)據(jù)存儲(chǔ)地點(diǎn)進(jìn)行相應(yīng)的數(shù)據(jù)操作,進(jìn)行必要的數(shù)據(jù)過(guò)濾,從而減少網(wǎng)絡(luò)之間傳遞的數(shù)據(jù)量。系統(tǒng)設(shè)置了服務(wù)協(xié)調(diào)者,負(fù)責(zé)接受用戶輸入的 SQL 語(yǔ)句、分發(fā)查詢執(zhí)行任務(wù)和返回最終結(jié)果。除此之外,需要做的工作有:

 

生成并行DB2 并行版本中的查詢執(zhí)行計(jì)劃、數(shù)據(jù)和控制流、進(jìn)程管理、并行事務(wù)和封鎖管理、并行工具。

 

支持 HASH 數(shù)據(jù)分片,擴(kuò)展了 DDL :

 

  1. CREATE NODEGROUP GROUP_1 ON ONODES(1 TO 32,40,45,48);   
  2. CREATE TABLE PARTS(Partkey integer, Partno integer) IN GROUP_1   
  3. PARTITIONING KEY(Partkey) USING HASHING;   
  4. CREATE TABLE PARTSUPP(Partkey integer, Suppkey integer) IN GROUP_1   
  5. PARTITIONING KEY(Partkey) USING HASHING;  

HASH 函數(shù)是系統(tǒng)內(nèi)置的。不同表在分片列上屬性值相同的元組被劃分到同一個(gè)結(jié)點(diǎn)。這樣的表稱為 collocated 。于是在這些表上的等值連接稱為 collocated joins 。例如 PARTSx (Partkey=Partkey) PARTSUPP 。

 

2 、查詢優(yōu)化

 

(1) 代價(jià)優(yōu)化——考慮了操作的固有并行性和消息通訊的代價(jià);

 

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

 

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

 

2.1 擴(kuò)展的操作符

 

系統(tǒng)可以利用串行版本的基本操作,例如 Scan 等,但是還需要擴(kuò)展:

 

(1) 用于控制多個(gè)子任務(wù)協(xié)同執(zhí)行的操作——協(xié)調(diào)者;

 

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

 

2.2 分片方法

 

DB2 的分片方法可以看作一個(gè)有效的負(fù)載均衡工具。優(yōu)化器充分利用分片和結(jié)點(diǎn)組的信息,優(yōu)化查詢,例如 collocated joins。

 

2.3 查詢優(yōu)化和查詢計(jì)劃生成

 

查詢優(yōu)化器所做的主要工作有: 1) 選擇優(yōu)化的連接次序, 2) 確定基本表的存取方法和連接方式, 3) 決定操作的執(zhí)行結(jié)點(diǎn),例如數(shù)據(jù)的重新分片, 4) 計(jì)算查詢執(zhí)行代價(jià)要考慮系統(tǒng)資源消耗和響應(yīng)時(shí)間。 DB2 PE 采用了簡(jiǎn)化的規(guī)則:

 

1) 在自底向上產(chǎn)生DB2 并行版本中的查詢執(zhí)行計(jì)劃的時(shí)候,累計(jì)每個(gè)結(jié)點(diǎn)所占用的系統(tǒng)資源,其中的***值作為系統(tǒng)響應(yīng)時(shí)間。忽略了協(xié)調(diào)者的執(zhí)行代價(jià),以及多進(jìn)程干擾的復(fù)雜性;

 

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

 

連接操作的執(zhí)行方法包括: collocated, directed, broadcast, repartitioned 。 directed join 指的是連接在一個(gè)輸入關(guān)系所在的節(jié)點(diǎn)進(jìn)行,而把另外一個(gè)關(guān)系的元組發(fā)送到適當(dāng)?shù)墓?jié)點(diǎn)(例如在一個(gè)輸入關(guān)系的分片屬性上做等值連接)。 repartitioned join 指的是重新分布輸入的連個(gè)關(guān)系,例如做等值連接時(shí)。 broadcat join 指的是在連接之前把其中一個(gè)關(guān)系的元組廣播到另一個(gè)關(guān)系所在的節(jié)點(diǎn)組,這可以對(duì)應(yīng)于任意類型的連接。

 

基于代價(jià)的優(yōu)化——兩階段優(yōu)化不再適合。數(shù)據(jù)分片和放置對(duì)查詢計(jì)劃的選擇有很大的影響。

 

2.4 所有操作的并行化

 

1、聚集操作——在各個(gè)子任務(wù)執(zhí)行聚集函數(shù),必要時(shí)在全局執(zhí)行***的處理。對(duì) Group By 子局來(lái)說(shuō),重新分片可能比直接采用輸入數(shù)據(jù)具有更好的并行性。

 

2、集合操作——采用 collocated, repartitioned 策略。注意 UNION 可以是一個(gè) N 元操作。

 

3、帶有子查詢的 Insert 語(yǔ)句, Update 和 Delete 語(yǔ)句—— Insert 語(yǔ)句和子查詢可能是 collocated ?;蛘卟捎?directing 方式。 Update 和 Delete 總是和相應(yīng)的查詢 collocated ( Update 如果發(fā)生在分片屬性上,還需要考慮重新分片受到影響的元組)。

 

4、外連接——主要的策略與普通的連接一致,但是要避免產(chǎn)生多個(gè)由于沒(méi)有匹配元組而產(chǎn)生的結(jié)果元組。

 

5、子查詢——把子查詢的結(jié)果發(fā)送到計(jì)算包含子查詢的謂詞的節(jié)點(diǎn)采用 collocated, directed, broadcast 方法。

 

3. 子查詢的處理

 

嵌套查詢的例子:

 

  1. select *  
  2. from t1  
  3. where t1.a in (select b   
  4. from t2   
  5. where t2.c = t1.a and t2.d in (select b   
  6. from t3   
  7. where t3.a = 10   
  8. ));  

最里面的子查詢只需要執(zhí)行一次即可。但是下面的查詢則不然:

 

  1. select *  
  2. from t1   
  3. where t1.a in ( select b   
  4. from t2   
  5. where t2.c = t1.a and t2.d in ( select b   
  6. from t3   
  7. where t3.a = t1.f   
  8. ));   

子查詢處理需要注意的問(wèn)題包括:

(1) 避免為每個(gè)外查詢產(chǎn)生的元組啟動(dòng)一個(gè)子DB2 并行版本中的查詢,這樣的代價(jià)太大了;

 

(2) 保證產(chǎn)生外查詢?cè)M的不同節(jié)點(diǎn)不會(huì)因?yàn)樽硬樵兊膱?zhí)行而串行化;

 

(3) 保證正確的外查詢節(jié)點(diǎn)得到執(zhí)行的結(jié)果;

 

(4) 盡量下移謂詞,從而減少數(shù)據(jù)的傳輸。

【編輯推薦】

  1. DB2在線備份,以及重定向恢復(fù)實(shí)戰(zhàn)演習(xí)!
  2. DB2數(shù)據(jù)庫(kù)備份,恢復(fù)命令的操作經(jīng)驗(yàn)總結(jié)
  3. DB2 Online備份的操作方案“盛宴”
  4. DB2重定向恢復(fù)失敗“水到渠成”
  5. 備份DB2數(shù)據(jù)庫(kù)在AIX上誰(shuí)說(shuō)很拽?

 

責(zé)任編輯:佚名 來(lái)源: 千家綜合布線網(wǎng)
相關(guān)推薦

2010-08-31 15:08:14

DB2INSERT優(yōu)化

2010-11-04 15:39:40

DB2 SQL語(yǔ)句

2011-03-21 09:51:04

DB2性能優(yōu)化

2010-09-30 15:52:55

DB2循環(huán)查詢

2011-05-27 16:00:10

DB2

2010-09-30 14:44:20

DB2遞歸查詢

2010-11-04 15:34:20

DB2索引優(yōu)化

2010-11-02 11:08:11

DB2循環(huán)查詢

2011-05-27 14:28:33

DB2

2010-08-02 16:38:39

DB2 UDB for

2011-05-27 15:24:28

DB2

2012-08-01 14:23:35

IBMdW

2010-08-17 17:29:06

DB2性能優(yōu)化

2010-08-19 14:54:07

DB2 優(yōu)化器

2010-09-30 14:48:26

DB2查詢

2010-09-01 11:39:17

DB2聚集目標(biāo)表

2010-09-30 15:29:56

DB2查詢管理

2010-09-06 16:16:20

DB2 優(yōu)化器

2013-01-18 10:44:30

IBMdW

2010-08-18 09:26:56

DB2性能調(diào)優(yōu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)