国产激情综合,欧美香蕉视频,国产成人免费精品,久久激情中文

快消品貨源批發(fā)市場
快消品貨源分銷平臺
 
 
當前位置: 貨源批發(fā)網(wǎng) » 網(wǎng)商學院 » 獨立商城 » 數(shù)據(jù)庫索引的實現(xiàn)原理

數(shù)據(jù)庫索引的實現(xiàn)原理

放大字體  縮小字體 發(fā)布日期:2024-11-08 07:37:57  來源:電商聯(lián)盟  作者:樂發(fā)網(wǎng)  瀏覽次數(shù):2

說白了,索引問題就是一個查找問題。。。

數(shù)據(jù)庫索引,是數(shù)據(jù)庫管理系統(tǒng)中一個排序的數(shù)據(jù)結(jié)構(gòu),以協(xié)助快速查詢、更新數(shù)據(jù)庫表中數(shù)據(jù)。索引的實現(xiàn)通常使用B樹及其變種B+樹
在數(shù)據(jù)之外,數(shù)據(jù)庫系統(tǒng)還維護著滿足特定查找算法的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)以某種方式引用(指向)數(shù)據(jù),這樣就可以在這些數(shù)據(jù)結(jié)構(gòu)上實現(xiàn)高級查找算法。這種數(shù)據(jù)結(jié)構(gòu),就是索引。
為表設置索引要付出代價的:一是增加了數(shù)據(jù)庫的存儲空間,二是在插入和修改數(shù)據(jù)時要花費較多的時間(因為索引也要隨之變動)。
上圖展示了一種可能的索引方式。左邊是數(shù)據(jù)表,一共有兩列七條記錄,最左邊的是數(shù)據(jù)記錄的物理地址(注意邏輯上相鄰的記錄在磁盤上也并不是一定物理相鄰的)。為了加快Col2的查找,可以維護一個右邊所示的二叉查找樹,每個節(jié)點分別包含索引鍵值和一個指向?qū)獢?shù)據(jù)記錄物理地址的指針,這樣就可以運用二叉查找在O(log2n)的復雜度內(nèi)獲取到相應數(shù)據(jù)。

創(chuàng)建索引可以大大提高系統(tǒng)的性能。
第一,通過創(chuàng)建唯一性索引,可以保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性。
第二,可以大大加快數(shù)據(jù)的檢索速度,這也是創(chuàng)建索引的最主要的原因。
第三,可以加速表和表之間的連接,特別是在實現(xiàn)數(shù)據(jù)的參考完整性方面特別有意義。
第四,在使用分組和排序子句進行數(shù)據(jù)檢索時,同樣可以顯著減少查詢中分組和排序的時間。
第五,通過使用索引,可以在查詢的過程中,使用優(yōu)化隱藏器,提高系統(tǒng)的性能。 
 
也許會有人要問:增加索引有如此多的優(yōu)點,為什么不對表中的每一個列創(chuàng)建一個索引呢?因為,增加索引也有許多不利的方面。
第一,創(chuàng)建索引和維護索引要耗費時間,這種時間隨著數(shù)據(jù)量的增加而增加。
第二,索引需要占物理空間,除了數(shù)據(jù)表占數(shù)據(jù)空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會更大。
第三,當對表中的數(shù)據(jù)進行增加、刪除和修改的時候,索引也要動態(tài)的維護,這樣就降低了數(shù)據(jù)的維護速度。
 
索引是建立在數(shù)據(jù)庫表中的某些列的上面。在創(chuàng)建索引的時候,應該考慮在哪些列上可以創(chuàng)建索引,在哪些列上不能創(chuàng)建索引。一般來說,應該在這些列上創(chuàng)建索引:在經(jīng)常需要搜索的列上,可以加快搜索的速度;在作為主鍵的列上,強制該列的唯一性和組織表中數(shù)據(jù)的排列結(jié)構(gòu);在經(jīng)常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度;在經(jīng)常需要根據(jù)范圍進行搜索的列上創(chuàng)建索引,因為索引已經(jīng)排序,其指定的范圍是連續(xù)的;在經(jīng)常需要排序的列上創(chuàng)建索引,因為索引已經(jīng)排序,這樣查詢可以利用索引的排序,加快排序查詢時間;在經(jīng)常使用在WHERe子句中的列上面創(chuàng)建索引,加快條件的判斷速度。
 
同樣,對于有些列不應該創(chuàng)建索引。一般來說,不應該創(chuàng)建索引的的這些列具有下列特點:
第一,對于那些在查詢中很少使用或者參考的列不應該創(chuàng)建索引。這是因為,既然這些列很少使用到,因此有索引或者無索引,并不能提高查詢速度。相反,由于增加了索引,反而降低了系統(tǒng)的維護速度和增大了空間需求。
第二,對于那些只有很少數(shù)據(jù)值的列也不應該增加索引。這是因為,由于這些列的取值很少,例如人事表的性別列,在查詢的結(jié)果中,結(jié)果集的數(shù)據(jù)行占了表中數(shù)據(jù)行的很大比例,即需要在表中搜索的數(shù)據(jù)行的比例很大。增加索引,并不能明顯加快檢索速度。
第三,對于那些定義為text, image和bit數(shù)據(jù)類型的列不應該增加索引。這是因為,這些列的數(shù)據(jù)量要么相當大,要么取值很少。
第四,當修改性能遠遠大于檢索性能時,不應該創(chuàng)建索引。這是因為,修改性能和檢索性能是互相矛盾的。當增加索引時,會提高檢索性能,但是會降低修改性能。當減少索引時,會提高修改性能,降低檢索性能。因此,當修改性能遠遠大于檢索性能時,不應該創(chuàng)建索引。
 
根據(jù)數(shù)據(jù)庫的功能,可以在數(shù)據(jù)庫設計器中創(chuàng)建三種索引:唯一索引、主鍵索引和聚集索引
唯一索引 
唯一索引是不允許其中任何兩行具有相同索引值的索引。
當現(xiàn)有數(shù)據(jù)中存在重復的鍵值時,大多數(shù)數(shù)據(jù)庫不允許將新創(chuàng)建的唯一索引與表一起保存。數(shù)據(jù)庫還可能防止添加將在表中創(chuàng)建重復鍵值的新數(shù)據(jù)。例如,如果在employee表中職員的姓(lname)上創(chuàng)建了唯一索引,則任何兩個員工都不能同姓。主鍵索引數(shù)據(jù)庫表經(jīng)常有一列或列組合,其值唯一標識表中的每一行。該列稱為表的主鍵。在數(shù)據(jù)庫關系圖中為表定義主鍵將自動創(chuàng)建主鍵索引,主鍵索引是唯一索引的特定類型。該索引要求主鍵中的每個值都唯一。當在查詢中使用主鍵索引時,它還允許對數(shù)據(jù)的快速訪問。聚集索引在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。一個表只能包含一個聚集索引。
如果某索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的數(shù)據(jù)訪問速度。
 
 
局部性原理與磁盤預讀
由于存儲介質(zhì)的特性,磁盤本身存取就比主存慢很多,再加上機械運動耗費,磁盤的存取速度往往是主存的幾百分分之一,因此為了提高效率,要盡量減少磁盤I/O。為了達到這個目的,磁盤往往不是嚴格按需讀取,而是每次都會預讀,即使只需要一個字節(jié),磁盤也會從這個位置開始,順序向后讀取一定長度的數(shù)據(jù)放入內(nèi)存。這樣做的理論依據(jù)是計算機科學中著名的局部性原理當一個數(shù)據(jù)被用到時,其附近的數(shù)據(jù)也通常會馬上被使用。程序運行期間所需要的數(shù)據(jù)通常比較集中。
由于磁盤順序讀取的效率很高(不需要尋道時間,只需很少的旋轉(zhuǎn)時間),因此對于具有局部性的程序來說,預讀可以提高I/O效率。
預讀的長度一般為頁(page)的整倍數(shù)。頁是計算機管理存儲器的邏輯塊,硬件及操作系統(tǒng)往往將主存和磁盤存儲區(qū)分割為連續(xù)的大小相等的塊,每個存儲塊稱為一頁(在許多操作系統(tǒng)中,頁得大小通常為4k),主存和磁盤以頁為單位交換數(shù)據(jù)。當程序要讀取的數(shù)據(jù)不在主存中時,會觸發(fā)一個缺頁異常,此時系統(tǒng)會向磁盤發(fā)出讀盤信號,磁盤會找到數(shù)據(jù)的起始位置并向后連續(xù)讀取一頁或幾頁載入內(nèi)存中,然后異常返回,程序繼續(xù)運行。
B-/+Tree索引的性能分析
到這里終于可以分析B-/+Tree索引的性能了。
上文說過一般使用磁盤I/O次數(shù)評價索引結(jié)構(gòu)的優(yōu)劣。先從B-Tree分析,根據(jù)B-Tree的定義,可知檢索一次最多需要訪問h個節(jié)點。數(shù)據(jù)庫系統(tǒng)的設計者巧妙利用了磁盤預讀原理,將一個節(jié)點的大小設為等于一個頁,這樣每個節(jié)點只需要一次I/O就可以完全載入。為了達到這個目的,在實際實現(xiàn)B-Tree還需要使用如下技巧:
每次新建節(jié)點時,直接申請一個頁的空間,這樣就保證一個節(jié)點物理上也存儲在一個頁里,加之計算機存儲分配都是按頁對齊的,就實現(xiàn)了一個node只需一次I/O。
B-Tree中一次檢索最多需要h-1次I/O(根節(jié)點常駐內(nèi)存),漸進復雜度為O(h)=O(logdN)。一般實際應用中,出度d是非常大的數(shù)字,通常超過100,因此h非常小(通常不超過3)。
而紅黑樹這種結(jié)構(gòu),h明顯要深的多。由于邏輯上很近的節(jié)點(父子)物理上可能很遠,無法利用局部性,所以紅黑樹的I/O漸進復雜度也為O(h),效率明顯比B-Tree差很多。
 
綜上所述,用B-Tree作為索引結(jié)構(gòu)效率是非常高的。
 
 
應該花時間學習B-樹和B+樹數(shù)據(jù)結(jié)構(gòu)
=============================================================================================================
1)B樹
B樹中每個節(jié)點包含了鍵值和鍵值對于的數(shù)據(jù)對象存放地址指針,所以成功搜索一個對象可以不用到達樹的葉節(jié)點。
成功搜索包括節(jié)點內(nèi)搜索和沿某一路徑的搜索,成功搜索時間取決于關鍵碼所在的層次以及節(jié)點內(nèi)關鍵碼的數(shù)量。
在B樹中查找給定關鍵字的方法是:首先把根結(jié)點取來,在根結(jié)點所包含的關鍵字K1,…,kj查找給定的關鍵字(可用順序查找或二分查找法),若找到等于給定值的關鍵字,則查找成功;否則,一定可以確定要查的關鍵字在某個Ki或Ki+1之間,于是取Pi所指的下一層索引節(jié)點塊繼續(xù)查找,直到找到,或指針Pi為空時查找失敗。
2)B+樹
B+樹非葉節(jié)點中存放的關鍵碼并不指示數(shù)據(jù)對象的地址指針,非也節(jié)點只是索引部分。所有的葉節(jié)點在同一層上,包含了全部關鍵碼和相應數(shù)據(jù)對象的存放地址指針,且葉節(jié)點按關鍵碼從小到大順序鏈接。如果實際數(shù)據(jù)對象按加入的順序存儲而不是按關鍵碼次數(shù)存儲的話,葉節(jié)點的索引必須是稠密索引,若實際數(shù)據(jù)存儲按關鍵碼次序存放的話,葉節(jié)點索引時稀疏索引。
B+樹有2個頭指針,一個是樹的根節(jié)點,一個是最小關鍵碼的葉節(jié)點。
所以 B+樹有兩種搜索方法:
一種是按葉節(jié)點自己拉起的鏈表順序搜索。
一種是從根節(jié)點開始搜索,和B樹類似,不過如果非葉節(jié)點的關鍵碼等于給定值,搜索并不停止,而是繼續(xù)沿右指針,一直查到葉節(jié)點上的關鍵碼。所以無論搜索是否成功,都將走完樹的所有層。
B+ 樹中,數(shù)據(jù)對象的插入和刪除僅在葉節(jié)點上進行。
這兩種處理索引的數(shù)據(jù)結(jié)構(gòu)的不同之處:
a,B樹中同一鍵值不會出現(xiàn)多次,并且它有可能出現(xiàn)在葉結(jié)點,也有可能出現(xiàn)在非葉結(jié)點中。而B+樹的鍵一定會出現(xiàn)在葉結(jié)點中,并且有可能在非葉結(jié)點中也有可能重復出現(xiàn),以維持B+樹的平衡。
b,因為B樹鍵位置不定,且在整個樹結(jié)構(gòu)中只出現(xiàn)一次,雖然可以節(jié)省存儲空間,但使得在插入、刪除操作復雜度明顯增加。B+樹相比來說是一種較好的折中。
c,B樹的查詢效率與鍵在樹中的位置有關,最大時間復雜度與B+樹相同(在葉結(jié)點的時候),最小時間復雜度為1(在根結(jié)點的時候)。而B+樹的時候復雜度對某建成的樹是固定的。

樂發(fā)網(wǎng)超市批發(fā)網(wǎng)提供超市貨源信息,超市采購進貨渠道。超市進貨網(wǎng)提供成都食品批發(fā),日用百貨批發(fā)信息、微信淘寶網(wǎng)店超市采購信息和超市加盟信息.打造國內(nèi)超市采購商與批發(fā)市場供應廠商搭建網(wǎng)上批發(fā)市場平臺,是全國批發(fā)市場行業(yè)中電子商務權威性網(wǎng)站。

本文內(nèi)容整合網(wǎng)站:百度百科知乎淘寶平臺規(guī)則

本文來源: 數(shù)據(jù)庫索引的實現(xiàn)原理

分享與收藏:  網(wǎng)商學院搜索  告訴好友  關閉窗口  打印本文 本文關鍵字:
 
更多..資源下載
獨立商城圖文
獨立商城網(wǎng)商學院推薦
獨立商城點擊排行
 
手機版 手機掃描訪問
国产激情综合,欧美香蕉视频,国产成人免费精品,久久激情中文
色8久久久久| 欧美一级一区| 日韩av中文字幕一区二区三区| 国产精品试看| 欧美日韩国产观看视频| 麻豆91小视频| 日本综合精品一区| 亚洲精品免费观看| 亚洲国产影院| 亚洲激情黄色| 午夜在线一区二区| 亚洲精品成人一区| 国产精品尤物| 国产不卡av一区二区| 老牛国内精品亚洲成av人片| 欧美激情网址| 伊人久久av| 欧美国产91| 欧美精品黄色| 日韩一区欧美二区| 久久亚洲国产精品一区二区| 欧美交a欧美精品喷水| 福利一区在线| 999国产精品永久免费视频app| 久久中文字幕av一区二区不卡| 日韩欧美网址| 日韩在线短视频| 日韩视频二区| 亚洲天堂av资源在线观看| 欧美亚洲三区| 999国产精品999久久久久久| 蜜臀久久99精品久久久画质超高清 | 免费在线小视频| 婷婷综合亚洲| 亚洲精品精选| 亚洲欧洲高清| 欧美天堂一区| 蜜桃tv一区二区三区| 91亚洲国产| 日本中文字幕视频一区| 国产一区欧美| 亚洲男人在线| 国产精品二区不卡| 日韩一区精品视频| 日韩大片免费观看| 蜜臀a∨国产成人精品| 黑森林国产精品av| 日韩中文字幕亚洲一区二区va在线| 国产日韩欧美一区二区三区 | 国产日韩欧美| 日韩综合一区| 欧美精品观看| 首页国产欧美久久| 热三久草你在线| 国产剧情在线观看一区| 丝袜国产日韩另类美女| 久久久夜精品| 91大神在线观看线路一区| 99久精品视频在线观看视频| av亚洲一区二区三区| 久久爱www.| 91久久精品无嫩草影院| 午夜精品婷婷| 99精品美女| 美腿丝袜亚洲一区| 免费在线看一区| 国产精品试看| 欧美日韩精品免费观看视频完整| 精品在线99| 久草精品视频| 国产精品二区影院| 国产美女撒尿一区二区| 日本三级亚洲精品| 日韩精品一区二区三区中文字幕| 日韩久久电影| 国产亚洲一区二区手机在线观看| 91精品国产乱码久久久久久久 | 亚洲精品成人一区| 视频一区视频二区在线观看| 美女被久久久| 欧美日一区二区三区在线观看国产免 | 欧美午夜精彩| 午夜日本精品| 日韩福利在线观看| 欧美成人aaa| 日韩电影免费在线观看| 日韩久久精品网| 亚洲欧美日本日韩| 青青草伊人久久| 欧美国产偷国产精品三区| 日韩黄色大片网站| 好看的亚洲午夜视频在线| 免费精品视频最新在线| 国产精品日韩精品在线播放| 日韩国产欧美视频| 免费观看亚洲天堂| 欧美 日韩 国产精品免费观看| 日韩国产欧美在线播放| 国产精品流白浆在线观看| 日韩欧美二区| 欧美三级第一页| 激情欧美一区二区三区| 久久精品97| 女主播福利一区| 久久免费影院| 日韩一区欧美二区| 色婷婷久久久| 日本午夜精品久久久| 99在线|亚洲一区二区| 免费在线亚洲欧美| 蜜桃av一区二区三区电影| 久久久久一区| 正在播放日韩精品| 日本成人手机在线| 在线亚洲免费| 丝袜av一区| 色婷婷久久久| 日韩综合精品| 黄色在线观看www| 精品国产亚洲一区二区三区大结局| 国产精品porn| 亚洲日本欧美| 国产一区二区精品| 国产成人久久精品麻豆二区 | 人人精品亚洲| 麻豆视频观看网址久久| 久久福利影视| 日韩欧美一区二区三区在线观看| 欧美aa一级| 国产欧美精品久久| 成人福利av| 日韩一区二区三区免费播放| 久久婷婷丁香| 麻豆精品在线| 黄色日韩精品| 国产精选久久| 国产麻豆一区| 免费成人av在线播放| 久久精品国产99久久| 精品国产一区二区三区av片| 亚洲人www| 国产视频一区三区| 黄毛片在线观看| www.九色在线| 国产精品麻豆成人av电影艾秋 | 精品日韩毛片| 麻豆久久一区二区| 久久a爱视频| 日韩精品亚洲专区| 久久福利在线| 九九久久国产| 成人在线丰满少妇av| 国产高清不卡| 四虎4545www国产精品 | av在线最新| 伊人久久大香伊蕉在人线观看热v| 国产图片一区| 国产精品九九| 老牛国内精品亚洲成av人片| 丰满少妇一区| 一区二区电影| 欧美欧美黄在线二区| 麻豆91在线播放| 国产精品丝袜在线播放| 丝袜诱惑一区二区| 亚洲综合精品四区| 天堂va欧美ⅴa亚洲va一国产| 国产人成精品一区二区三| 欧美性感美女一区二区| 久久久久久色 | 国产日产精品_国产精品毛片| 91免费精品国偷自产在线在线| 日韩精品一区二区三区中文字幕| 亚洲精品激情| 激情不卡一区二区三区视频在线| 久久香蕉国产| 日韩午夜视频在线| 久久麻豆视频| 91精品观看| 日韩精品欧美| 日韩国产欧美视频| 久久精品91| 欧美日韩xxxx| 亚洲欧美日韩视频二区| 国内精品福利| 久久精品系列| 午夜亚洲福利| 精品视频在线你懂得| 欧美激情亚洲| 日韩欧美2区| 精品一区亚洲| 亚洲欧美日韩国产一区| 亚洲成人不卡| 精品视频自拍| 99在线|亚洲一区二区| 国产精品毛片在线| 国产99亚洲| 久草免费在线视频| 久久不卡日韩美女| 激情自拍一区|