日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
DB2并行版本中的查詢優(yōu)化登峰造極!

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

創(chuàng)新互聯(lián):自2013年創(chuàng)立以來為各行業(yè)開拓出企業(yè)自己的“網(wǎng)站建設(shè)”服務(wù),為上千家公司企業(yè)提供了專業(yè)的成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)頁設(shè)計(jì)和網(wǎng)站推廣服務(wù), 按需網(wǎng)站策劃由設(shè)計(jì)師親自精心設(shè)計(jì),設(shè)計(jì)的效果完全按照客戶的要求,并適當(dāng)?shù)奶岢龊侠淼慕ㄗh,擁有的視覺效果,策劃師分析客戶的同行競(jìng)爭(zhēng)對(duì)手,根據(jù)客戶的實(shí)際情況給出合理的網(wǎng)站構(gòu)架,制作客戶同行業(yè)具有領(lǐng)先地位的。

查詢

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ò)展性和大處理能力?;诖鷥r(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ù)過濾,從而減少網(wǎng)絡(luò)之間傳遞的數(shù)據(jù)量。系統(tǒng)設(shè)置了服務(wù)協(xié)調(diào)者,負(fù)責(zé)接受用戶輸入的 SQL 語句、分發(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) 透明的并行性——幾乎不需要從重寫查詢。

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)(沒有具體的說明)。由此簡(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 子局來說,重新分片可能比直接采用輸入數(shù)據(jù)具有更好的并行性。

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

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

4、外連接——主要的策略與普通的連接一致,但是要避免產(chǎn)生多個(gè)由于沒有匹配元組而產(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. ));   

子查詢處理需要注意的問題包括:

(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ù)的傳輸。


文章題目:DB2并行版本中的查詢優(yōu)化登峰造極!
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/dpshjss.html