存儲(chǔ)結(jié)構(gòu)和文件結(jié)構(gòu)_第1頁(yè)
存儲(chǔ)結(jié)構(gòu)和文件結(jié)構(gòu)_第2頁(yè)
存儲(chǔ)結(jié)構(gòu)和文件結(jié)構(gòu)_第3頁(yè)
存儲(chǔ)結(jié)構(gòu)和文件結(jié)構(gòu)_第4頁(yè)
存儲(chǔ)結(jié)構(gòu)和文件結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章存儲(chǔ)結(jié)構(gòu)和文件結(jié)構(gòu)存儲(chǔ)器層次緩沖區(qū)管理

緩沖區(qū)置換策略文件組織文件中記錄的組織面向?qū)ο髷?shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)3.1存儲(chǔ)器層次高速緩沖存儲(chǔ)器主存儲(chǔ)器虛擬存儲(chǔ)器文件系統(tǒng)磁盤第三級(jí)存儲(chǔ)器DBMSDBMS的程序、主存3.1存儲(chǔ)器層次高速緩沖存儲(chǔ)器(cache):是一種集成電路芯片,或者是處理器芯片的一部分,能存放數(shù)據(jù)或機(jī)器指令,其中的數(shù)據(jù)是主存儲(chǔ)器中特定位置的數(shù)據(jù)的副本,主存中相應(yīng)的變化滯后于高速緩存的變化。機(jī)器的高速緩存通常分為兩級(jí)單版高速緩存:位于微處理器本身的同一芯片上二級(jí)高速緩存:附加的,位于另一個(gè)芯片上當(dāng)機(jī)器執(zhí)行指令時(shí),在高速緩存中尋找指令以及要使用的數(shù)據(jù)。如果找不到,就要去主存中尋找,并將他們拷貝到高速緩存中。由于cache的容量有限,為接納新數(shù)據(jù),必須將其中某些內(nèi)容移出。3.1存儲(chǔ)器層次主存儲(chǔ)器:主存或內(nèi)存,計(jì)算機(jī)的活動(dòng)中心。主存是隨機(jī)訪問(wèn)的,10~100納秒。虛擬存儲(chǔ)器:32位字節(jié)長(zhǎng)可尋址232=4G。由于虛擬存儲(chǔ)器空間比內(nèi)存大得多,一個(gè)完全被占用的虛擬存儲(chǔ)器的大部分內(nèi)容實(shí)際上是保存在磁盤上。磁盤被邏輯地分成多個(gè)塊(block),虛擬存儲(chǔ)器以整個(gè)塊為單位在磁盤和主存間移動(dòng),在主存中,這些塊被稱作頁(yè)(page)。磁盤:支持對(duì)給定地址的直接訪問(wèn),廣泛用于數(shù)據(jù)庫(kù)應(yīng)用。DBMS提供對(duì)磁盤數(shù)據(jù)的無(wú)縫存取,應(yīng)用不必考慮數(shù)據(jù)是否在磁盤或主存上。即支持虛擬存儲(chǔ)器,又支持文件系統(tǒng)。磁盤空間管理第三級(jí)存儲(chǔ)器:磁帶,光盤磁盤磁盤臂裝置轉(zhuǎn)軸磁道t扇區(qū)s柱面c盤片旋轉(zhuǎn)磁盤臂讀寫頭磁盤塊(頁(yè))磁盤控制器磁盤控制器:是磁盤驅(qū)動(dòng)器與計(jì)算機(jī)的接口,是一個(gè)小處理器,能完成以下功能:控制移動(dòng)磁頭組合的機(jī)械傳動(dòng)裝置,將磁頭定位到一個(gè)特定的半徑位置。選擇一個(gè)準(zhǔn)備讀寫的盤面,并從位于該盤面的磁頭下的磁道上選擇一個(gè)扇區(qū)。將從所要求的扇區(qū)讀取的二進(jìn)制位傳送到計(jì)算機(jī)的主存儲(chǔ)器,或者將從主存儲(chǔ)器寫入的二進(jìn)制位傳送到所期望的扇區(qū)。磁盤控制器處理器主存磁盤控制器磁盤磁盤磁盤總線3.1存儲(chǔ)器層次主存儲(chǔ)器:主存或內(nèi)存,計(jì)算機(jī)的活動(dòng)中心。主存是隨機(jī)訪問(wèn)的,10~100納秒。虛擬存儲(chǔ)器:32位字節(jié)長(zhǎng)可尋址232=4G。由于虛擬存儲(chǔ)器空間比內(nèi)存大得多,一個(gè)完全被占用的虛擬存儲(chǔ)器的大部分內(nèi)容實(shí)際上是保存在磁盤上。磁盤被邏輯地分成多個(gè)塊(block),虛擬存儲(chǔ)器以整個(gè)塊為單位在磁盤和主存間移動(dòng),在主存中,這些塊被稱作頁(yè)(page)。磁盤:支持對(duì)給定地址的直接訪問(wèn),廣泛用于數(shù)據(jù)庫(kù)應(yīng)用。DBMS提供對(duì)磁盤數(shù)據(jù)的無(wú)縫存取,應(yīng)用不必考慮數(shù)據(jù)是否在磁盤或主存上。即支持虛擬存儲(chǔ)器,又支持文件系統(tǒng)。磁盤空間管理第三級(jí)存儲(chǔ)器:磁帶,光盤虛擬存儲(chǔ)器傳統(tǒng)的內(nèi)存管理方式要求將一個(gè)作業(yè)全部裝入內(nèi)存才可以運(yùn)行,由此造成了以下兩種情況:大作業(yè)對(duì)內(nèi)存的要求超出物理內(nèi)存總?cè)萘?,致使其無(wú)法運(yùn)行內(nèi)存由于容量的限制,只能裝入少量的作業(yè)使其運(yùn)行,而其它大量作業(yè)留在外存上怎么辦?方法一:從物理上增加內(nèi)存容量成本高方法二:從邏輯上擴(kuò)充內(nèi)存容量虛擬存儲(chǔ)器局部性原理:程序在執(zhí)行過(guò)程中的一個(gè)較短時(shí)期,所執(zhí)行的指令地址和指令的操作數(shù)地址,分別局限于一定區(qū)域。引入:在程序裝入時(shí),不必將其全部讀入到內(nèi)存,而只需將當(dāng)前需要執(zhí)行的部分頁(yè)或段讀入到內(nèi)存,就可讓程序開(kāi)始執(zhí)行。在程序執(zhí)行過(guò)程中,如果需執(zhí)行的指令或訪問(wèn)的數(shù)據(jù)尚未在內(nèi)存(稱為缺頁(yè)或缺段),則由處理器通知操作系統(tǒng),將相應(yīng)的頁(yè)或段調(diào)入到內(nèi)存,然后繼續(xù)執(zhí)行程序。虛擬存儲(chǔ)器虛擬存儲(chǔ)器概念:虛擬存儲(chǔ)器是指具有請(qǐng)求調(diào)入功能和置換功能,能從邏輯上對(duì)內(nèi)存容量進(jìn)行擴(kuò)充的一種存儲(chǔ)系統(tǒng)。它不是一個(gè)實(shí)際的物理存儲(chǔ)器,而是一個(gè)容量可以非常大的存儲(chǔ)器的邏輯模型,在該模型的支撐下,把程序的一部分裝入內(nèi)存便可以執(zhí)行。 ?虛擬的:大小由OS決定 ?邏輯模型:概念,原理,技術(shù)解決方案,具體實(shí)現(xiàn) ?部分執(zhí)行虛擬存儲(chǔ)器實(shí)現(xiàn)原理進(jìn)程運(yùn)行只裝入部分程序和數(shù)據(jù)在外存保留完整副本運(yùn)行中動(dòng)態(tài)調(diào)整進(jìn)程在內(nèi)存中的部署技術(shù)難點(diǎn)如何確定和記錄當(dāng)前哪些部分在內(nèi)存執(zhí)行中訪問(wèn)不在內(nèi)存的指令和數(shù)據(jù)時(shí)如何處理從外存中調(diào)入某頁(yè)時(shí),內(nèi)存中空間不夠如何處理優(yōu)點(diǎn):利用率高,方便用戶,對(duì)多道程序運(yùn)行有較強(qiáng)的支持3.2 緩沖區(qū)管理數(shù)據(jù)庫(kù):由若干文件組成

文件:(由操作系統(tǒng)管理的文件)由若干個(gè)定長(zhǎng)的存儲(chǔ)單元構(gòu)成存儲(chǔ)塊頁(yè)

頁(yè):可以包含若干個(gè)數(shù)據(jù)項(xiàng),存儲(chǔ)分配和數(shù)據(jù)傳輸?shù)膯挝?/p>

數(shù)據(jù)庫(kù)系統(tǒng)主要目標(biāo)是:最小化磁盤和主存間傳輸存儲(chǔ)塊的數(shù)量,即磁盤存取的次數(shù)

實(shí)現(xiàn)手段:在主存中保持盡可能多的存儲(chǔ)塊,以使得當(dāng)某一存儲(chǔ)塊被存取時(shí)它以在主存中的概率最大

3.2 緩沖區(qū)管理緩沖區(qū)管理器的功能:負(fù)責(zé)管理可利用的內(nèi)存空間,這些內(nèi)存被劃分為頁(yè)面的集合,這些頁(yè)面的集合稱為緩沖池。當(dāng)被訪問(wèn)的數(shù)據(jù)所在的頁(yè)面不在內(nèi)存中時(shí)緩沖區(qū)管理器必須將所需的頁(yè)面從磁盤調(diào)入到緩沖池中。

緩沖區(qū)管理模型

3.2 緩沖區(qū)管理DB頁(yè)面置換來(lái)自高層代碼的請(qǐng)求緩沖池主存磁盤頁(yè)空閑幀3.2 緩沖區(qū)管理(1)高層請(qǐng)求可以向緩沖區(qū)管理器請(qǐng)求某頁(yè),如果它不在緩沖池中將被調(diào)入緩沖池中

(2)請(qǐng)求該頁(yè)的高層代碼若不再需要該頁(yè)時(shí)必須通知緩沖區(qū)管理器釋放該頁(yè)以使緩沖池中的空間可以重新利用

(3)高層代碼必須通知緩沖區(qū)管理器如果它修改了被請(qǐng)求的頁(yè),緩沖區(qū)管理器必須保證該頁(yè)的數(shù)據(jù)一致性

(4)對(duì)于緩沖池中的每個(gè)頁(yè)面,緩沖區(qū)管理器必須為其設(shè)置兩個(gè)變量:pin_count和dirty pin_count:該頁(yè)面的當(dāng)前用戶數(shù)

dirty:該頁(yè)面是否被修改過(guò)

3.2 緩沖區(qū)管理(5)當(dāng)一個(gè)頁(yè)面被請(qǐng)求時(shí)緩沖區(qū)管理器做如下事情

a.檢查緩沖池中是否包含該頁(yè)。如果該頁(yè)不在緩沖池中

a.1通過(guò)置換策略來(lái)選擇一個(gè)緩沖池單元用于置換

a.2如果被置換的緩沖池單元對(duì)應(yīng)的dirty為on,將該頁(yè)寫回到磁盤上

a.3將被請(qǐng)求的頁(yè)調(diào)入到被置換的頁(yè)中

b.將相應(yīng)的pin_count變量加1,將對(duì)應(yīng)的內(nèi)存地址返回給調(diào)用者

(6)如果被請(qǐng)求的頁(yè)不在緩沖池中且又沒(méi)有空閑的入口項(xiàng)時(shí),一個(gè)pin_count為0的頁(yè)面被選擇用于置換,當(dāng)這樣的頁(yè)面很多時(shí)使用緩沖區(qū)管理的置換策略來(lái)確定被置換的入口項(xiàng)。

3.2 緩沖區(qū)管理(7)如果緩沖池中一個(gè)入口項(xiàng)被選擇用于置換,若對(duì)應(yīng)的dirty位為off,該入口項(xiàng)可以直接被新頁(yè)覆蓋;否則該入口項(xiàng)必須先寫回到磁盤上再用新頁(yè)覆蓋。

(8)如果不存在pin_count為0的頁(yè)且被請(qǐng)求的頁(yè)不在緩沖池中,緩沖區(qū)管理器必須等到某些入口項(xiàng)被釋放再響應(yīng)該請(qǐng)求。

3.3 緩沖區(qū)置換策略(1)LRU(LeastRecentlyUsed):維護(hù)一個(gè)隊(duì)列,當(dāng)緩沖池中某頁(yè)的pin_count變?yōu)?時(shí)被插到隊(duì)列的尾部;隊(duì)列的頭部為被置換的對(duì)象。(2)Clock(LRU算法的一個(gè)變種):緩沖池中所有的頁(yè)被編號(hào):1,2,…,N,這些頁(yè)被安排成一個(gè)圓形,類似于時(shí)鐘的表盤;clock算法還使用一個(gè)變量:current,在1到N之間循環(huán)變化,類似于時(shí)鐘的指針;為了模仿LRU行為clock算法為每個(gè)頁(yè)分配一個(gè)變量referenced位:當(dāng)pin_count變?yōu)?時(shí),referenced位被置為on。如果current指向的頁(yè)的pin_count>0,則current++;如果current指向的頁(yè)的pin_count=0且referenced為on時(shí),則referenced被置為off,current++;當(dāng)前的pin_count=0且referenced=off時(shí),該頁(yè)被選為被置換頁(yè)

3.3 緩沖區(qū)置換策略MRU(MostRecentlyUsed)FIFO(FirstInFirstOut)FILO(FirstInLastOut)Random…OS的虛存和DBMS的緩沖區(qū)管理OS的虛存和DBMS的緩沖區(qū)管理很相似,兩者的目標(biāo)都是對(duì)超出主存容量的數(shù)據(jù)存取提供支持,其主要思想是必要時(shí),從磁盤讀出數(shù)據(jù)頁(yè),并替換掉主存中不再需要的頁(yè)。一個(gè)問(wèn)題:為什么不利用OS的虛存能力建立DBMS呢?DBMS比典型的OS環(huán)境更能準(zhǔn)確地預(yù)測(cè)頁(yè)的存儲(chǔ)順序(頁(yè)的引用模式),并且他希望利用這個(gè)特性。DBMS在寫回磁盤時(shí)需要的控制比OS提供的控制更多。OS的虛存和DBMS的緩沖區(qū)管理被釘住的塊(pinnedblock)不允許寫回磁盤的塊目的:為了使數(shù)據(jù)庫(kù)系統(tǒng)能從系統(tǒng)崩潰中恢復(fù),限制塊寫回磁盤的時(shí)間。塊的強(qiáng)制寫出(forcedoutputofblocks)盡管不需要一個(gè)塊所占用的緩沖區(qū)空間,仍將其寫回磁盤的操作目的:使磁盤上的數(shù)據(jù)在崩潰時(shí)得以保留。3.4文件組織定長(zhǎng)記錄文件實(shí)現(xiàn)變長(zhǎng)記錄文件實(shí)現(xiàn)基本字節(jié)流表示法分槽的頁(yè)結(jié)構(gòu)表示法定長(zhǎng)的表示方法保留空間(reservedspace)鏈表表示(listrepresentation)錨塊(anchorblock)、溢出塊(overflowblock)3.4頁(yè)格式3.4頁(yè)格式槽記錄指針指向空閑空間的起始處長(zhǎng)度=243.4文件組織3.4.1定長(zhǎng)記錄typedeposit=record branch-name:char(22); account-number:char(10); balance:real;

end3.4.1定長(zhǎng)記錄記錄0PerryridgeA-102400記錄1RoundHillA-305350記錄2MianusA-215700記錄3DowntownA-101500記錄4RedwoodA-222700記錄5PerryridgeA-201900記錄6BrightonA-217750記錄7DowntownA-110600記錄8PerryridgeA-218700刪除3.4.1定長(zhǎng)記錄記錄0PerryridgeA-102400記錄1RoundHillA-305350記錄3DowntownA-101500記錄4RedwoodA-222700記錄5PerryridgeA-201900記錄6BrightonA-217750記錄7DowntownA-110600記錄8PerryridgeA-218700移動(dòng)3.4.1定長(zhǎng)記錄記錄0PerryridgeA-102400記錄1RoundHillA-305350記錄3DowntownA-101500記錄4RedwoodA-222700記錄5PerryridgeA-201900記錄6BrightonA-217750記錄7DowntownA-110600記錄8PerryridgeA-2187003.4.1定長(zhǎng)記錄記錄0PerryridgeA-102400記錄1RoundHillA-305350記錄8PerryridgeA-218700記錄3DowntownA-101500記錄4RedwoodA-222700記錄5PerryridgeA-201900記錄6BrightonA-217750記錄7DowntownA-1106003.4.1定長(zhǎng)記錄特點(diǎn):

刪除記錄比較困難

一個(gè)記錄可能跨越兩個(gè)存儲(chǔ)塊的邊界

實(shí)現(xiàn)簡(jiǎn)單

空間利用率高

3.4.1定長(zhǎng)記錄文件頭記錄0PerryridgeA-102400記錄1記錄2MianusA-215700記錄3DowntownA-101500記錄4記錄5PerryridgeA-201900記錄6記錄7DowntownA-110600記錄8PerryridgeA-2187003.4.2變長(zhǎng)記錄typeaccount-list=record branch-name:char(22); account-info:array[1..]of

record account-number:char(10); balance:real;

endend

3.4.2變長(zhǎng)記錄0PerryridgeA-102400A-201900A-2187001RoundHillA-3053502MianusA-2157003DownTownA-101500A-1106004RedwoodA-2227005BrightonA-2177503.4.2.1基本字節(jié)流表示法3.4.2變長(zhǎng)記錄基本字節(jié)流表示方法的缺點(diǎn)重新使用被刪記錄曾占用的空間十分困難通常分配給記錄的空間不能隨記錄長(zhǎng)度的增長(zhǎng)而增長(zhǎng)3.4.2變長(zhǎng)記錄條目個(gè)數(shù)空閑空間大小位置3.4.2.2分槽的頁(yè)結(jié)構(gòu)表示法每個(gè)頁(yè)的存儲(chǔ)結(jié)構(gòu)如下:記錄入口數(shù):表示塊中記錄條目的個(gè)數(shù)存儲(chǔ)塊中空閑空間的末尾地址一個(gè)數(shù)組:包含每個(gè)記錄的位置和大小

3.4.2變長(zhǎng)記錄3.4.2.3定長(zhǎng)的表示方法保留空間0PerryridgeA-102400A-201900A-2187001RoundHillA-3053502MianusA-2157003DownTownA-101500A-1106004RedwoodA-2227005BrightonA-2177503.4.2變長(zhǎng)記錄3.4.2.4定長(zhǎng)的表示方法指針0PerryridgeA-1024001RoundHillA-3053502MianusA-2157003DowntownA-1015004RedwoodA-2227005A-2019006BrightonA-2177507A-1106008A-2187003.4.2變長(zhǎng)記錄3.4.2.5定長(zhǎng)的表示方法錨塊、溢出塊0PerryridgeA-1024001RoundHillA-3053502MianusA-2157003DowntownA-1015004RedwoodA-2227005BrightonA-217750A-201900A-218700A-110600錨塊溢出塊3.5文件中記錄的組織堆文件組織Heapfileorganization順序文件組織Sequentialfileorganization散列文件組織(第4章)Hashingfileorganization聚簇文件組織Clusteringfileorganization3.5文件中記錄的組織3.5.1堆文件(1)最簡(jiǎn)單的文件結(jié)構(gòu)是堆文件:記錄的組織是無(wú)序的,每個(gè)記錄具有唯一的rid,支持所有記錄的檢索,在文件中每個(gè)頁(yè)具有相同的大小。

(2)在堆文件上應(yīng)支持的操作:文件的建立與刪除、插入記錄、刪除一個(gè)給定rid的記錄、查找給定rid的記錄、從文件中掃描所有記錄

3.5文件中記錄的組織兩種堆文件結(jié)構(gòu)(1)頁(yè)鏈接式結(jié)構(gòu)在這種結(jié)構(gòu)中,堆文件中所有頁(yè)被組織在兩個(gè)鏈表中,一個(gè)為滿頁(yè)(即沒(méi)有空閑空間的頁(yè))鏈表,另一個(gè)為有空閑空間的頁(yè)鏈表。當(dāng)一個(gè)新的頁(yè)從原始(raw)空間中被分配出來(lái)以后,該頁(yè)要被插入第一個(gè)鏈表。每個(gè)頁(yè)中空閑空間的管理可采用前面討論過(guò)的方法和途徑。缺點(diǎn):對(duì)于變長(zhǎng)記錄而言,所有的頁(yè)可能在第一個(gè)鏈中,要插入一個(gè)記錄的話,必須要找到具有足夠空間大小的頁(yè)來(lái)存放該記錄。頁(yè)目錄結(jié)構(gòu)可以避免這個(gè)問(wèn)題。首頁(yè)數(shù)據(jù)頁(yè)含有空閑空間的頁(yè)鏈表滿頁(yè)鏈表3.5文件中記錄的組織兩種堆文件結(jié)構(gòu)(2)頁(yè)目錄結(jié)構(gòu)每個(gè)目錄入口標(biāo)識(shí)堆文件中的一頁(yè),由于堆文件可以增長(zhǎng)或減少,因此目錄也隨之增長(zhǎng)或縮短。

每個(gè)目錄入口項(xiàng)中用1位來(lái)表示該頁(yè)是否有空閑空間(對(duì)于定長(zhǎng)記錄),也可用一個(gè)記數(shù)來(lái)頁(yè)中空閑空間的大小(對(duì)于變長(zhǎng)記錄)。數(shù)據(jù)頁(yè)1數(shù)據(jù)頁(yè)2數(shù)據(jù)頁(yè)N首頁(yè)目錄……3.5文件中記錄的組織3.5.2順序文件BrightonA-217750DowntownA-101500DowntownA-110600MianusA-215700PerryridgeA-102400PerryridgeA-201900PerryridgeA-218700RedwoodA-222700RoundHillA-3053503.5文件中記錄的組織BrightonA-217750DowntownA-101500DowntownA-110600MianusA-215700PerryridgeA-102400PerryridgeA-201900PerryridgeA-218700RedwoodA-222700RoundHillA-305350NorthTownA-888800溢出塊:3.5文件中記錄的組織3.5.3聚簇文件selectaccount-number,customer-name,customer-street,customer-cityfromdepositor,customerwheredepositor.customer-name=customer.customer-nameHayesA-102HayesA-220HayesA-503TurnerA-305customer-nameaccount-numberHayesMainBrooklynTurnerPutnamStamfordcustomer-namecustomer-streetcustomer-citydepositorcustomer3.5文件中記錄的組織HayesMainBrooklynHayesA-102HayesA-220HayesA-503TurnerPutnamStamfordTurnerA-305聚集文件結(jié)構(gòu)HayesMainBrooklynHayesA-102HayesA-220HayesA-503TurnerPutnamStamfordTurnerA-305帶指針鏈的聚集文件結(jié)構(gòu)3.6面向?qū)ο髷?shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)對(duì)象標(biāo)識(shí)符的實(shí)現(xiàn)持久化指針的管理軟件混寫硬件混寫對(duì)象的磁盤結(jié)構(gòu)與內(nèi)存結(jié)構(gòu)大對(duì)象3.6面向?qū)ο髷?shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)3.6.1對(duì)象標(biāo)識(shí)的實(shí)現(xiàn)(1)邏輯OID:沒(méi)有指明對(duì)象的位置,存儲(chǔ)系統(tǒng)必須維護(hù)一個(gè)將OID映射到對(duì)象實(shí)際位置的索引。(2)物理OID:編碼中包含對(duì)象的位置,對(duì)象可以被直接找到。

a.卷或文件標(biāo)識(shí)

b.卷或文件中頁(yè)的標(biāo)識(shí)

c.頁(yè)中的偏移量

d.唯一標(biāo)識(shí):是一個(gè)整數(shù),避免虛懸訪問(wèn),既可以存在于物理OID中,也可存在于對(duì)象中。3.6面向?qū)ο髷?shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)3.6面向?qū)ο髷?shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)3.6.2持久化指針的管理數(shù)據(jù)庫(kù)地址:在服務(wù)器的數(shù)據(jù)庫(kù)地址空間中的地址,說(shuō)明數(shù)據(jù)項(xiàng)在二級(jí)存儲(chǔ)器中的地址,通常為8個(gè)字節(jié)。內(nèi)存地址:虛擬內(nèi)存中的地址(假如數(shù)據(jù)項(xiàng)正緩存在虛擬內(nèi)存中),通常為4個(gè)字節(jié)。需要一個(gè)表將目前在虛存中的所有數(shù)據(jù)庫(kù)地址轉(zhuǎn)換成它們的內(nèi)存地址指針混寫:避免將數(shù)據(jù)庫(kù)地址重復(fù)轉(zhuǎn)換成內(nèi)存地址的開(kāi)銷指針混寫(pointerswizzling)塊1塊2磁盤內(nèi)存讀入內(nèi)存混寫的非混寫的3.6面向?qū)ο髷?shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)3.6.2持久化指針的管理(1)指針混寫:減少定位已存在于內(nèi)存中的持久化對(duì)象所需代價(jià)的方法

a.解引用(dereferencing):根據(jù)給定標(biāo)識(shí)尋找對(duì)象的動(dòng)作

b.持久化指針的解引用:在表中查找持久化指針進(jìn)而找到對(duì)象在內(nèi)存中的實(shí)際位置

c.軟件混寫:

c.1當(dāng)一個(gè)持久化指針第一次解引用時(shí),這個(gè)對(duì)象被定位,如果它不在內(nèi)存,就將它放入內(nèi)存,并將內(nèi)存指針取代持久化指針

c.2下一次相同的持久化指針被解引用時(shí),對(duì)象在內(nèi)存中的位置被直接讀出,避免了定位對(duì)象的代價(jià)

c.3當(dāng)一個(gè)對(duì)象被寫出時(shí),它所包含的任何被混寫的持久化指針需要反混寫,即把它們轉(zhuǎn)回持久化表示

d.缺點(diǎn):緩沖區(qū)管理復(fù)雜——釘住緩沖頁(yè)3.6面向?qū)ο髷?shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)3.6.2持久化指針的管理(2)硬件混寫

優(yōu)點(diǎn):

a.用與內(nèi)存指針相同大小空間來(lái)存儲(chǔ)持久化指針

b.透明地在持久化指針和內(nèi)存指針之間進(jìn)行轉(zhuǎn)換

持久化指針的表示方法:

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論