




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
會(huì)計(jì)學(xué)1chap數(shù)據(jù)庫存儲(chǔ)實(shí)用物理存儲(chǔ)介質(zhì)第1頁/共204頁物理存儲(chǔ)介質(zhì)高速緩沖存儲(chǔ)器(cache)最快最昂貴的存儲(chǔ)介質(zhì)很小,由操作系統(tǒng)管理主存儲(chǔ)器(mainmemory)存放可被處理的數(shù)據(jù)的存儲(chǔ)介質(zhì)易失,相對(duì)整個(gè)數(shù)據(jù)庫太小快閃存儲(chǔ)器(flashmemory)讀性能類似主存,寫速度非常慢電子可擦除可編程只讀存儲(chǔ)器(ElectricallyErasableProgrammableRead-OnlyMemory)第2頁/共204頁物理存儲(chǔ)介質(zhì)磁盤存儲(chǔ)器(Magnetic-diskstorage)直接讀取設(shè)備,支持隨機(jī)讀取非易失聯(lián)機(jī)數(shù)據(jù)存儲(chǔ)設(shè)備訪問數(shù)據(jù)時(shí),磁盤內(nèi)存;修改后的數(shù)據(jù),內(nèi)存磁盤光學(xué)存儲(chǔ)器(Opticalstorage)只讀(CD-ROM)、一次寫多次讀(WORM)、多次寫(CD-RW)磁帶(tape)順序訪問,歸檔存儲(chǔ),容量大,價(jià)格便宜第3頁/共204頁磁盤第4頁/共204頁磁盤基本構(gòu)成盤片(platter)、磁道(track)、扇區(qū)(sector)、柱面(cylinder)讀寫頭(read-writehead):反轉(zhuǎn)磁性物質(zhì)磁化的方向磁盤臂(diskarm)磁盤控制器(diskcontroller):接受讀寫扇區(qū)命令,定位讀寫頭。向扇區(qū)寫入數(shù)據(jù)時(shí)附加校驗(yàn)和(checksum),讀取時(shí)重新計(jì)算校驗(yàn)和第5頁/共204頁磁盤扇區(qū)(sector)是盤片的最小可尋址單元,每個(gè)扇區(qū)可容納512字節(jié)的數(shù)據(jù),也叫磁盤塊。扇區(qū)會(huì)被集合成簇(cluster),簇也叫數(shù)據(jù)塊,操作系統(tǒng)通常以數(shù)據(jù)塊為單位對(duì)硬盤進(jìn)行讀寫。磁道(track)在同一個(gè)盤片上以同心圓方式排列的扇區(qū)構(gòu)成一個(gè)磁道,磁道的扇區(qū)數(shù)隨同心圓的半徑而變化,越靠外的磁道的扇區(qū)數(shù)越多。柱面(cylinder)各盤片上位于同一位置的磁道構(gòu)成一個(gè)柱面。構(gòu)成硬盤的每個(gè)碟片都被劃分為數(shù)目相等的磁道,并從外緣的“0”開始編號(hào),具有相同編號(hào)的磁道形成一個(gè)圓柱,稱之為磁盤的柱面。因此硬盤的柱面數(shù)和一個(gè)碟片上的磁道數(shù)是相同的。第6頁/共204頁磁盤磁盤性能度量訪問時(shí)間:從發(fā)出讀寫請(qǐng)求到數(shù)據(jù)開始傳輸之間的時(shí)間。為到達(dá)指定扇區(qū),需要先移動(dòng)磁盤臂,定位到正確的磁道,然后旋轉(zhuǎn)磁盤,直到指定的扇區(qū)出現(xiàn)在讀寫頭下方尋道時(shí)間(seektime):磁盤臂重定位時(shí)間,取決于目標(biāo)磁道和磁盤臂當(dāng)前距離,2~30毫秒。平均尋道時(shí)間是最大尋道時(shí)間的1/3旋轉(zhuǎn)等待時(shí)間(rotationallatencytiime):目標(biāo)扇區(qū)旋轉(zhuǎn)到讀寫頭下面的時(shí)間,每轉(zhuǎn)在4~11毫秒之間。平均旋轉(zhuǎn)時(shí)間是旋轉(zhuǎn)一周的1/2數(shù)據(jù)傳輸率(data-transferrate),25~100兆/秒第7頁/共204頁磁盤訪問優(yōu)化磁盤塊的大小小,更多的磁盤傳輸次數(shù);大,空間浪費(fèi)調(diào)度塊在一個(gè)柱面上,按塊經(jīng)過讀寫頭的順序訪問;塊在不同柱面上,按使磁盤臂移動(dòng)距離最短的順序訪問電梯算法文件組織按與預(yù)期數(shù)據(jù)訪問方式最接近的方式組織磁盤塊碎片整理日志磁盤順序?qū)?,消除了尋道時(shí)間第8頁/共204頁磁盤的性能指標(biāo)(1)容量磁盤上信息的存儲(chǔ)是以同心圓的形式排列的,每一個(gè)圓稱為一個(gè)磁道。半徑方向單位長(zhǎng)度內(nèi)的磁道數(shù)目稱為道密度Dt,沿圓周單位長(zhǎng)度上的信息比特?cái)?shù)稱為位密度Db,道密度與位密度的乘積叫做面密度Da,即Da=Dt×Db。Da越大表明一個(gè)盤片上能存儲(chǔ)的信息量就越大。但面密度的提高會(huì)使相鄰磁道間的數(shù)據(jù)干擾加大,磁頭在磁道上進(jìn)行數(shù)據(jù)讀寫時(shí)易發(fā)生偏離,差錯(cuò)機(jī)率增大。目前最新的垂直級(jí)化技術(shù)可有效地降低干擾因素。硬盤的容量與碟片數(shù)、面密度關(guān)系密切,這兩項(xiàng)數(shù)值越大則容量越大。但是碟片數(shù)的增加會(huì)使硬盤體積增厚,因此單碟容量的大小直接關(guān)系到整個(gè)硬盤容量的大小,但隨著磁碟密度的提高,磁頭就必須隨之越來越靈敏。第9頁/共204頁磁盤的性能指標(biāo)(2)轉(zhuǎn)速轉(zhuǎn)速是磁盤所有指標(biāo)中除了容量之外最引人注目的性能參數(shù),以每分鐘多少轉(zhuǎn)(RPM)為單位。轉(zhuǎn)速對(duì)于硬盤傳輸速度和持續(xù)傳輸速度至關(guān)重要,轉(zhuǎn)速越快,硬盤取得及傳送數(shù)據(jù)的速度也就越快。目前,硬盤轉(zhuǎn)速大致有4200RPM、5400RPM、7200RPM、10000RPM和15000RPM。第10頁/共204頁磁盤的性能指標(biāo)(4)緩存緩存也是磁盤相當(dāng)重要的一個(gè)參數(shù),其大小也會(huì)直接影響到磁盤的整體性能。在數(shù)據(jù)的讀取過程中,硬盤里的控制芯片發(fā)出指令,將系統(tǒng)指令正在讀取的簇的相鄰的下一個(gè)或幾個(gè)簇的數(shù)據(jù)讀入硬盤高速緩存。這樣,當(dāng)系統(tǒng)指令開始要讀取下一個(gè)簇的數(shù)據(jù)的時(shí)候,硬盤便不需要重新開始一個(gè)讀取動(dòng)作,只需要將緩存中的數(shù)據(jù)傳送到系統(tǒng)主存中去就行了。因此緩存容量的加大可以容納更多的預(yù)讀數(shù)據(jù),這樣大大縮短系統(tǒng)等待的時(shí)間。目前主流硬盤的緩存通常為8MB和16MB。第11頁/共204頁磁盤的性能指標(biāo)(5)傳輸速率傳輸速率分為內(nèi)傳輸速率與外傳輸速率。內(nèi)傳輸速率是從硬盤到緩存的傳輸速度,外傳輸速率是從緩存到通信接口的傳輸速度。內(nèi)傳輸速率更能反映硬盤的實(shí)際表現(xiàn),通常以每秒MB為單位。目前,主流硬盤的傳輸速度通常為50~100MB/S。第12頁/共204頁磁盤的性能指標(biāo)(3)平均尋道時(shí)間平均尋道時(shí)間指的是磁頭到達(dá)目標(biāo)數(shù)據(jù)所在磁道的平均時(shí)間,它直接影響硬盤的隨機(jī)數(shù)據(jù)存取速度。影響平均尋道時(shí)間的主要決定因素是磁頭讀寫臂的運(yùn)行速度,另外也跟單碟容量有關(guān)。單碟容量越高說明單碟的磁道數(shù)越多,磁道數(shù)的增加意味著磁道間距離的縮短,而磁頭從一個(gè)磁道轉(zhuǎn)移到另一個(gè)磁道所需的就位時(shí)間就會(huì)縮短,這將有助于隨機(jī)數(shù)據(jù)傳輸速度的提高。而磁道內(nèi)線性磁密度的增加則和硬盤的持續(xù)數(shù)據(jù)傳輸速度有著直接的聯(lián)系,磁頭技術(shù)的發(fā)展確保了這個(gè)增長(zhǎng)不會(huì)因?yàn)榇蓬^的靈敏度的限制而放慢速度。所以在很多時(shí)候,更高單碟容量的5400RPM硬盤會(huì)比單碟容量較低的7200RPM硬盤速度更加快。目前硬盤平均尋道時(shí)間大約在10ms左右。第13頁/共204頁磁盤調(diào)度(1)FCFS(先來先服務(wù))調(diào)度
先查找先進(jìn)入服務(wù)列隊(duì)的數(shù)據(jù)。例:假設(shè)磁道數(shù)為0——199,我們申請(qǐng)調(diào)度的盤塊兒分別在98,183,37,122,14,124,65,67磁道上。當(dāng)前硬盤磁頭在第53號(hào)磁道。按照FCFS順序:磁頭從53號(hào)磁道開始移動(dòng),按照98,183,37,122,14,124,65,67的順序依次查找,并將數(shù)據(jù)輸入內(nèi)存。
第14頁/共204頁磁盤調(diào)度(2)SSTF(最短查找時(shí)間優(yōu)先)調(diào)度
考慮了各個(gè)請(qǐng)求之間的區(qū)別,總是先執(zhí)行查找時(shí)間最短的那個(gè)請(qǐng)求。磁頭從53號(hào)磁道開始移動(dòng),按照65,67,37,14,98,122,124,183的順序依次查找,并將數(shù)據(jù)輸入內(nèi)存。
第15頁/共204頁磁盤調(diào)度(3)SCAN(掃描)調(diào)度
此種調(diào)度算法為磁臂由磁盤的一端開始,移動(dòng)到磁盤的另一端,在移動(dòng)過程中,為訪問請(qǐng)求服務(wù)。然后調(diào)轉(zhuǎn)方向,從此端移動(dòng)到另一端。磁頭從53號(hào)磁道開始移動(dòng),按照37,14,0,65,67,98,122,124,183,199的順序依次查找,并將數(shù)據(jù)輸入內(nèi)存。第16頁/共204頁磁盤調(diào)度(4)C-SCAN(環(huán)形掃描)調(diào)度
移動(dòng)臂總是從0號(hào)柱面至最大號(hào)柱面順序掃描,然后返回0號(hào)柱面重復(fù)進(jìn)行。磁頭從53號(hào)磁道開始移動(dòng),按照65,67,98,122,124,183,199,0,14,37的順序依次查找(其中從199——0的過程中不做任何操作只是快速的移動(dòng)),并將數(shù)據(jù)輸入內(nèi)存。
第17頁/共204頁磁盤調(diào)度(5)LOOK(查找)調(diào)度(電梯)電梯算法。磁臂僅移動(dòng)到請(qǐng)求的最外道就回轉(zhuǎn)。反方向查找服務(wù)。磁頭從53號(hào)磁道開始移動(dòng),按照65,67,98,122,124,183,14,37的順序依次查找,并將數(shù)據(jù)輸入內(nèi)存。第18頁/共204頁RAID廉價(jià)磁盤冗余陣列(RAID)RedundantArraysofInexpensiveDisks是一種利用大量廉價(jià)磁盤進(jìn)行磁盤組織的技術(shù)價(jià)格上,大量廉價(jià)的磁盤比少量昂貴的大磁盤合算得多性能上,使用大量磁盤可以提高數(shù)據(jù)的并行存取可靠性上,冗余數(shù)據(jù)可以存放在多個(gè)磁盤上,因此一個(gè)磁盤的故障不會(huì)導(dǎo)致數(shù)據(jù)丟失過去RAID是大而昂貴的磁盤的替代方法;今天,使用RAID是因?yàn)樗母呖煽啃院透邤?shù)據(jù)傳輸率;因此
“I”
代表independent,而非inexpensive第19頁/共204頁RAID通過冗余提高可靠性N個(gè)磁盤組成的集合中某個(gè)磁盤發(fā)生故障的概率比特定的單個(gè)磁盤發(fā)生故障的概率高很多假定單個(gè)磁盤的MTTF是100,000小時(shí)(約為11年),則由100個(gè)磁盤組成的陣列的MTTF是1000小時(shí)(約為41天)冗余(Redundancy)存儲(chǔ)額外的信息,以便當(dāng)磁盤故障時(shí)能從中重建MTTF(
Mean
Time
To
Failure)
平均失效等待時(shí)間第20頁/共204頁RAID鏡像(Mirroringorshadowing)一個(gè)邏輯磁盤由兩個(gè)物理磁盤組成,寫操作在每個(gè)磁盤上執(zhí)行如果其中一個(gè)發(fā)生故障,數(shù)據(jù)可以從另一個(gè)磁盤讀出只有第一個(gè)磁盤的故障尚未恢復(fù),第二個(gè)磁盤也發(fā)生故障,這時(shí)才會(huì)發(fā)生數(shù)據(jù)丟失假定一個(gè)磁盤的MTTF是100,000小時(shí),修復(fù)時(shí)間是10小時(shí),則鏡像磁盤系統(tǒng)的MTTF是100,0002/(2*10)=500*106小時(shí),約為57000年第21頁/共204頁RAID通過并行提高性能負(fù)載平衡多個(gè)小的存取操作(即頁面存取),以提高這種存取操作的吞吐量并行執(zhí)行大的存取操作,以減少大的存取操作的響應(yīng)時(shí)間通過在多個(gè)磁盤上對(duì)數(shù)據(jù)進(jìn)行拆分來提高傳輸率比特級(jí)拆分(Bit-levelstriping)將每個(gè)字節(jié)按比特分開,存儲(chǔ)到多個(gè)磁盤上例如,對(duì)于一個(gè)由8個(gè)磁盤組成的陣列,將每個(gè)字節(jié)的第i個(gè)比特位寫到第i個(gè)磁盤上;它的存取速度是單個(gè)磁盤的8倍對(duì)于由4個(gè)磁盤組成的陣列,將每個(gè)字節(jié)的第i個(gè)比特位和第i+4個(gè)比特位寫到第i個(gè)磁盤上塊級(jí)拆分(Block-levelstriping)對(duì)于由n個(gè)磁盤構(gòu)成的陣列,文件的第i塊存放在第(imodn)+1個(gè)磁盤上第22頁/共204頁RAIDRAID級(jí)別鏡像提供高可靠性,拆分提供高數(shù)據(jù)傳輸率,通過利用與奇偶校驗(yàn)相結(jié)合的磁盤拆分想法,可以實(shí)現(xiàn)以較低成本提供冗余的方案不同的RAID級(jí)別,具有不同的代價(jià)、性能和可靠性CP代表數(shù)據(jù)的第二個(gè)拷貝表示糾錯(cuò)位第23頁/共204頁RAID0塊級(jí)拆分且沒有任何冗余(如鏡像或奇偶校驗(yàn)位)的磁盤陣列容錯(cuò)性:沒有冗余類型:沒有 讀性能:高 隨機(jī)寫性能:高連續(xù)寫性能:高 需要的磁盤數(shù):1個(gè)或多個(gè) 可用容量:總的磁盤的容量用于高性能訪問并且數(shù)據(jù)丟失不十分重要的應(yīng)用場(chǎng)合,無故障的迅速讀寫,要求安全性不高,如圖形工作站等。RAID0:無冗余拆分第24頁/共204頁RAID1帶塊級(jí)拆分的磁盤鏡像容錯(cuò)性:有冗余類型:復(fù)制 讀性能:低 隨機(jī)寫性能:低連續(xù)寫性能:低 需要的磁盤數(shù):只需2個(gè)或2*N個(gè) 可用容量:只能用磁盤容量的50%一般用于類似于數(shù)據(jù)庫系統(tǒng)中日志文件存儲(chǔ)的應(yīng)用場(chǎng)合。隨機(jī)數(shù)據(jù)寫入,要求安全性高,如服務(wù)器、數(shù)據(jù)庫存儲(chǔ)領(lǐng)域。RAID1:無冗余拆分CCCC第25頁/共204頁漢明碼漢明碼是一個(gè)在原有數(shù)據(jù)中插入若干校驗(yàn)碼來進(jìn)行錯(cuò)誤檢查和糾正的編碼技術(shù)。以典型的4位數(shù)據(jù)編碼為例,漢明碼將加入3個(gè)校驗(yàn)碼,從而使實(shí)際傳輸?shù)臄?shù)據(jù)位達(dá)到7個(gè)(位):第26頁/共204頁漢明碼例:若數(shù)據(jù)碼1101,此時(shí)D8=1、D4=1、D2=0、D1=1,在P1編碼時(shí),先將D8、D4、D1的二進(jìn)制碼相加,結(jié)果為奇數(shù)3,漢明碼對(duì)奇數(shù)結(jié)果編碼為1,偶數(shù)結(jié)果為0,因此P1值為1,D8+D2+D1=2,為偶數(shù),那么P2值為0,D4+D2+D1=2,為偶數(shù),P3值為0。參照位置表,漢明碼處理的結(jié)果就是1010101。在這里漢明碼都是以三個(gè)數(shù)據(jù)碼為基準(zhǔn)進(jìn)行編碼的。圖示就是它們的對(duì)應(yīng)表:第27頁/共204頁漢明碼在校驗(yàn)時(shí)則把每個(gè)漢明碼與各自對(duì)應(yīng)的數(shù)據(jù)位值相加,如果結(jié)果為偶數(shù)就是正確,如果為奇數(shù)則說明當(dāng)前漢明碼所對(duì)應(yīng)的三個(gè)數(shù)據(jù)位中有錯(cuò)誤,此時(shí)再通過其他兩個(gè)漢明碼各自的運(yùn)算來確定具體是哪個(gè)位出了問題。1101,正確的編碼為1010101,如果第三個(gè)數(shù)據(jù)位在傳輸途中因干擾而變成了1,就成了1010111。檢測(cè)時(shí),P1+D8+D4+D1的結(jié)果是偶數(shù)4,第一位糾錯(cuò)代碼為0,正確。P1+D8+D2+D1的結(jié)果是奇數(shù)3,第二位糾錯(cuò)代碼為1,錯(cuò)誤。P3+D4+D2+D1的結(jié)果是奇數(shù)3,第三位糾錯(cuò)代碼為1,錯(cuò)誤。那么具體是哪個(gè)位有錯(cuò)誤呢?三個(gè)糾錯(cuò)代碼從高到低排列為二進(jìn)制編碼110,換算成十進(jìn)制就是6,也就是說第6位數(shù)據(jù)錯(cuò)了,而數(shù)據(jù)第三位在漢明碼編碼后的位置正好是第6位。
第28頁/共204頁漢明碼漢明碼的數(shù)量與數(shù)據(jù)位的數(shù)量之間的關(guān)系:2P≥P+D+1,其中P代表漢明碼的個(gè)數(shù),D代表數(shù)據(jù)位的個(gè)數(shù)。4位數(shù)據(jù)需要3位漢明碼(23≥
4+3+1),64位數(shù)據(jù)需要7位漢明碼(27≥
64+7+1。漢明碼加插的位置也是有規(guī)律的。漢明碼的插入位置為1、2、4、8、16……
第29頁/共204頁RAID2在RAID2中,一個(gè)硬盤在一個(gè)時(shí)間只存取一位的信息。左邊的為數(shù)據(jù)陣列,右邊的陣列則是存儲(chǔ)相應(yīng)的漢明碼,也是一位一個(gè)硬盤。所以RAID2中的硬盤數(shù)量取決于所設(shè)定的數(shù)據(jù)存儲(chǔ)寬度。在寫入時(shí),RAID2在寫入數(shù)據(jù)位同時(shí)還要計(jì)算出它們的漢明碼并寫入校驗(yàn)陣列,讀取時(shí)也要對(duì)數(shù)據(jù)即時(shí)進(jìn)行校驗(yàn)。漢明碼只能糾正一個(gè)位的錯(cuò)誤,所以RAID2也只能允許一個(gè)硬盤出問題,如果兩個(gè)或以上的硬盤出問題,RAID2的數(shù)據(jù)就將受到破壞。但由于數(shù)據(jù)是以位為單位并行傳輸,所以傳輸率也相當(dāng)快。RAID2是早期為了能進(jìn)行即時(shí)的數(shù)據(jù)校驗(yàn)而研制的一種技術(shù),針對(duì)了當(dāng)時(shí)對(duì)數(shù)據(jù)即時(shí)性非常敏感的領(lǐng)域,如、金融服務(wù)等。但由于花費(fèi)太大(數(shù)據(jù)位寬越大,用于校驗(yàn)陣列的相對(duì)投資就會(huì)越小,4:3與64:7),成本昂貴,目前已基本不再使用,轉(zhuǎn)而以更高級(jí)的即時(shí)檢驗(yàn)RAID所代替,如RAID3、5等。PPP第30頁/共204頁RAID2RAID2使用共軸同步(spindlesynchronize)技術(shù),存取數(shù)據(jù)時(shí),整個(gè)磁盤陣列一起動(dòng)作,在各個(gè)磁盤的相同位置作平行存取,有最好的存取時(shí)間(accesstime),以大帶寬(bandwide)并行傳輸所存取的數(shù)據(jù),有最好的傳輸時(shí)間(transfertime)對(duì)于大型檔案的存取應(yīng)用,RAID2有較好的性能,但如果檔案太小,性能會(huì)下降,因?yàn)榇疟P的存取是以扇區(qū)為單位,而RAID2的存取是所有磁盤平行動(dòng)作,故小于一個(gè)扇區(qū)的數(shù)據(jù)量會(huì)使其性能大打折扣RAID2適合于存取連續(xù)且大量數(shù)據(jù)的應(yīng)用,如大型電腦、作影像處理或CAD/CAM的工作站等第31頁/共204頁RAID3Paralleltransferwithparity(并行傳輸及校驗(yàn))
RAID3是在RAID2基礎(chǔ)上發(fā)展而來的,主要的變化是用相對(duì)簡(jiǎn)單的異或邏輯運(yùn)算(XOR,eXclusiveOR)校驗(yàn)代替了相對(duì)復(fù)雜的漢明碼校驗(yàn),從而也大幅降低了成本。RAID3效果與RAID2一樣,但只有一個(gè)磁盤的額外開銷P第32頁/共204頁RAID3RAID3校驗(yàn)盤只有一個(gè),而數(shù)據(jù)與RAID0一樣是分成條帶存入數(shù)據(jù)陣列中,這個(gè)條帶的深度的單位為字節(jié)而不是bit。在數(shù)據(jù)存入時(shí),數(shù)據(jù)陣列中處于同一等級(jí)的條帶的XOR校驗(yàn)編碼被即時(shí)寫在校驗(yàn)盤相應(yīng)的位置,所以彼此不會(huì)干擾混亂。讀取時(shí),則在調(diào)出條帶的同時(shí)檢查校驗(yàn)盤中相應(yīng)的XOR編碼,進(jìn)行即時(shí)的ECC。由于在讀寫時(shí)與RAID0很相似,所以RAID3具有很高的數(shù)據(jù)傳輸效率。RAID3在RAID2基礎(chǔ)上成功地進(jìn)行結(jié)構(gòu)與運(yùn)算的簡(jiǎn)化,曾受到廣泛的歡迎,并大量應(yīng)用。直到更為先進(jìn)高效的RAID5出現(xiàn)后,RAID3才開始慢慢退出市場(chǎng)。第33頁/共204頁RAID3D111110000D210101010D300111000D111110000D2????????D300111000D401100010D210101010故障恢復(fù)D401100010生成校驗(yàn)盤第34頁/共204頁RAID3D210101010D4’00000100寫操作D2’11001100D111110000D2’11001100D300111000讀D1,D3,寫D2,D4D210101010D2’1100110001100110D401100010讀D2,D4,寫D2,D4第35頁/共204頁RAID4IndependentDatadiskswithsharedParitydisk(獨(dú)立的數(shù)據(jù)硬盤與共享的校驗(yàn)硬盤)與RAID3相比,關(guān)鍵之處是把條帶改成了“塊”。即RAID4是按數(shù)據(jù)塊為單位存儲(chǔ)的。一個(gè)數(shù)據(jù)塊是一個(gè)完整的數(shù)據(jù)集合,比如一個(gè)文件就是一個(gè)典型的數(shù)據(jù)塊。按塊存儲(chǔ)可以保證塊的完整,不受因分條帶存儲(chǔ)在其他硬盤上而可能產(chǎn)生的不利影響(比如當(dāng)多個(gè)硬盤損壞)。在不同硬盤上的同級(jí)數(shù)據(jù)(在每個(gè)硬盤中同一柱面同一扇區(qū)位置的數(shù)據(jù))塊也通過XOR進(jìn)行校驗(yàn),結(jié)果保存在單獨(dú)的校驗(yàn)盤。在寫入時(shí),RAID把各硬盤上同級(jí)數(shù)據(jù)的校驗(yàn)統(tǒng)一寫入校驗(yàn)盤,讀取時(shí)再即時(shí)進(jìn)行校驗(yàn)。因此即使是當(dāng)前硬盤上的數(shù)據(jù)塊損壞,也可以通過XOR校驗(yàn)值和其他硬盤上的同級(jí)數(shù)據(jù)進(jìn)行恢復(fù)。RAID4在寫入時(shí)要等一個(gè)硬盤寫完后才能寫一下個(gè),還要寫入校驗(yàn)數(shù)據(jù)所以寫入效率比較差,讀取時(shí)也是一個(gè)硬盤一個(gè)硬盤的讀,但校驗(yàn)迅速,所以相對(duì)速度很快。RAID4:塊交叉奇偶校驗(yàn)P第36頁/共204頁RAID4D210101010D300111000D401100010D111110000第37頁/共204頁RAID4D210101010D300111000D401100010讀數(shù)據(jù):一種潛在的并行假定D1忙,其余磁盤空閑D111110000第38頁/共204頁RAID4第39頁/共204頁RAID5將數(shù)據(jù)和奇偶校驗(yàn)位都分布到所有的N+1個(gè)磁盤上;對(duì)每個(gè)塊,一個(gè)磁盤存儲(chǔ)奇偶校驗(yàn)位,其余磁盤存儲(chǔ)數(shù)據(jù)例如由5個(gè)磁盤組成的陣列,第n塊的奇偶校驗(yàn)位存儲(chǔ)在第(nmod5)+1上,其余4個(gè)磁盤的第n塊存儲(chǔ)了對(duì)應(yīng)這個(gè)塊的實(shí)際數(shù)據(jù)奇偶校驗(yàn)塊不能和這個(gè)塊對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)在同一個(gè)磁盤上所有磁盤都參與對(duì)讀請(qǐng)求的服務(wù),而RAID4中奇偶校驗(yàn)磁盤不參與讀操作RAID5包容了RAID4,同時(shí)在相同成本下,提供了更好的讀寫性能RAID5:塊交叉的分布奇偶校驗(yàn)PPPPP第40頁/共204頁RAID6D1D2D3D4D5D6D7111010011010101011001HammingcodeD5對(duì)應(yīng)D1,D2,D3D6對(duì)應(yīng)D1,D2,D4D7對(duì)應(yīng)D1,D3,D4第41頁/共204頁RAID6D111110000D210101010D300111000D401000001生成校驗(yàn)盤D501100010D600011011D710001001第42頁/共204頁RAID6D111110000D2????????D300111000D401000001D5????????D600011011D710001001故障恢復(fù)取D1,D4,D6D210101010取D1,D2,D3D501100010第43頁/共204頁RAID6寫操作D210101010D2’00001111D210101010D2’0000111110100101D501100010D600011011D6‘10111110D5‘11000111第44頁/共204頁高性能可靠性差最佳寫性能開銷大高數(shù)據(jù)傳輸率大數(shù)據(jù)量高的總I/O率適合隨機(jī)讀大數(shù)據(jù)量高可靠性第45頁/共204頁選擇合適的RAID級(jí)別RAID0是最快,最有效率的陣列類型,但是不支持容錯(cuò)功能。
RAID1適合性能要求較高又需要容錯(cuò)功能的陣列。另外,RAID1是在只有少于2個(gè)磁盤的環(huán)境下支持容錯(cuò)功能的唯一選擇。
RAID3被用在數(shù)據(jù)加強(qiáng)和加速單用戶對(duì)連續(xù)的長(zhǎng)記錄時(shí)的數(shù)據(jù)傳輸。
RAID5是在多用戶,對(duì)數(shù)據(jù)寫入的性能要求不高的環(huán)境下的最好選擇。然而,它要求至少3個(gè),通常使用5個(gè)磁盤來執(zhí)行。
RAID10集良好的可靠性和高性能于一身.第46頁/共204頁選擇合適的RAID級(jí)別RAID0無冗余拆分RAID1鏡像RAID5拆分+校驗(yàn)碼RAID10拆分+鏡像第47頁/共204頁選擇合適的RAID級(jí)別第48頁/共204頁選擇合適的RAID級(jí)別第49頁/共204頁選擇合適的RAID級(jí)別日志文件RAID1容錯(cuò),高寫輸出率臨時(shí)文件RAID0isappropriate.無容錯(cuò),高吞吐率數(shù)據(jù)以及索引文件RAID5適合于讀為主的應(yīng)用RAID10適合于寫為主的應(yīng)用第50頁/共204頁磁盤還是內(nèi)存保持常用數(shù)據(jù)在內(nèi)存,可以減少磁盤I/O,但增加內(nèi)存代價(jià)若一個(gè)頁面每秒被訪問n次,將它駐留在內(nèi)存節(jié)省保持一個(gè)頁面在內(nèi)存的代價(jià)n*price-per-disk-driveaccesses-per-second-per-diskprice-per-MB-of-memorypages-per-MB-of-memory第51頁/共204頁磁盤還是內(nèi)存5-minuterule:如果一個(gè)被隨機(jī)訪問的頁面的使用頻率超過每5分鐘一次,那么它應(yīng)該被駐留在內(nèi)存1-minuterule:如果被順序訪問的頁面的使用頻率超過每1分鐘一次,那么它應(yīng)該被駐留在內(nèi)存price-per-disk-drive=2000$/diskaccesses-per-second-per-disk=64accesses/second/diskprice-per-MB-of-memory=15$/MB_RAMpages-per-MB-of-memory=128pages/MB2000*128/15/64/=266第52頁/共204頁緩沖區(qū)管理當(dāng)需要訪問一個(gè)磁盤塊時(shí)如果該塊已經(jīng)在緩沖區(qū)中,返回塊在內(nèi)存中的地址如果塊不在緩沖區(qū)中緩沖區(qū)管理器為該塊在緩沖區(qū)中分配空間,如果有必要,替換緩沖區(qū)中的其他塊如果被替換的塊被修改過,則將其寫回磁盤將所需的塊調(diào)入緩沖區(qū),返回其在緩沖區(qū)的地址第53頁/共204頁緩沖區(qū)管理被釘住的塊(pinnedblocks)不允許寫回磁盤的塊當(dāng)一個(gè)塊上的更新正在進(jìn)行時(shí),不允許寫回磁盤釘住被頻繁訪問的小表塊的強(qiáng)制輸出(forcedoutputofblocks)先寫日志原則檢查點(diǎn)提交事務(wù)的日志記錄第54頁/共204頁緩沖區(qū)管理:替換策略LRU(最近最少使用)如果必須替換一個(gè)塊,則替換最近最少使用的塊MRU(最近最常使用)如果必須替換一個(gè)塊,則替換最近最常使用的塊對(duì)于R中的每條元組tr 對(duì)于S中的每條元組ts
……一旦R中的一個(gè)元組處理完,就不會(huì)再使用它了,應(yīng)該立即丟棄(tossimmediate)當(dāng)S中的一個(gè)元組被處理完,只有其他
S中的元組都被處理完后才會(huì)再用到它,應(yīng)該采用MRU第55頁/共204頁替換策略當(dāng)使用者第一次向數(shù)據(jù)庫發(fā)出查詢數(shù)據(jù)的請(qǐng)求時(shí),數(shù)據(jù)庫會(huì)先在緩沖區(qū)中查找該數(shù)據(jù),如果要訪問的數(shù)據(jù)恰好已經(jīng)在緩沖區(qū)中(稱之為CacheHit),那么就直接用緩沖區(qū)中讀取該數(shù)據(jù).反之如果緩沖區(qū)中沒有使用者要查詢的數(shù)據(jù)稱之為CacheMiss,這種情況下數(shù)據(jù)庫就會(huì)先從磁盤上讀取使用者要的數(shù)據(jù)放入緩沖區(qū),使用者再?gòu)木彌_區(qū)讀取該數(shù)據(jù).很顯然CacheHit會(huì)比CacheMiss時(shí)存取速度快.第56頁/共204頁OPTIMAL/FIFOOPTIMAL:最佳置換算法。它是由Belady于1966年提出的一種理論上的算法。其所選擇的被淘汰頁面,將是以后永不使用的,或是在最長(zhǎng)(未來)時(shí)間內(nèi)不再被訪問的頁面。采用最佳置換算法,通常可保證獲得最低的缺頁率。但由于人目前還無法預(yù)知一個(gè)進(jìn)程在內(nèi)存的若干個(gè)頁面中,哪一個(gè)頁面是未來最長(zhǎng)時(shí)間內(nèi)不再被訪問的,因而該算法是無法實(shí)現(xiàn)的,一般可以利用此算法來評(píng)價(jià)其它算法。FIFO:先進(jìn)先出置換算法。這是最早出現(xiàn)的置換算法。該算法總是淘汰最先進(jìn)入內(nèi)存的頁面,即選擇在內(nèi)存中駐留時(shí)間最久的頁面予以淘汰。該算法實(shí)現(xiàn)簡(jiǎn)單只需把一個(gè)進(jìn)程已調(diào)入內(nèi)存的頁面,按先后次序鏈接成一個(gè)隊(duì)列,并設(shè)置一個(gè)指針,稱為替換指針,使它總是指向最老的頁面。
第57頁/共204頁例在一個(gè)請(qǐng)求分頁存儲(chǔ)管理系統(tǒng)中,一個(gè)作業(yè)的頁面走向?yàn)?、3、2、1、4、3、5、4、3、2、1、5,當(dāng)分配給該作業(yè)的物理塊數(shù)分別為3、4時(shí),試計(jì)算采用下述頁面淘汰算法時(shí)的缺頁次數(shù)(假設(shè)開始執(zhí)行時(shí)主存中沒有頁面),并比較所得結(jié)果。(1)最佳置換法(OPT)(2)先進(jìn)先出法(FIFO)第58頁/共204頁例最佳頁面置換算法:塊為3:缺頁次數(shù)為7塊為3:缺頁次數(shù)為6第59頁/共204頁例例先進(jìn)先出頁面置換算法:塊為3:缺頁次數(shù)為9塊為3:缺頁次數(shù)為10第60頁/共204頁LRU
LRU算法(Leastrecentlyused)的基本概念是:當(dāng)內(nèi)存的剩余的可用空間不夠時(shí),緩沖區(qū)盡可能的先保留使用者最常使用的數(shù)據(jù),就是優(yōu)先清除”較不常使用的數(shù)據(jù)”,并釋放其空間.
FIFO置換算法性能之所以較差,是因?yàn)樗罁?jù)的條件是各個(gè)頁面調(diào)入內(nèi)存的時(shí)間,而頁面調(diào)入的先后并不能反映頁面的使用情況。最近最久未使用(LRU)置換算法,是根據(jù)頁面調(diào)入內(nèi)存后的使用情況進(jìn)行決策的。由于無法預(yù)測(cè)各頁面將來的使用情況,只能利用“最近的過去”作為“最近的將來”的近似,因此,LRU置換算法是選擇最近最久未使用的頁面予以淘汰。該算法賦予每個(gè)頁面一個(gè)訪問字段,用來記錄一個(gè)頁面自上次被訪問以來所經(jīng)歷的時(shí)間t,,當(dāng)須淘汰一個(gè)頁面時(shí),選擇現(xiàn)有頁面中其t值最大的,即最近最久未使用的頁面予以淘汰。第61頁/共204頁LRU
7
0
1
2
0
3
0
4
2
3
0
3
2
1
2
0
1
7
0>
7
0
1
2
0
3
0
4
2
3
0
3
2
1
2
0
1
7
0
7
0
1
2
0
3
0
4
2
3
0
3
2
1
2
0
1
7
7
0
1
2
2
3
0
4
2
2
0
3
3
1
2
0
1
>
7
7
1
1
2
3
0
4
4
4
0
0
3
3
2
2
*
*
*
*
*
*
*
*
缺頁中斷次數(shù):8第62頁/共204頁LFU最近最少使用淘汰法LFU(LeastFrequentlyUsed)(記錄各個(gè)頁面在最近一段時(shí)間內(nèi)被使用的次數(shù),淘汰使用次數(shù)最少的頁面。7
0
1
2
0
3
0
4
2
3
0
3
2
1
2
0
1
7
0>
7
0
1
2
0
0
0
0
2
3
0
3
2
2
2
0
1
1
0
7
0
1
2
2
2
2
0
2
3
0
3
3
3
2
0
0
1
7
0
1
1
1
4
4
0
2
2
0
0
0
3
2
2
2
>
7
7
3
3
3
3
4
4
4
4
1
1
1
3
7
7
*
*
*
*
*
*
*
*
缺頁中斷次數(shù):8第63頁/共204頁緩沖區(qū)管理:SQLServer訪問內(nèi)存頁面為快速找到頁面,內(nèi)存頁面地址被散列給定dbid-filenono標(biāo)識(shí)(數(shù)據(jù)庫ID,文件號(hào)、頁面號(hào)的組合),計(jì)算其hash地址Lazywriter(緩沖池管理器)
使用時(shí)鐘算法第64頁/共204頁時(shí)鐘算法SQLServer2000使用一個(gè)專門的進(jìn)程,采用時(shí)鐘算法進(jìn)行頁面置換。它為每個(gè)緩沖區(qū)設(shè)置一個(gè)計(jì)數(shù)器,每隔一段時(shí)間則順序掃描緩沖池里的每一個(gè)緩沖區(qū),檢查計(jì)數(shù)器。如果計(jì)數(shù)器為零,則說明這一緩沖區(qū)可回收使用。于是,系統(tǒng)先將緩沖區(qū)內(nèi)臟數(shù)據(jù)寫入磁盤,而后將緩中區(qū)放入自由緩沖區(qū)列表。如果計(jì)數(shù)器的值不為零,系統(tǒng)則將計(jì)數(shù)器的值減少。而當(dāng)某個(gè)進(jìn)程訪問緩沖區(qū)的數(shù)據(jù)時(shí),該緩沖區(qū)的計(jì)數(shù)器則會(huì)增加。對(duì)于緩沖區(qū)內(nèi)那些通過較高代價(jià)產(chǎn)生的對(duì)象,系統(tǒng)使用具有較高參考價(jià)值的計(jì)數(shù)器。在順序掃描時(shí),這些計(jì)數(shù)器的值不是簡(jiǎn)單的減少,而是以某種策略縮?。ㄈ绯?),這樣可以保證它不會(huì)很快變成零,從而可以在內(nèi)存中貯存較長(zhǎng)時(shí)間。
其它類似用到緩沖區(qū)的設(shè)計(jì)(當(dāng)緩存不足以放下所有數(shù)據(jù)或?yàn)榱斯?jié)省內(nèi)存),均可參考此種替換策略。第65頁/共204頁索引順序索引基于值的順序排序散列索引基于將值平均分布到若干散列桶中索引評(píng)價(jià)指標(biāo)訪問類型訪問時(shí)間插入時(shí)間刪除時(shí)間空間開銷第66頁/共204頁主索引和輔助索引主索引(primaryindex)、輔助索引(secondaryindex);聚集索引(clusterindex)、非聚集索引(nonclusterindex)branch_namebalance第67頁/共204頁主索引主索引包含表中每條記錄的索引關(guān)鍵字并且當(dāng)未指定任何其他索引作為表主索引時(shí)的默認(rèn)索引。主索引禁止為產(chǎn)生索引關(guān)鍵字所指定字段或索引表達(dá)式中的重復(fù)值;因此,主索引中每個(gè)索引關(guān)鍵字是唯一的。每個(gè)表只能創(chuàng)建一個(gè)主索引。注意:主索引是數(shù)據(jù)庫表的整體部分。如果從數(shù)據(jù)庫中釋放一個(gè)表,則主索引被移去。如果在任何包含重復(fù)數(shù)據(jù)的字段上指定主索引,將
產(chǎn)生一個(gè)錯(cuò)誤。第68頁/共204頁唯一索引索引還可以用于強(qiáng)迫字段數(shù)值的唯一性,或者是多個(gè)字段組合值的唯一性:CREATEUNIQUEINDEXnameONtable(column[,...]);
目前,只有B-tree索引可以聲明為唯一的。如果索引聲明為唯一的,那么就不允許出現(xiàn)多個(gè)索引值相同的行。我們認(rèn)為NULL值相互間不相等。一個(gè)多字段唯一索引認(rèn)為只有兩行數(shù)據(jù)里所有被索引字段都相同的時(shí)候才是相同的,這種數(shù)據(jù)才被拒絕。如果一個(gè)表聲明了一個(gè)唯一約束或者一個(gè)主鍵,那么SQL自動(dòng)在那些組成主鍵或者唯一字段的列上創(chuàng)建唯一索引(可能地話是一個(gè)多字段索引),以強(qiáng)迫這些約束。注意:給一個(gè)表增加唯一約束的比較好的辦法是ALTERTABLE...ADDCONSTRAINT。我們沒有必要在唯一字段上建立索引,那樣做只會(huì)重復(fù)建立自動(dòng)創(chuàng)建的索引。第69頁/共204頁主索引VS唯一索引主索引一定是唯一索引;唯一索引不一定是主索引;主索引只有一個(gè);唯一索引可有多個(gè)第70頁/共204頁聚集索引(ClusteredIndex)聚集索引規(guī)定數(shù)據(jù)在表中的物理存儲(chǔ)順序:聚集索引表記錄的排列順序與索引的排列順序一致。因此一個(gè)表只能包含一個(gè)聚集索引。但該索引可以包含多個(gè)列(組合索引)。聚集索引對(duì)于那些經(jīng)常要搜索范圍值的列特別有效。使用聚集索引找到包含第一個(gè)值的行后,便可以確保包含后續(xù)索引值的行在物理相鄰。這樣有助于提高此類查詢的性能。同樣,如果對(duì)從表中檢索的數(shù)據(jù)進(jìn)行排序時(shí)經(jīng)常要用到某一列,則可以將該表在該列上聚集(物理排序),避免每次查詢?cè)摿袝r(shí)都進(jìn)行排序,從而節(jié)省成本。第71頁/共204頁聚集索引當(dāng)索引值唯一時(shí),使用聚集索引查找特定的行也很有效率。例如,使用唯一雇員ID列emp_id查找特定雇員的最快速的方法,是在emp_id列上創(chuàng)建聚集索引或PRIMARYKEY約束。說明
如果該表上尚未創(chuàng)建聚集索引,且在創(chuàng)建PRIMARYKEY約束時(shí)未指定非聚集索引,PRIMARYKEY約束會(huì)自動(dòng)創(chuàng)建聚集索引。也可以在lname(姓氏)列和fname(名字)列上創(chuàng)建聚集索引,因?yàn)楣蛦T記錄常常是按姓名而不是按雇員ID分組和查詢的第72頁/共204頁聚集索引聚集索引的葉節(jié)點(diǎn)就是實(shí)際的數(shù)據(jù)頁在數(shù)據(jù)頁中數(shù)據(jù)按照索引順序存儲(chǔ)行的物理位置和行在索引中的位置是相同的每個(gè)表只能有一個(gè)聚集索引聚集索引的平均大小大約為表大小的5%左右第73頁/共204頁聚集索引select*fromtablewherefirstName='Ota'第74頁/共204頁
非聚集索引(UnclusteredIndex)
非聚集索引數(shù)據(jù)存儲(chǔ)在一個(gè)地方,索引存儲(chǔ)在另一個(gè)地方,索引帶有指針指向數(shù)據(jù)的存儲(chǔ)位置。索引中的項(xiàng)目按索引鍵值的順序存儲(chǔ),而表中的信息按另一種順序存儲(chǔ)。SQLServer2000在搜索數(shù)據(jù)值時(shí),先對(duì)非聚集索引進(jìn)行搜索,找到數(shù)據(jù)值在表中的位置,然后從該位置直接檢索數(shù)據(jù)。這使非聚集索引成為精確匹配查詢的最佳方法,因?yàn)樗饕枋霾樵兯阉鞯臄?shù)據(jù)值在表中的精確位置的條目。如果基礎(chǔ)表使用聚集索引排序,則該位置為聚集鍵值;否則,該位置為包含行的文件號(hào)、頁號(hào)和槽號(hào)的行ID(RID)。例如,對(duì)于在emp_id列上有非聚集索引的表,如要搜索其雇員ID(emp_id),SQLServer會(huì)在索引中查找這樣一個(gè)條目,該條目精確列出匹配的emp_id列在表中的頁和行,然后直接轉(zhuǎn)到該頁該行。第75頁/共204頁非聚集索引非聚集索引的頁,不是數(shù)據(jù),而是指向數(shù)據(jù)頁的頁。若未指定索引類型,則默認(rèn)為非聚集索引葉節(jié)點(diǎn)頁的次序和表的物理存儲(chǔ)次序不同每個(gè)表最多可以有249個(gè)非聚集索引在非聚集索引創(chuàng)建之前創(chuàng)建聚集索引(否則會(huì)引發(fā)索引重建)第76頁/共204頁非聚集索引select*fromemployeewherelname='Green'第77頁/共204頁比較
聚集索引和非聚集索引的根本區(qū)別是表記錄的排列順序和與索引的排列順序是否一致,聚集索引表記錄的排列順序與索引的排列順序一致,優(yōu)點(diǎn)是查詢速度快,因?yàn)橐坏┚哂械谝粋€(gè)索引值的紀(jì)錄被找到,具有連續(xù)索引值的記錄也一定物理的緊跟其后。
聚集索引的缺點(diǎn)是對(duì)表進(jìn)行修改速度較慢,這是為了保持表中的記錄的物理順序與索引的順序一致,而把記錄插入到數(shù)據(jù)頁的相應(yīng)位置,必須在數(shù)據(jù)頁中進(jìn)行數(shù)據(jù)重排,降低了執(zhí)行速度。建議使用聚集索引的場(chǎng)合為: a.此列包含有限數(shù)目的不同值;
b.查詢的結(jié)果返回一個(gè)區(qū)間的值;
c.查詢的結(jié)果返回某值相同的大量結(jié)果集。
第78頁/共204頁比較非聚集索引指定了表中記錄的邏輯順序,但記錄的物理順序和索引的順序不一致,聚集索引和非聚集索引都采用了B+樹的結(jié)構(gòu),但非聚集索引的葉子層并不與實(shí)際的數(shù)據(jù)頁相重疊,而采用葉子層包含一個(gè)指向表中的記錄在數(shù)據(jù)頁中的指針的方式。非聚集索引比聚集索引層次多,添加記錄不會(huì)引起數(shù)據(jù)順序的重組。建議使用非聚集索引的場(chǎng)合為:a.此列包含了大量數(shù)目不同的值; b.查詢的結(jié)束返回的是少量的結(jié)果集;
c.orderby子句中使用了該列。
第79頁/共204頁何時(shí)使用聚集索引或非聚集索引第80頁/共204頁稠密索引文件中的每個(gè)搜索碼值都有一個(gè)索引記錄第81頁/共204頁稀疏索引只為搜索碼的某些值建立索引記錄第82頁/共204頁多層索引對(duì)索引建立索引第83頁/共204頁B+樹樹結(jié)點(diǎn)Ki是搜索碼,Pi是指針第84頁/共204頁B+樹每個(gè)非葉結(jié)點(diǎn)有[n/2]到n個(gè)子女n=3n=5第85頁/共204頁B+樹插入導(dǎo)致結(jié)點(diǎn)分裂n=3插入Clearview第86頁/共204頁B+樹第87頁/共204頁B+樹刪除導(dǎo)致結(jié)點(diǎn)合并刪除Downtown第88頁/共204頁B+樹第89頁/共204頁散列索引桶(bucket)存儲(chǔ)一條或多條記錄的存儲(chǔ)單元散列(hash)K是搜索碼,B是桶地址,散列函數(shù)h(K)=B散列函數(shù)分布是均勻的,桶包含記錄的個(gè)數(shù)是均勻的分布是隨機(jī)的,散列值不能與搜索碼的值呈現(xiàn)出相關(guān)性桶溢出(bucketoverflow)桶不足(insufficientbucket)+偏斜(skew)第90頁/共204頁散列文件第91頁/共204頁散列索引第92頁/共204頁散列索引溢出鏈第93頁/共204頁位圖索引針對(duì)一些特殊的列建立索引列中的每一個(gè)值對(duì)應(yīng)一個(gè)向量中的一位向量的長(zhǎng)度對(duì)應(yīng)與記錄的條數(shù)不適合列中值的個(gè)數(shù)太多的情況BasetableIndexonRegionIndexonType第94頁/共204頁位圖索引查詢:SelectcustFromBaseTableWhereRegion=‘Asia’andType=‘Dealer’;BitMapforRegion(Asia):10100BitMapforType(Dealer):01101查詢結(jié)果:向量與操作:00100第95頁/共204頁位圖索引與B樹的大小對(duì)比第96頁/共204頁位圖索引設(shè)表中有10M個(gè)記錄,每個(gè)記錄長(zhǎng)800字節(jié),每一頁16K字節(jié),則掃描此表共需50萬次I/O操作第97頁/共204頁位圖索引對(duì)于10M個(gè)記錄建立三列的位圖索引共占(10Mbit*3列/8)字節(jié)的空間,每頁16K,則這些索引僅占235頁,因此存取這些索引只要235次I/O操作第98頁/共204頁位圖索引RIDItemGenderR1aFR2aMR3bFR4bFR5bMR6cFR7cMR8dMRIDMFR101R210R301R401R510R601R710R810RIDabcdR11000R21000R30100R40100R50100R60010R70010R80001基本表Item位圖索引Gender位圖索引第99頁/共204頁編碼位圖索引RIDItemGenderR1aFR2aMR3bFR4bFR5bMR6cFR7cMR8dMRIDB1B0R100R200R301R401R501R610R710R811基本表Item編碼位圖索引Item值編碼值a00b01c10d11映射表簡(jiǎn)單位圖需要4個(gè)向量,編碼位圖需要log24=2個(gè)第100頁/共204頁編碼位圖索引如果屬性I的取值v0被編碼為b1b0,檢索函數(shù)被定義為x1x0,其中如果bi=1,則xi=Bi,否則xi=B’i(B’i為Bi的非)檢索函數(shù) fa=B’1B’0, fb=B’1B0 fc=B1B’0, fd=B1B0如果檢索取值為a或b的元組,
faorfb=B’1B’0orB’1B0=B’1第101頁/共204頁位片索引(Bit-slicedIndex)位片索引是將屬性列的域值按照某種方式進(jìn)行垂直分割,然后以二進(jìn)制位圖的形式存儲(chǔ)第102頁/共204頁位片索引3/13/13/13/13/13/13/13/13236384143464749NYMANYCTNYRICTNYAABAABBA6951193712101010011101100101011001101000111001011001111110datestorestateclasssalesstate=NYclass=Asalesinbinaryform8421selectsum(sales)fromcustomerswherestate=‘NY’
andclass=‘A’第103頁/共204頁多維索引空間數(shù)據(jù)第104頁/共204頁多維索引空間查詢臨近查詢 查詢位于特定位置附近的對(duì)象最近鄰查詢(nearestneighborquery) 查詢離特定位置最近的對(duì)象KNN 查詢離特定位置最近的k個(gè)對(duì)象區(qū)域查詢 查詢位于指定區(qū)域內(nèi)的對(duì)象第105頁/共204頁空間索引空間索引是對(duì)存儲(chǔ)在介質(zhì)上的數(shù)據(jù)位置信息的描述,用來提高系統(tǒng)對(duì)數(shù)據(jù)獲取的效率??臻g索引的提出是由兩方面決定的:其一是由于計(jì)算機(jī)的體系結(jié)構(gòu)將存貯器分為內(nèi)存、外存
兩種,訪問這兩種存儲(chǔ)器一次所花費(fèi)的時(shí)間一般為30~40ns,8~10ms,可以看出兩者相差十
萬倍以上,盡管現(xiàn)在有“內(nèi)存數(shù)據(jù)庫”的說法,但絕大多數(shù)數(shù)據(jù)是存儲(chǔ)在外存磁盤上的,如果對(duì)磁盤上數(shù)據(jù)的位置不加以記錄和組織,每查詢一個(gè)數(shù)據(jù)項(xiàng)就要掃描整個(gè)數(shù)據(jù)文件,這種訪問磁盤的代價(jià)就會(huì)嚴(yán)重影響系統(tǒng)的效率,因此系統(tǒng)的設(shè)計(jì)者必須將數(shù)據(jù)在磁盤上的位置加以記錄和組織,通過在內(nèi)存中的一些計(jì)算來取代對(duì)磁盤漫無目的的訪問,才能提高系統(tǒng)的效率
第106頁/共204頁多維索引:k-d樹樹頂層結(jié)點(diǎn)按一維劃分,下一層按另一維劃分,保持每側(cè)各落入一半數(shù)據(jù),依此類推,直到每個(gè)區(qū)域所包含的數(shù)據(jù)點(diǎn)數(shù)不超過1為止。第107頁/共204頁k-d樹KD樹就是一個(gè)二叉數(shù),它的內(nèi)部結(jié)點(diǎn)有一個(gè)相關(guān)聯(lián)的屬性a和一個(gè)屬性V,它將數(shù)據(jù)點(diǎn)分成兩個(gè)部分:a值小于V的部分和a值大于等于V的部分。由于所有維的屬性在層間循環(huán),所以樹的不同層上的屬性是不同的。它的每一層通過檢測(cè)不同的屬性(關(guān)鍵字)值以決定選擇分枝的方向。以兩個(gè)屬性的KD樹為例。設(shè)每個(gè)數(shù)據(jù)點(diǎn)用樹中一個(gè)結(jié)點(diǎn)來表示,每個(gè)記錄是通過結(jié)點(diǎn)中的六個(gè)域表現(xiàn)出來。其中LcdPt域和RcdPt域分別表示指向左孩子結(jié)點(diǎn)和右孩子結(jié)點(diǎn)的指針;Xcoord和Ycoord各自保存數(shù)據(jù)點(diǎn)X和Y的坐標(biāo)值或?qū)傩灾?;NAME域用來保存結(jié)點(diǎn)描述信息,即屬性(例如薪水);Disc域表示結(jié)點(diǎn)識(shí)別的坐標(biāo)名(也就是比較坐標(biāo)名)。(1)在二維空間中(2-D樹)討論;(2)根的深度為0,在根和偶數(shù)層比較X坐標(biāo)值,在奇數(shù)層比較Y坐標(biāo)值。(3)內(nèi)部結(jié)點(diǎn)只有一個(gè)屬性,它的一個(gè)劃分值指向左、右孩子的指針;(4)葉結(jié)點(diǎn)是塊,塊空間中存放著盡可能多的記錄。(5)共屬同一個(gè)父結(jié)點(diǎn)的兩個(gè)結(jié)點(diǎn)互稱為兄弟結(jié)點(diǎn)。第108頁/共204頁K-d假定相關(guān)的屬性只有顧客的年齡和薪水。數(shù)據(jù)庫中有12個(gè)顧客。把它表示成下列的年齡—薪水對(duì):(25,60)(45,60)(50,75)(50,100)(70,110)(85,140)(30,260)(25,400)(50,275)(60,260)(50,120)(45,350)顧客的各種信息存儲(chǔ)在二維表中,我們?cè)O(shè)其表名為CustomerTb,其中數(shù)據(jù)塊是以年齡代表數(shù)據(jù)記錄,每一塊包含兩個(gè)數(shù)據(jù)記錄。第109頁/共204頁KDKD樹的更新對(duì)于KD樹的查找,跟二叉樹一樣,在每個(gè)內(nèi)部結(jié)點(diǎn)上決定了沿哪個(gè)走向,最終搜索到所查找的結(jié)點(diǎn)的塊,或者是搜索失敗,沒有查找到相應(yīng)的葉結(jié)點(diǎn)。為實(shí)現(xiàn)一個(gè)插入,首先要查找,定位到葉結(jié)點(diǎn),如果葉結(jié)點(diǎn)的塊中還有空間,就把新的數(shù)據(jù)點(diǎn)放在那里,如果沒有空間,就把塊分裂成兩塊。并根據(jù)分裂葉結(jié)點(diǎn)的所在層的相應(yīng)屬性劃分葉結(jié)點(diǎn)中的內(nèi)容。最后創(chuàng)建一個(gè)新的內(nèi)結(jié)點(diǎn),它的子結(jié)點(diǎn)為分裂的兩個(gè)新塊,并且給該內(nèi)結(jié)點(diǎn)一個(gè)與分裂的相應(yīng)的劃分值。第110頁/共204頁KD插入例如某年齡為35且薪水為¥500K的顧客加入。從根上的X坐標(biāo)值,我們可知薪水至少是¥150K,因而往右邊走;在該右結(jié)點(diǎn)處,拿年齡35跟Y坐標(biāo)值表示的年齡47比較,它使我們往左邊:在第三層上,我們?cè)俅伪容^X坐標(biāo)值表示的薪水,且我們的薪水大于劃分值¥300K。因此我們被引向包含點(diǎn)(25,400)和(45,350)的葉結(jié)點(diǎn),新結(jié)點(diǎn)(35,500)需插入該塊。但是,由于每一塊只能存放兩條記錄,所以我們必須分裂該塊。第四層按Y坐標(biāo)值來分,為能夠均勻劃分這些記錄,我們?nèi)≈虚g值35作為新的內(nèi)結(jié)點(diǎn)。該內(nèi)結(jié)點(diǎn)的左邊只有一個(gè)記錄(25,400),而右邊是有另外兩個(gè)記錄的葉結(jié)點(diǎn)塊。第111頁/共204頁KD刪除若實(shí)現(xiàn)一個(gè)結(jié)點(diǎn)的刪除,首先考慮是內(nèi)部結(jié)點(diǎn)還是葉結(jié)點(diǎn)。如果是內(nèi)部結(jié)點(diǎn),我們可以先對(duì)結(jié)點(diǎn)做刪除標(biāo)記,當(dāng)已經(jīng)標(biāo)記了足夠量的結(jié)點(diǎn)時(shí),便可對(duì)未標(biāo)記的結(jié)點(diǎn)重建KD樹。如果是葉結(jié)點(diǎn),則直接刪除即可。對(duì)于一個(gè)記錄的刪除,首先我們按照上面的查找算法找到該結(jié)點(diǎn),然后在結(jié)點(diǎn)內(nèi)部利用順序查找法定位到該記錄(若記錄多,可用二分查找法),最后進(jìn)行邏輯刪除。此時(shí),若此結(jié)點(diǎn)的兄弟結(jié)點(diǎn)內(nèi)也只有一個(gè)記錄,則可以將兩個(gè)結(jié)點(diǎn)進(jìn)行合并成為一個(gè)結(jié)點(diǎn),以節(jié)省空間。第112頁/共204頁KD查詢部分匹配查詢,若給定某些屬性的值,當(dāng)處于屬性值已知的層的節(jié)點(diǎn)上時(shí),根據(jù)比較可以選擇一個(gè)方向往下進(jìn)行;當(dāng)處于屬性值未知的結(jié)點(diǎn)上時(shí),必須考察它的兩個(gè)子結(jié)點(diǎn)。例如,我們找KD樹中所有年齡為50的記錄,因?yàn)楦前葱剿畞矸至训?,所以考察根的兩個(gè)子結(jié)點(diǎn)。在左子結(jié)點(diǎn),只需往左走,在右子結(jié)點(diǎn),只需考慮它的右子樹。范圍查詢就是給定一個(gè)范圍,允許移動(dòng)到結(jié)點(diǎn)的唯一的一個(gè)子結(jié)點(diǎn),如果范圍跨越了結(jié)點(diǎn)的劃分值,那么我們就必須考察兩個(gè)子結(jié)點(diǎn)。例如:SELECT*FROMCustomerTbWHERE(年齡〉=35AND年齡<55)AND(新水>=100AND薪水<=200)給定一個(gè)年齡范圍35~55和一個(gè)薪水范圍$100K~$200K。在根結(jié)點(diǎn),薪水范圍跨越了$150K,因此考察它的兩個(gè)子結(jié)點(diǎn)。在左結(jié)點(diǎn),根據(jù)年齡60的判斷,進(jìn)入到薪水為80的結(jié)點(diǎn),然后搜索到記錄為(50,100)和(50,120)的葉結(jié)點(diǎn),符合查詢范圍。然后返回到根的右結(jié)點(diǎn),然后根據(jù)年齡47的判斷,對(duì)它的左結(jié)點(diǎn)只需向左搜索一直到葉結(jié)點(diǎn),找到記錄(30,260)不符合查詢范圍。然后在47的右結(jié)點(diǎn)上,找到兩條記錄也不符合查詢范圍。第113頁/共204頁多維索引:四叉樹四叉樹空間索引的基本原理是將已知的空間范圍劃成四個(gè)相等的子空間,將每個(gè)或其中幾個(gè)子空間繼續(xù)按照一分為四的原則劃分下去,這樣就形成了一個(gè)基于四叉樹的空間劃分。四叉樹索引有滿四叉樹索引和一般四叉樹索引。
第114頁/共204頁基于網(wǎng)格的四叉樹(1)索引原理 在基于固定網(wǎng)格空間劃分的四叉樹空間索引機(jī)制中,二維空間范圍被劃分為一系列大小相等的棋盤狀矩形,并以此建立N級(jí)四叉樹。在四叉樹中,空間要素標(biāo)識(shí)記錄在其外包絡(luò)矩形所覆蓋的每一個(gè)葉結(jié)點(diǎn)中,但是,當(dāng)同一父親的四個(gè)兄弟結(jié)點(diǎn)都要記錄該空間要素標(biāo)識(shí)時(shí),則只將該空間要素標(biāo)識(shí)記錄在該父親結(jié)點(diǎn)上,并按這一規(guī)則向上層推進(jìn)。(2)索引分析 基于網(wǎng)格劃分的四叉樹索引的構(gòu)成方式與網(wǎng)格索引有些類似,都是多對(duì)多的形式,即一個(gè)網(wǎng)格可以對(duì)應(yīng)多個(gè)空間要素,同時(shí)一個(gè)空間要素也可以對(duì)應(yīng)多個(gè)網(wǎng)格。但與一般網(wǎng)格索引不同的是它有效的減少了大的空間要素(跨越多個(gè)網(wǎng)格)在結(jié)點(diǎn)中的重復(fù)記錄。并且這種索引機(jī)制空間要素的插入和刪除都較簡(jiǎn)單,只需在其覆蓋的葉結(jié)點(diǎn)和按照上面的規(guī)則得到父親和祖先結(jié)點(diǎn)中記錄或刪除其標(biāo)識(shí)即可,沒有像R樹一樣的復(fù)雜耗時(shí)的分裂和重新插入操作。同時(shí),其查詢方式也比較簡(jiǎn)單,例如要檢索某一多邊形內(nèi)和與其邊相交的空間要素,只需先檢索出查詢多邊形所覆蓋的葉結(jié)點(diǎn)和其父親和祖先結(jié)點(diǎn)中所有的空間要素,然后再進(jìn)行必要的空間運(yùn)算,從中檢索出滿足要求的空間要素。第115頁/共204頁多維索引:R樹R樹是平衡樹,非常像B樹,也具有B樹的一些性質(zhì)。第116頁/共204頁R樹R-Tree是一種空間索引數(shù)據(jù)結(jié)構(gòu),下面做簡(jiǎn)要介紹:(1)R-Tree是n叉樹,n稱為R-Tree的扇(fan)。(2)每個(gè)結(jié)點(diǎn)對(duì)應(yīng)一個(gè)矩形。(3)葉子結(jié)點(diǎn)上包含了小于等于n的對(duì)象,其對(duì)應(yīng)的矩為所有對(duì)象的外包矩形。(4)非葉結(jié)點(diǎn)的矩形為所有子結(jié)點(diǎn)矩形的外包矩形。R-Tree的定義很寬泛,同一套數(shù)據(jù)構(gòu)造R-Tree,不同方可以得到差別很大的結(jié)構(gòu)。什么樣的結(jié)構(gòu)比較優(yōu)呢?有兩標(biāo)準(zhǔn):(1)位置上相鄰的結(jié)點(diǎn)盡量在樹中聚集為一個(gè)父結(jié)點(diǎn)。(2)同一層中各兄弟結(jié)點(diǎn)相交部分比例盡量小。R樹是一種用于處理多維數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),用來訪問二維或者更高維區(qū)域?qū)ο蠼M成的空間數(shù)據(jù).R樹是一棵平衡樹。樹上有兩類結(jié)點(diǎn):葉子結(jié)點(diǎn)和非葉子結(jié)點(diǎn)。每一個(gè)結(jié)點(diǎn)由若干個(gè)索引項(xiàng)構(gòu)成。對(duì)于葉子結(jié)點(diǎn),索引項(xiàng)形如(Index,Obj_ID)。其中,Index表示包圍空間數(shù)據(jù)對(duì)象的最小外接矩形MBR,Obj_ID標(biāo)識(shí)一個(gè)空間數(shù)據(jù)對(duì)象。對(duì)于一個(gè)非葉子結(jié)點(diǎn),它的索引項(xiàng)形如(Index,Child_Pointer)。Child_Pointer指向該結(jié)點(diǎn)的子結(jié)點(diǎn)。Index仍指一個(gè)矩形區(qū)域,該矩形區(qū)域包圍了子結(jié)點(diǎn)上所有索引項(xiàng)MBR的最小矩形區(qū)域。第117頁/共204頁R樹R樹是B樹向多維空間發(fā)展的另一種形式,它將空間對(duì)象按范圍劃分,每個(gè)結(jié)點(diǎn)都對(duì)應(yīng)一個(gè)區(qū)域和一個(gè)磁盤頁,非葉結(jié)點(diǎn)的磁盤頁中存儲(chǔ)其所有子結(jié)點(diǎn)的區(qū)域范圍,非葉結(jié)點(diǎn)的所有子結(jié)點(diǎn)的區(qū)域都落在它的區(qū)域范圍之內(nèi);葉結(jié)點(diǎn)的磁盤頁中存儲(chǔ)其區(qū)域范圍之內(nèi)的所有空間對(duì)象的外接矩形。每個(gè)結(jié)點(diǎn)所能擁有的子結(jié)點(diǎn)數(shù)目有上、下限,下限保證對(duì)磁盤空間的有效利用,上限保證每個(gè)結(jié)點(diǎn)對(duì)應(yīng)一個(gè)磁盤頁,當(dāng)插入新的結(jié)點(diǎn)導(dǎo)致某結(jié)點(diǎn)要求的空間大于一個(gè)磁盤頁時(shí),該結(jié)點(diǎn)一分為二。R樹是一種動(dòng)態(tài)索引結(jié)構(gòu),即:它的查詢可與插入或刪除同時(shí)進(jìn)行,而且不需要定期地對(duì)樹結(jié)構(gòu)進(jìn)行重新組織。第118頁/共204頁R樹的結(jié)構(gòu)R樹的每個(gè)結(jié)點(diǎn)不存放空間要素的值。葉結(jié)點(diǎn)中存儲(chǔ)該結(jié)點(diǎn)對(duì)應(yīng)的空間要素的外包絡(luò)矩形和空間要素標(biāo)識(shí),這個(gè)外包絡(luò)矩形是個(gè)廣義上的概念,二維上是矩形,三維空間上就是長(zhǎng)方體,以此類推到高維空間。非葉結(jié)點(diǎn)(葉結(jié)點(diǎn)的父親、祖先結(jié)點(diǎn))存放其子女結(jié)點(diǎn)集合的整體外包絡(luò)矩形和指向其子女結(jié)點(diǎn)的指針。注意,空間要素相關(guān)的信息只存在葉結(jié)點(diǎn)上。第119頁/共204頁R樹的插入刪除R樹的插入與其他樹,為一個(gè)遞歸過程。首先從根結(jié)點(diǎn)出發(fā),按照一定的標(biāo)準(zhǔn),選擇其中一個(gè)孩子插入新的空間要素,然后再?gòu)囊院⒆訛楦淖訕涞母Y(jié)點(diǎn)出發(fā)重復(fù)操作,直到葉子結(jié)點(diǎn)。設(shè)M和m(m≤M)為R樹結(jié)點(diǎn)中單元個(gè)數(shù)的上限和下限,當(dāng)新的空間要素的插入使葉子結(jié)點(diǎn)中的單元個(gè)數(shù)超過M時(shí),需要進(jìn)行結(jié)點(diǎn)的分裂操作。分裂操作是將溢出的結(jié)點(diǎn)按照一定的規(guī)則分為若干部分。在其父結(jié)點(diǎn)刪除原來對(duì)應(yīng)的單元,并加入由分裂產(chǎn)生的相應(yīng)的單元。如果這樣引起父結(jié)點(diǎn)的溢出,則繼續(xù)對(duì)父結(jié)點(diǎn)進(jìn)行分裂操作。分裂操作也是一個(gè)遞歸過程,它保證了空間要素插入后R樹仍能保持平衡。從R樹中刪除一個(gè)空間要素與插入類似,首先從R樹中查找到記錄該空間要素所在的葉子結(jié)點(diǎn),這就是R樹的查找。從根結(jié)點(diǎn)開始,依次檢索包含空間要素的單元所對(duì)應(yīng)孩子結(jié)點(diǎn)為根結(jié)點(diǎn)的子樹。查詢方式利用了R樹的結(jié)構(gòu)特征,減少了檢索的范圍,提高了檢索的效率。查找到該空間要素所在的葉子結(jié)點(diǎn)后,刪除其對(duì)應(yīng)的單元。如果刪除后該葉子結(jié)點(diǎn)單元個(gè)數(shù)少于m,需要進(jìn)行R樹的壓縮操作,將單元數(shù)過少的結(jié)點(diǎn)刪除。如果父結(jié)點(diǎn)因此單元數(shù)也少于m,則繼續(xù)對(duì)父結(jié)點(diǎn)重復(fù)進(jìn)行該操作。最后將因進(jìn)行結(jié)點(diǎn)調(diào)整而被刪除的空間要素重新插入到R樹中。這就是R樹的壓縮操作,它使得R樹的每個(gè)結(jié)點(diǎn)單元數(shù)不低于m這個(gè)下限,從而保證了R樹結(jié)點(diǎn)的平衡和利用率。第120頁/共204頁R樹分析R樹讓空間上靠近的空間要素?fù)碛斜M可能近的共同祖先,提高R樹的查詢效率。在構(gòu)造R樹的時(shí)候,盡可能讓空間要素的空間位置的遠(yuǎn)近體現(xiàn)在其最近的共同祖先的遠(yuǎn)近上,讓聚集在一起的空間要素盡可能早的組合在一起。插入操作中選擇子樹的標(biāo)準(zhǔn),分裂操作中的分裂算法,都為了體現(xiàn)這一目標(biāo)。但是用什么樣的規(guī)則來衡量空間要素的聚集,是一個(gè)非常復(fù)雜的問題。由于衡量的方法不一樣,由此產(chǎn)生了眾多的R樹的變型。Guttman使用面積這個(gè)指標(biāo)來衡量空間上的聚集。在插入操作時(shí),選擇插入空間要素后外包絡(luò)矩形面積增長(zhǎng)最小的結(jié)點(diǎn)為根結(jié)點(diǎn)的子樹。而在分裂溢出結(jié)點(diǎn)時(shí),選擇各種分裂組合中各部分外包絡(luò)矩形面積之和最小的結(jié)合方式。讓R樹的結(jié)構(gòu)盡可能的合理是一個(gè)非常復(fù)雜的問題。眾多的方法都不能很完善的衡量空間的聚集,他們都只能做到局部的優(yōu)化,無法保證由此形成的R樹的整體結(jié)構(gòu)最優(yōu)??臻g要素插入順序的不同會(huì)形成不同結(jié)構(gòu)的R樹,所以隨著空間要素的頻繁插入和刪除,會(huì)將R樹的查詢效率帶向不可預(yù)知的方向。R樹空間索引具有其他索引方法無法比擬的優(yōu)勢(shì): 它按數(shù)據(jù)來組織索引結(jié)構(gòu)。這使其具有很強(qiáng)的靈活性和可調(diào)節(jié)性。無需預(yù)知整個(gè)空間要素所在空間范圍,就能建立空間索引;由于具有與B樹相似的結(jié)構(gòu)和特性,使其能很好地與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫相融合,更好的支持?jǐn)?shù)據(jù)庫的事務(wù)、回滾和并發(fā)等功能。這是許多空間數(shù)據(jù)庫選擇R樹作為空間索引的一個(gè)主要原因。第121頁/共204頁數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)
數(shù)據(jù)庫的存儲(chǔ)結(jié)構(gòu)分為邏輯存儲(chǔ)結(jié)構(gòu)和物理存儲(chǔ)結(jié)構(gòu)兩種。
數(shù)據(jù)庫的邏輯存儲(chǔ)結(jié)構(gòu)指的是數(shù)據(jù)庫是由哪些性質(zhì)的信息所組成。實(shí)際上,SQLServer的數(shù)據(jù)庫是由諸如表、視圖、索引、約束、默認(rèn)值、規(guī)則、觸發(fā)器、用戶定義數(shù)據(jù)類型、用戶定義函數(shù)、存儲(chǔ)過程等各種不同的數(shù)據(jù)庫對(duì)象所組成。第122頁/共204頁SQLServer存儲(chǔ)結(jié)構(gòu)文件結(jié)構(gòu)表結(jié)構(gòu)行結(jié)構(gòu)索引結(jié)構(gòu)第123頁/共204頁文件一個(gè)數(shù)據(jù)庫是操作系統(tǒng)文件的集合數(shù)據(jù)庫之間不能進(jìn)行文件共享一個(gè)數(shù)據(jù)庫至少包括一個(gè)數(shù)據(jù)文件和一個(gè)日志文件每個(gè)數(shù)據(jù)庫最多32,767個(gè)文件數(shù)據(jù)和日志文件一般不能放在同一驅(qū)動(dòng)器上第124頁/共204頁文件文件類型主數(shù)據(jù)文件-.mdf–
每個(gè)數(shù)據(jù)庫一個(gè) 目錄表sysfiles必須完全包含在此文件中輔助數(shù)據(jù)文件-.ndf–
零個(gè)或多個(gè)日志文件-.ldf–
一個(gè)或多個(gè) 包含事務(wù)日志數(shù)據(jù)庫在磁盤上是以文件為單位存儲(chǔ)的,由數(shù)據(jù)庫文件和事務(wù)日志文件組成,一個(gè)數(shù)據(jù)庫至少應(yīng)該包含一個(gè)數(shù)據(jù)庫文件和一個(gè)事務(wù)日志文件第125頁/共204頁數(shù)據(jù)庫文件1.主數(shù)據(jù)庫文件(PrimaryDatabaseFile)
一個(gè)數(shù)據(jù)庫可以有一個(gè)或多個(gè)數(shù)據(jù)庫文件,一個(gè)數(shù)據(jù)庫文件只能屬于一個(gè)數(shù)據(jù)庫。當(dāng)有多個(gè)數(shù)據(jù)庫文件時(shí),有一個(gè)文件被定義為主數(shù)據(jù)庫文件(簡(jiǎn)稱為主文件),其擴(kuò)展名為mdf。主數(shù)據(jù)庫文件用來存儲(chǔ)數(shù)據(jù)庫的啟動(dòng)信息以及部分或者全部數(shù)據(jù),是所有數(shù)據(jù)庫文件的起點(diǎn),包含指向其它數(shù)據(jù)庫文件的指針。一個(gè)數(shù)據(jù)庫只能有一個(gè)主數(shù)據(jù)庫文件。
第126頁/共204頁數(shù)據(jù)庫文件2.二級(jí)數(shù)據(jù)庫文件(或輔助數(shù)據(jù)庫文件)(SecondaryDatabaseFile)
用于存儲(chǔ)主數(shù)據(jù)庫文件中未存儲(chǔ)的剩余數(shù)據(jù)和數(shù)據(jù)庫對(duì)象,一個(gè)數(shù)據(jù)庫可以沒有二級(jí)數(shù)據(jù)庫文件,但也可以同時(shí)擁有多個(gè)二級(jí)數(shù)據(jù)庫文件。
二級(jí)數(shù)據(jù)庫文件的擴(kuò)展名為ndf。第127頁/共204頁事務(wù)日志文件3.事務(wù)日志文件
存儲(chǔ)數(shù)據(jù)庫的更新情況等事務(wù)日志信息,當(dāng)數(shù)據(jù)庫損壞時(shí),管理員使用事務(wù)日志恢復(fù)數(shù)據(jù)庫。每一個(gè)數(shù)據(jù)庫至少必須擁有一個(gè)事務(wù)日志文件,而且允許擁有多個(gè)日志文件。事務(wù)日志文件的擴(kuò)展名為ldf,日志文件的大小至少是512KB。
第128頁/共204頁數(shù)據(jù)庫存儲(chǔ)創(chuàng)建數(shù)據(jù)庫時(shí),一個(gè)數(shù)據(jù)庫至少由一個(gè)主數(shù)據(jù)文件和一個(gè)事務(wù)文件組成。默認(rèn)時(shí)存放在\programfiles\microsoftsqlserver\mssql\data\目錄下。默認(rèn)主數(shù)據(jù)文件名為“數(shù)據(jù)庫名_DATA.MDF”的形式,事務(wù)日志文件名為“數(shù)據(jù)庫名_LOG.LDF”的形式。第129頁/共204頁文件注意:SQLServer2000中的數(shù)據(jù)和事務(wù)日志文件不能存放在壓縮文件系統(tǒng)或共享網(wǎng)絡(luò)目錄等遠(yuǎn)程的網(wǎng)絡(luò)驅(qū)動(dòng)器上。
SQLServer2000的文件擁有兩個(gè)名稱,即邏輯文件名和物理文件名。當(dāng)使用Transact-SQL命令語句訪問某一個(gè)文件時(shí),必須使用該文件的邏輯名。物理文件名是文件實(shí)際存儲(chǔ)在磁盤上的文件名,而且可包含完整的磁盤目錄路徑。
第130頁/共204頁文件文件初始大小、最大尺寸、最小尺寸、以及增長(zhǎng)大小可以指定文件可以自動(dòng)增長(zhǎng)-按指定大小或者當(dāng)前大小的百分比文件可以使用DBCC命令來減小尺寸USE
UserDBDBCCSHRINKFILE(DataFil1,7)--7是尺寸大小DBCCSHRINKDATABASE(UserDB,25)--25是剩余空間的百分比--例如100MDB,使用空間為60M,收縮為80M,--收縮后剩余空間為20M,占總空間的25%第131頁/共204頁用Transact-SQL
命令壓縮數(shù)據(jù)庫可以使用DBCC
SHRINKDATABASE
和DBCC
SHRINKFILE
命令來壓縮數(shù)據(jù)庫。其中DBCC
SHRINKDATABASE
命令對(duì)數(shù)據(jù)庫進(jìn)行壓縮,DBCC
SHRINKFILE
命令對(duì)數(shù)據(jù)庫中指定的文件進(jìn)行壓縮。(1)
DBCC
SHRINKDATABASE
語法如下:
DBCC
SHRINKDATABASE
(db_name
[,
target_percent][,
{NOTRUNCATE
|
TRUNCATEONLY}]
)
各參數(shù)說明如下:
·target_percent
指定將數(shù)據(jù)庫壓縮后,未使用的空間占數(shù)據(jù)庫大小的百分之幾。如果指定的百分比過大,超過了壓縮前未使用空間所占的比例,則數(shù)據(jù)庫不會(huì)被壓縮?!OTRUECATE將數(shù)據(jù)庫縮減后剩余的空間保留在數(shù)據(jù)庫,不返還給操作系統(tǒng)。如果不選擇此選項(xiàng),則剩余的空間返還給操作系統(tǒng)。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)黑絲桃皮絨數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025-2030年中國(guó)青瓷數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 京東電商合同范例
- 外來務(wù)工者子女小學(xué)美術(shù)的有效教學(xué)研究
- 幾類傳染病模型的建模分析與數(shù)值模擬研究
- “雙減”背景下英語課外閱讀分層教學(xué)實(shí)踐研究
- 農(nóng)村初中學(xué)生數(shù)學(xué)實(shí)踐建模能力
- 區(qū)間值形式背景的三支概念分析
- 塑造工業(yè)魂共建明日夢(mèng)
- 辦公文檔中公式的編輯與流程圖的制作
- 人教A版(2019)高二數(shù)學(xué)-圓與圓的位置關(guān)系-【課件】
- 2025年臨床醫(yī)師定期考核試題中醫(yī)知識(shí)復(fù)習(xí)題庫及答案(280題)
- 港珠澳大橋及背后的故事中國(guó)建造課程組30課件講解
- 2025年吉林長(zhǎng)白朝鮮族自治縣事業(yè)單位招聘16人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 初中歷史七年級(jí)上冊(cè)第8課 百家爭(zhēng)鳴
- 中國(guó)教育史課件
- 幼兒園小班美術(shù)欣賞《漂亮的糖紙》課件
- 中職學(xué)校主題班會(huì)教育課件
- 互聯(lián)網(wǎng)接入服務(wù)提供商服務(wù)承諾
- 抖音電商達(dá)人招募合同范本
- 城市綠化景觀設(shè)施安裝與維護(hù)合同
評(píng)論
0/150
提交評(píng)論