版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
主講教師:魏巍巍北京信息職業(yè)技術(shù)學(xué)院數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用查詢處理算法創(chuàng)建采集任務(wù)01外部排序集合操作算法選擇操作算法010203目錄CONTENTS外部排序01關(guān)系的邏輯存儲(chǔ)結(jié)構(gòu)是二維表,表的元素是元組。不同的DBMS使用不同的物理存儲(chǔ)結(jié)構(gòu)存放關(guān)系。
一般地講,DBMS向操作系統(tǒng)申請(qǐng)若干個(gè)文件,把這些文件占用的磁盤(pán)空間作為一個(gè)整體進(jìn)行段頁(yè)式管理,一個(gè)頁(yè)面又叫做一塊(Block)。不同系統(tǒng)的塊的大小也不一樣,塊是DBMS的I/O單位。一個(gè)關(guān)系的元組被存儲(chǔ)在一個(gè)或多個(gè)塊中。外部排序?yàn)楸阌诿枋龊陀懻摚紫纫胍恍┯浱?hào)。用B(R)表示關(guān)系R占用的塊數(shù),用T(R)表示R中元組的數(shù)目,用V(R,A)表示關(guān)系R在屬性A上不同值的個(gè)數(shù)。
在查詢處理中,需要內(nèi)存和磁盤(pán)操作,由于磁盤(pán)I/O操作涉及機(jī)械動(dòng)作,需要的時(shí)間與內(nèi)存操作相比要高幾個(gè)數(shù)量級(jí)。因此,在評(píng)估查詢處理算法時(shí),一般用算法讀寫(xiě)的I/O塊數(shù)作為衡量單位。外部排序外部排序
排序是數(shù)據(jù)庫(kù)中最基本的操作之一。很多語(yǔ)句中執(zhí)行DISTINCT、GROUPBY和ORDERBY子句等都要使用排序操作。在數(shù)據(jù)庫(kù)環(huán)境下,排序操作對(duì)象的數(shù)量十分巨大,例如,對(duì)一個(gè)有幾百萬(wàn)元組的關(guān)系進(jìn)行排序就要使用外部排序算法。外部排序一個(gè)典型的外部排序算法分為內(nèi)部排序階段和歸并階段。其核心思想是根據(jù)內(nèi)存的大小,將存放在磁盤(pán)上待排序的關(guān)系邏輯上分為若干個(gè)段(run),一個(gè)段的大小以可使用的內(nèi)存大小為上限。在內(nèi)部排序階段,從磁盤(pán)上把一個(gè)段中的全部元組讀入內(nèi)存,使用我們熟悉的內(nèi)部排序算法,如快速排序,將這些元組排序,然后把它們寫(xiě)到磁盤(pán)臨時(shí)存放。處理完所有的段后,進(jìn)入歸并排序階段,采用多路歸并排序算法,經(jīng)過(guò)1趟或2趟歸并排序后,就完成對(duì)關(guān)系的排序。外部排序2000012王林……2000113張大民…2000278姜凡……2000256顧芳……2000014葛波……2000467……2000210……2000623……2000756……2000213……2000012……2000113……2000256……2000278……2000014……2000210……2000467……2000623……2000213……2000756……圖1對(duì)Student關(guān)系的內(nèi)部排序階段外部排序2000012
2000113
2000256
2000278
2000014
2000210
2000467
2000623
2000213
2000756
輸入緩沖區(qū)輸入緩沖區(qū)輸入緩沖區(qū)選擇算法輸出緩沖區(qū)圖2對(duì)Student關(guān)系的多路歸并階段200001220000142000113 20002102000213200025620002782000467 外部排序圖1是內(nèi)部排序示意圖,學(xué)號(hào)是排序?qū)傩裕僭O(shè)可用內(nèi)存大小為4個(gè)元組,10個(gè)元組分3次讀入內(nèi)存,排序后在磁盤(pán)上有3個(gè)有序的段。圖2是3路歸并示意圖,選擇算法從輸入緩沖區(qū)中選擇最小的學(xué)號(hào),把該學(xué)號(hào)所在的元組放到輸出緩沖區(qū),待緩沖區(qū)滿后,將緩沖區(qū)中的元組在輸出到磁盤(pán)。圖中為了節(jié)省空間,只給出了每個(gè)元組的學(xué)號(hào)屬性。一個(gè)輸入緩沖區(qū)和輸出緩沖區(qū)是一個(gè)或多個(gè)塊,選擇算法一般使用堆。外部排序如果可用內(nèi)存為M塊,則外部排序的I/O次數(shù)大約為:所有的DBMS都對(duì)外部排序算法進(jìn)行了最大限度的優(yōu)化,理論計(jì)算表明,對(duì)絕大數(shù)應(yīng)用而言,多路歸并階段只需要一趟即可。外部排序
集合操作算法02在SQL中,集合有兩種語(yǔ)義,即傳統(tǒng)的集合語(yǔ)義和包語(yǔ)義,二者的差別在于是否允許出現(xiàn)重復(fù)的元素。我們首先給出包語(yǔ)義的并、交和差運(yùn)算的定義。為了敘述方便,用記號(hào)tm表示元組t在集合中的出現(xiàn)次數(shù),m>0表示t重復(fù)出現(xiàn)了m次,m=0,表示t沒(méi)有出現(xiàn)在集合中。集合操作算法1.包并兩個(gè)集合R和S包并的結(jié)果要包含R和S中的所有元組,用公式表示為:
R∪BS={tm+n|tm
R∧tn
S}圖3中關(guān)系R和S中都有元組(a2,b2,c1),這個(gè)元組在結(jié)果中重復(fù)出現(xiàn)了2次。ABCABCABCa1b1c1a1b2c2a1b1c1a1b2c2∪Ba1b3c2a1b2c2a2b2c1a2b2c1a2b2c1a1b2c2a1b3c2a2b2c1
圖3包并運(yùn)算集合操作算法2.包交
在傳統(tǒng)的集合中,如果t∈R∩S,則t∈R并且t∈S,即如果t出現(xiàn)在交的結(jié)果中,t在R和S中至少各出現(xiàn)一次。包中允許元組重復(fù)出現(xiàn),因此,包交的定義如下:R∩BS={tk|tm
R∧tn
S,k=min(m,n)
}包交的例子如下圖所示:
集合操作算法圖4包交運(yùn)算
ABCa2b2c1a1b1c1a2b2c1a1b2c2a2b2c1R∩BABCa1b2c2a2b2c1a1b3c2a2b2c1SABCa1b2c2a2b2c1a2b2c1R∩S集合操作算法3.包差
差運(yùn)算類(lèi)似于并運(yùn)算,包差的定義為:R-B
S={tk|tmR∧tnS,k=max(0,m-n)}例如:ABCa1b1c1a1b2c2a1b1c1a2b2c1RABCa1b2c2a1b3c2a2b2c1SABCa1b1c1a1b1c1R-S-B圖5包差運(yùn)算集合操作算法采用的語(yǔ)義不同,實(shí)現(xiàn)集合操作的算法也不同。下面給出不同語(yǔ)義下集合并、交和差操作的算法。假設(shè)可用的內(nèi)存為M塊,參與操作的兩個(gè)關(guān)系是R和S,并且S為兩個(gè)關(guān)系中占用存儲(chǔ)空間較少的關(guān)系。一趟算法
如果滿足B(S)≤M–1的條件,則集合操作只需要讀關(guān)系R和S各一次,寫(xiě)結(jié)果關(guān)系一次,總的I/O次數(shù)等于2(B(R)+B(S)),這樣的算法叫做一趟算法。包語(yǔ)義下的操作不需要去除重復(fù)元組,實(shí)現(xiàn)起來(lái)相對(duì)簡(jiǎn)單集合操作算法集合并將S讀入內(nèi)存中的M-1個(gè)緩沖區(qū)建立一個(gè)查找結(jié)構(gòu),例如,二叉查找樹(shù)。Do把R的一個(gè)塊讀到第M個(gè)緩沖區(qū),對(duì)于這個(gè)緩沖區(qū)中的每個(gè)元組t,在查找結(jié)構(gòu)中查找是否有與t相同的元組,如果沒(méi)有,輸出t,否則,就不輸出。whileR中還有其它的塊輸出S的所有元組集合操作算法集合交
集合交的算法和集合并的算法不同之處在于,對(duì)于R的一個(gè)元組t,如果能在查找結(jié)構(gòu)中找到它,則輸出t,否則不輸出它。集合差
集合差是一種不可交換的操作,R-S不同于S-R。假設(shè)R為關(guān)系中較大的關(guān)系。在兩種情況下,將S讀到M-1個(gè)緩沖區(qū)中,建立查找結(jié)構(gòu)。
對(duì)于R-S,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度河北省高校教師資格證之高等教育學(xué)每日一練試卷A卷含答案
- 2024年度河北省高校教師資格證之高等教育心理學(xué)能力檢測(cè)試卷A卷附答案
- 2024年度江西省高校教師資格證之高等教育心理學(xué)高分通關(guān)題庫(kù)A4可打印版
- 2024年度江西省高校教師資格證之高等教育法規(guī)能力提升試卷A卷附答案
- 2024年機(jī)床手輪項(xiàng)目可行性研究報(bào)告
- 2024年拋光模具項(xiàng)目可行性研究報(bào)告
- 2024年場(chǎng)地使用權(quán)租賃協(xié)議
- 班級(jí)文化墻的創(chuàng)建與維護(hù)方案計(jì)劃
- 電信網(wǎng)絡(luò)故障應(yīng)急響應(yīng)方案
- 中學(xué)師德演講比賽方案
- 火電廠信息化建設(shè)規(guī)劃方案
- 10kV供配電系統(tǒng)電氣設(shè)備改造 投標(biāo)方案(技術(shù)方案)
- 南昌中科體檢報(bào)告查詢
- “中信泰富”事件的反思
- 微觀經(jīng)濟(jì)學(xué)課件
- 工業(yè)機(jī)器人系統(tǒng)運(yùn)維知識(shí)競(jìng)賽題庫(kù)及答案(100題)
- 智慧農(nóng)貿(mào)市場(chǎng)解決方案
- 北京市商業(yè)地產(chǎn)發(fā)展現(xiàn)狀
- 質(zhì)量管理五大工具之培訓(xùn)課件
- 海洋的形成與演變
- 銷(xiāo)售到營(yíng)銷(xiāo)的轉(zhuǎn)變
評(píng)論
0/150
提交評(píng)論