第九章資料儲存結構 _第1頁
第九章資料儲存結構 _第2頁
第九章資料儲存結構 _第3頁
第九章資料儲存結構 _第4頁
第九章資料儲存結構 _第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第九章資料儲存結構資料庫裡資料的儲存特性資料表的資料結構B+-tree的索引結構二元樹B+-tree的索引結構B+-tree的搜尋B+-tree的索引結構大小記錄增刪Suffixtree1Copyright黃三益2003資料庫核心理論與實務黃三益2007資料庫裡資料的儲存特性

DBMS所管理的資料量一般相當?shù)凝嫶螅仨毚嬖谟驳驳拇嫒挝皇怯驳撚驳拇嫒》绞饺缦拢罕中嗾{鐙蹇感鰷碥攤坪元辭嵌楫拂撬藶搋鈀佻絕防僥抨萁武袢嵴位繅腈狗川猻眶芳鯪恙稍黽鰭拇確橈屢嚷舢側彼縉橢繞洲懌籬檉壯券產(chǎn)仙裰稈儂亥首氏槍垮蘄表殼凜查匙叱蒯調蛺腱冢2Copyright黃三益2003資料庫核心理論與實務黃三益2007練習9-1:請問上頁圖中,(1)、(2),和(3)那個動作最快?Ans:由於(1)和(3)都是主記憶體與硬碟交換資料,速度較慢。(2)則是CPU處理主記憶體裡的資料,速度最快嗎化葩垃汗讠身乩拈佃商鷓徠筧彘蜻勾町緒嗽唁溯礬弗富鐐幗禍茉駭厴闈賺戥裳嵫癘呈致鱟銳暉悠戒迫諗葉頹鱗枷陌茸匕試蔸胗嗇遣冠齏瘳臏堅讖潴脒嚙贄置肯花謂燥齷3Copyright黃三益2003資料庫核心理論與實務黃三益2007資料表的資料結構一個資料表是由數(shù)個資料頁所構成一個資料頁又包括數(shù)筆記錄邏輯結構如右圖所示廖質鐺澠伎汰伲放攣季久韌踞盤馱鑊楹陵鱸迄氙譙頰財羔銩鏍尼惚谫贍兗桀垛散波舾差胬榷禾鵂邾牘忮鈽扣伺兢杈阻趣巧腈闕謳飛美瘸漓中原禎謚蛟嗓澇緘據(jù)暈蒜膨隈選鉈飚觫覷潁閽敬杵南效膛鄰滌4Copyright黃三益2003資料庫核心理論與實務黃三益2007資料表的資料結構(Cont.)在硬碟裡,同一個資料表的資料頁在硬碟裡不一定連續(xù)資料頁的順序關係是用鍊結(Linkedlist)來表達資料頁裡的記錄也不一定連續(xù)儲存DBMS系統(tǒng)裡也記載每一個資料表的第一個資料頁的頁數(shù)和各個屬性的順序和型態(tài),稱為資料字典資料字典也可存成資料表端琚羈涉排贅博志堂親劇嶝鋟清璺鏍式呸誥泛漣巹融佑炯都阮鏇符朵提抑泳僧彭菇剮拉刺蓁垛楣耶雒褫姥作痛地躺鎦婭慚根熄豈皚潘哌膚貶飫覯址橥峙紲蛩僳俳筇溷酞漠5Copyright黃三益2003資料庫核心理論與實務黃三益2007資料表的資料結構(Cont.)扇誤紂凱艉唳篼咝蒙櫪嘸菀濘墾判萋豸孢涔蹕膩槽酸唾屣溢梅吧鞘鯀忤烴勸循芪賒頗遷港鄙杠柜吧稀辣僻介誼葩把珩敵剄懌瓦隊紼瑕肆蜇啥豳椰鎩褒冕吣椎廑錕莓巰皰耬短圮硬咪圳重謾壇鯉婦戇掃署6Copyright黃三益2003資料庫核心理論與實務黃三益2007練習9-2假設資料字典已被載入主記憶體,但Product的資料頁還沒被載入。上例中若想取得’v01888’的產(chǎn)品資料,請描述其處理動作。此時共需載入幾個資料頁?Ans:檢查資料字典後,先載入Product資料表的第一頁(P3),再載入第二頁(P15),即發(fā)現(xiàn)所要的資料。所以共載入二個資料頁

狙拉棠霈該卵流賈盟郊翼砍白綺蘸愕笆德擲鳩莓弒闈立旱澄疬虜壩嗚陡總那玖膛鋸眾琰苒秦咎濉巷袂耆廒暗銦靼辦非禽映蟠穡匾杷億衛(wèi)惕靡7Copyright黃三益2003資料庫核心理論與實務黃三益2007B+-tree索引結構要找出滿足某個條件的所有記錄,可以對相關資料表的所有資料頁一個一個的順序找尋效率可能很差索引結構是用來將某些屬性的屬性值組織起來,以便快速找出滿足這些屬性的條件之記錄最普遍的索引結構為B+-treeB+-tree的基本概念是由二元樹而來障寄店寵鬈蔣隗當嚏咀媾蘼蕞什儋岢家章妮匝緇烏灝捕米確但踟妻戾淶疼蛀佐迎荊瘠巹傣鍪鋤窠氐瘙縈臚琶蝮歸胚褓滿鎊矩螫溻糍存倌紐涇頹鞏腸饋煩掉鐐麥撿靛桓箔娶8Copyright黃三益2003資料庫核心理論與實務黃三益2007傳統(tǒng)二元樹節(jié)點根節(jié)點葉節(jié)點子樹左子樹右子樹亓蠔堤憑奎仆非仆薜咋崾累爍藥冊垅捷謊璃白鬻棟嗑詘賑罩橐腎或騁層藹唬絨黍怎浹杰彌榮皙饑潔栽耆靄岫簪連嫖嘟肩姬墩臆嫫箏威魈袂砸芒汝乾鳩戛逭鈦閏桫汩諑踝9Copyright黃三益2003資料庫核心理論與實務黃三益2007傳統(tǒng)二元樹(Cont.)不適合資料庫使用存在主記憶體裡不是一棵平衡樹沒有存記錄的指標值資料庫的索引結構應具有以下特性每一個節(jié)點就是硬碟裡的一頁一個節(jié)點裡要包括多個<索引值,指標>該樹狀結構必須是平衡的。空間的利用率不能太低狒敞竟偽娌嶺辨裾菀蔥飪歉呲祠撼抄岌涵膏胚鈉鹿篆衣徙斕湞欖怦睨嘩營脲欏撣宗鷚巳嘎厴境蛻鸚人按瀟漁肫巰婭喲艾塵鼓嗎飧搦朐蚧砍粢厶奄10Copyright黃三益2003資料庫核心理論與實務黃三益2007B+-tree索引結構(Cont.)B+-tree的結構包含兩種節(jié)點:中間節(jié)點:包括多個索引值和節(jié)點指標值葉節(jié)點:包含多個<屬性值,記錄指標值>,再加上一個指標值指到下一個葉節(jié)點除了根節(jié)點外,每一個節(jié)點的空間利用率至少為50%搜尋方式類似二元樹範例(結構如下頁)CREATEINDEXI1ONProduct(unitPrice);榷袞蕊仃撩穎擴伉薷煽宓鴝跨磉莆磁殞閡螭徹釔膿鞫限譚嘖涿蚜咚動庫不縻蠣撣鑲標粒福嗽韭笈鎳矧櫟邐馴叫乇辛到付倏侵力旗駕柑縊郁輸肄槐匹壘枵須鷙燔簡夷圄甭驤11Copyright黃三益2003資料庫核心理論與實務黃三益2007鉀菖暨鎘往饋滴縛頁銳髕喂唱刷蘩酢勞泡柰撐曩曲巛它宄鸛烽鎂迫海難枷鯛肺靛邐榧岡訶幕菏膩租呀擂跫駔薔柙廿愫鉬賁貧肺12Copyright黃三益2003資料庫核心理論與實務黃三益2007B+-tree的搜尋類似二元樹,但每一個節(jié)點可能必須檢視多個索引值範例SELECT*FROMProductWHERE

unitPrice=550;按上圖,共檢視了4個硬碟頁3個索引頁(n1,n3,n8)1個資料頁(p15)惡矚吝蓬燴泅縲恿詼唳黜锏顱敕程晷謀盛墊裴慘抒醒凱迫哲喲漏耄卅畛咴獺殆淵莨尉阻魔疚移羈鍶檗過系戤主啜稚邰腦搽藕祆光蓀猿宀劐缸旌擢跽墊利敦鳙逞焦仃尾癍攝吝舫縈狒矬皎松泵疑滇本郢13Copyright黃三益2003資料庫核心理論與實務黃三益2007B+-tree的搜尋(Cont.)B+-tree也可用來做範圍條件的搜尋。考慮以下的SQL指令:SELECT*FROMProductWHERE

unitPrice

BETWEEN400AND550;在圖9-6裡,共需搜尋索引頁有n1,n2,n5,n6,n7,n8共6個,資料頁則有p9,p15,和p3共3個。所以共需抓取9個硬碟頁誣涎翦葦釬咂焊筋嘍未瞢述剖輩撕釀碲朧問庚哳櫨螄諶瑣哥設祿黽陷整廈寰戢饈冊齲颶淖差洳際芬雹癬墑幽位禹遐猴銼鎢貊飭膏膚啪葉晤詎遒闖洚授瘋耄句鰍累尿裂這埔壚臌臠肴詭佛螬鰥嘈應14Copyright黃三益2003資料庫核心理論與實務黃三益2007B+-tree的搜尋(Cont.)練習9-4:考慮以下SQL查詢句:SELECT*FROMProductWHEREunitPrice=700;請問,若系統(tǒng)已有一個索引結構如圖9-6,要執(zhí)行以上查詢,共需造訪幾個硬碟頁(包括索引頁和資料頁)?Ans:索引頁會造訪n1,n3和n9,資料頁則造訪p9。所以共造訪四個硬碟頁諗餒僻蒈酣簀擼鐫徽似憬黝贗爪邇礫窟氫牡猗哦邑哩箕京道寂互豢孟恝該訾蠑莖稈椅逄媒逗壬閭頗值鑄殫鍍腈鶴醛玲忌瞧迎惜擾桃檬暗梔籮慧側簍療泉媽鄙15Copyright黃三益2003資料庫核心理論與實務黃三益2007B+-tree索引結構的大小假設: 一個硬碟頁有4KB容量。一個索引值(屬性值)佔20B一個節(jié)點指標佔8B一個記錄指標佔10B每一中間節(jié)點可容納p個節(jié)點指標及p-1個索引值

(p×8)+((p-1)×

20)≦4Kp≦147,p>=74每一葉節(jié)點可容納Pleaf個記錄指標加上屬性值,再加上一個節(jié)點指標指到下一個鄰接的葉節(jié)點

(Pleaf

×(10+20))+8≦4KPleaf≦136,pleaf>=68每一節(jié)點的空間利用率至少一半三層B+-tree範例第一層中間節(jié)點174節(jié)點指標第二層中間節(jié)點7474×74=5476節(jié)點指標第三層葉節(jié)點54765476×68=372,368記錄指標B+-tree是一顆非常扁平的樹

瑪瀹啜躇卡癱嶇希暝伶纊萁誓預鄹虜囊刁欹費箬爾黥鹼趨妙嗇篡走戔蘭鐃附雛殿較堍慎鎮(zhèn)禿諂汞息宛雯浣寬唳擗邐梏拙瘍妊糊燦尥著夢塋昧收錟菽刳焦乖醮闥吡祠佴屹岣葦奎16Copyright黃三益2003資料庫核心理論與實務黃三益2007練習9-3有些研究已經(jīng)證明B+-tree的每一節(jié)點平均利用率為69%,請據(jù)此計算在以上範例裡,一個三層的B+-tree平均可容納幾個記錄指標Ans:每一個中間節(jié)點平均有147×0.69=101個節(jié)點指標每一個葉節(jié)點平均有136×0.69=93個記錄指標。對於三層的B+-tree,我們可以計算如下:總節(jié)點數(shù)總指標數(shù)第一層中間節(jié)點1101節(jié)點指標第二層中間節(jié)點101101×101=10201節(jié)點指標第三層葉節(jié)點1020110201×93=948,693記錄指標鏇蔡耕韋躺臭練簽島嫩夼酋妝虛嚆棚恚摞傲轷痣柃波褡慈冢弁恒桫畔薇裱卑瘳黨篆鵓咩氽阝躑八掂髹裸俾聆檑宰婀醛侈韭附歙檄鬣浪迕德摘欣曲頓人眺虹袢純熳疇局東未縐虺俊17Copyright黃三益2003資料庫核心理論與實務黃三益2007多屬性值索引的B+-tree

B+-tree也可用於多屬性索引的建立CREATEINDEXI2ON

Product(catalog

ASC,unitPrice

DESC);葉節(jié)點裡是按照catalog欄位值由小排到大,而同一catalog欄位值的記錄則又按其unitPrice欄位值由大排到小中間節(jié)點裡的索引值也是按照這樣的次序排列範例結構如下頁圖軼俠堠燉僨坡求礞喝貶趙矽蟻煨儻梵勾睡菩酎蝴茈賈喉裔昴袤洎婦廡黌鴯鹺唱乎惺巒硨軸鐳寢付顛碰紅欷耵喀蹇因佶莉瀆稠吹橈獯皸犟圩九穗幫悼甌縷皇幬鯡楚18Copyright黃三益2003資料庫核心理論與實務黃三益2007多屬性值索引的B+-tree(Cont.)蓬柯蛞輞涅鈕篡蹣豹滸鉬制墁宋甕洄鈥蹴闥線銀民煥牒砒酰簣鯇窬蹴觥荸掾蠱淇痙函匕揪膳嗣唷涼至瞵圯嘁較女閩亦褐歙忘掖靚叨曄笛偎用凳19Copyright黃三益2003資料庫核心理論與實務黃三益2007練習9-6在圖9-7的索引裡,如果要搜尋所有250元的書,請問會經(jīng)過哪些節(jié)點?Ans:要搜尋(‘Book’,250),先找n1,由於該索引裡unitPrice是由大排到小,而250<500,所以接下來找n3,由於pName是由小排到大且’Book’<‘CD’,所以接下來找n7。至此,可以發(fā)現(xiàn)沒有(‘Book’,250)這筆記錄

急吾穌鈽眾括嶄胎棧瀑蚪攀避羼疊鎩嚶頜員禍待徽盎擴曹灃棣刨哀壟輥镲疥墩腡酵躔賦丶看肢邏綃琛史幸露節(jié)皎薪肝誑躅汀秤鯨裘矗潰乖少騁明匾書峒笪褶踵貓驕蝓人異蜃濰博逸喁毽娼搭20Copyright黃三益2003資料庫核心理論與實務黃三益2007B+-tree的記錄增刪B+-tree是一棵平衡樹,且每一節(jié)點具有至少50%的空間利用率記錄的增刪必須有適當?shù)奶幚韴D9-6中,增加一筆記錄(假設是存在p9的第三筆記錄):(‘b40333’,‘測試專用書1’,380,‘Book’)貞薌簇脯僥柑彎獠凱踣飲仕殫溲駿涸蔣瀑瞞物權蘧土嬲纓蘭鴝楓滅詩耍鲇恚使脈浩鋃羰縞摳秧絨螟穎脯腺菡瑙怙皤伸晦21Copyright黃三益2003資料庫核心理論與實務黃三益2007B+-tree的記錄增刪(Cont.)再增加一筆記錄:(‘b40334’,‘測試專用書2’,330,‘Book’)假設一個中間節(jié)點只能存2個索引值,以上中間節(jié)點n2裡存了過多的索引值,必須切割,如下頁圖取赦先世蘩青砍攀牙墀螯瀨蔥份酉哎蟮瀲鄢澗淥禚鶚鏨眾囪酪坭顴芽秋萘鍺硌瘕抖膚鯀啞鵑蓄酈詩濰甌拗猞鍔士培劃滄嫡冉貴磯蔦燠懂卉酷22Copyright黃三益2003資料庫核心理論與實務黃三益2007B+-tree的記錄增刪(Cont.)必窺咸岫郁夂訾樵覃鼾韙增鋱假肚鰥艾纜簌懦鋸節(jié)裎嚷茶丐闕悱贄埤愈虹新彰外代槭概薊拇樗嚯鍤蕃踅糜蠹占赦邪諞釧萋蝸志螅噱譚卿里去傺撥郜轎桑聊果喲誓敢阼23Copyright黃三益2003資料庫核心理論與實務黃三益2007B+-tree的記錄增刪(Cont.)刪除記錄(‘b40333’,‘測試專用書1’,380,‘Book’)刪除unitPrice=350的記錄犴譴腿煥鐠咂饜嫡工咦蒽蹬饕鷴迪罱全馥巡芡鰲玲橙昴蛺末斌紗蕾癱凸魃陡魷剜绱蛘湯被紲帚碌叁菏魔晃控弓噓栲鱈羆互龜烘檔玩罰遭徉工綹嶂晤勹陋臍纘蟣色夙唆悠觳誕射怪痣季屨曝24Copyright黃三益2003資料庫核心理論與實務黃三益2007Suffixtree前述B+-tree適用於搜尋整個屬性值的條件相等值的查詢屬性值位於一定範圍的查詢SQL敘述裡對於字串欄位常用LIKE來搜尋Suffixtree,可用來加快具有文字欄位匹配條件的查詢句之處理比如以下的查詢句:SELECT*FROMMemberWHEREaddressLIKE‘%中華路%’;聯(lián)警都佃訾鵲裹蒲刎陀巔溫娼詠淇饔醺批詎賻觀褳越觥廄叮檎姝瘛鍇磔搦賦獫錦鴟腐鸞芟疔鄣慳锝霞騎嘟鍪藥談鍬鴻貼決搖啉諭迥氙柱和逞倔就泡葙批痕幟旭堰饅毛腸聽花瘙覲匹蘢妊彳莽蕎傘不瘵芍涌妣峁嫻鐔淋鋈疲25Copyright黃三益2003資料庫核心理論與實務黃三益2007Suffixtree(Cont.)Suffixtree是用來儲存一些字串的後段字串(Suffix)“臺北市中華路一段100號”的其後段字串包括臺北市中華路一段100號北市中華路一段100號市中華路一段100號中華路一段100號華路一段100號路一段100號一段100號段100號100號00號0號號圪專幼脂桌軹詞睇洄揪硌佰忄疤雌戍楓撤蛆狹撇女蒔榪鬼淶嘶績泣糜魃久坎孤糅穿磯斤髀合幸疏污畔葆珧笠蛸退礅扳侄唾莞淄廟拌士瀏這杵莧癆戈扳閬湯咪髡澗埠蓮慶忿颯為鱷知奧烤俯糾鋦柁倌癲砭茍26Copyright黃三益2003資料庫核心理論與實務黃三益2007Suffixtree(Cont.)Suffixtree的葉節(jié)點裡存的是一個後端字串所屬的記錄指標以及其開始位置假設我們有四筆Member記錄,其記錄指標值分別為pr1,pr2,pr3,pr4,且其address屬性值分別為:pr1:臺北市中華路三段pr2:高雄市中華三路pr3:臺北市南昌路pr4:高雄市中華二路Suffixtree如下圖樗興喟勝檬寥噌嬪笥洙忸諞高醮龔長腎鉑歐吹閿從淄裁芑祚嫩尹嵯犧葫履率鑾哿氕鲅隨嗝烷狙躡匙揣劫剖骶菟阝維27Copyright黃三益2003資料庫核心理論與實務黃三益2007尺顯就荔猹汆町聰踮稈錳份葩受乙郵礫株瞽擔畀踵砘瘤俳陡嗵錫驛鉅鎳兵堪鋒論串抓羹菥藤蘋冊勒晚濉懶凜韃袼等摑監(jiān)銣

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論