国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺談海量數(shù)據(jù)庫(kù)中的索引技術(shù)

2011-12-31 00:00:00龔劍敏
考試周刊 2011年87期


  海量數(shù)據(jù)是新進(jìn)出現(xiàn)的一個(gè)詞,它用來(lái)形容數(shù)目巨大、空前浩瀚的數(shù)量?,F(xiàn)代社會(huì)很多行業(yè)部門中都需要操作海量數(shù)據(jù),如通訊部門需要操作通訊方面的數(shù)據(jù),氣象部門需要監(jiān)測(cè)氣象方面的數(shù)據(jù),招考部門需要調(diào)用招考方面的數(shù)據(jù),這些部門處理的數(shù)據(jù)量都非常大。包括各種文字、數(shù)字、時(shí)間、聲音、圖像、報(bào)表、超文本等各種類型的數(shù)據(jù)信息。伴隨著海量數(shù)據(jù)的產(chǎn)生,存儲(chǔ)這些數(shù)據(jù)的數(shù)據(jù)庫(kù)——即海量數(shù)據(jù)庫(kù)的概念應(yīng)運(yùn)而生。那么,如何實(shí)現(xiàn)快速地從這些超大容量的數(shù)據(jù)庫(kù)中進(jìn)行查詢、分析、統(tǒng)計(jì),以及提取數(shù)據(jù)后對(duì)數(shù)據(jù)進(jìn)行分頁(yè)已成為系統(tǒng)管理員和數(shù)據(jù)庫(kù)管理員急需解決的難題。
  實(shí)現(xiàn)查詢優(yōu)化的關(guān)鍵任務(wù)是建立索引。索引是除表之外另一個(gè)重要的、由用戶定義的存儲(chǔ)在物理介質(zhì)上的數(shù)據(jù)結(jié)構(gòu)。當(dāng)根據(jù)索引碼的值搜索數(shù)據(jù)時(shí),索引提供了對(duì)數(shù)據(jù)的快速訪問(wèn)。不過(guò)沒(méi)有索引,數(shù)據(jù)庫(kù)也能根據(jù)SELECT語(yǔ)句成功地查找到結(jié)果。但隨著數(shù)據(jù)量和表變得越來(lái)越大,使用索引的好處就漸漸凸顯出來(lái)。數(shù)據(jù)索引好比是一本書前面的目錄,建立了索引之后就能加快數(shù)據(jù)庫(kù)的查詢速度。
  例如有以下的SQL語(yǔ)句:select * from table where id=215。
  如果沒(méi)有建立索引,要查到這條記錄,則必須找遍整個(gè)數(shù)據(jù)表,直到ID等于215的這一項(xiàng)被找到為止;建立了索引之后,直接在索引里面找215這一個(gè)數(shù)據(jù)項(xiàng),就可以快速及精確得知這一項(xiàng)的位置。就如同在圖書館查找一本書,如果圖書館的書架上沒(méi)有建立過(guò)索引目錄,要找到編號(hào)為215這的書就相當(dāng)費(fèi)勁。但是書架上編過(guò)了索引和目錄之后,要找到這本書應(yīng)該是很容易的了。
  創(chuàng)建索引可以大大提高系統(tǒng)的性能。但是索引是不是越多越好呢?索引會(huì)占用數(shù)據(jù)空間,同時(shí)還會(huì)占用一定的物理空間。建立索引需要耗費(fèi)時(shí)間;增加或刪除數(shù)據(jù)的同時(shí),都會(huì)導(dǎo)致索引改變。所以索引過(guò)多,也就沒(méi)有真正的意義了,我們?cè)谔幚頂?shù)據(jù)時(shí)應(yīng)該按需建立索引。
  索引可分為聚集索引和非聚集索引。
  聚集索引中的表數(shù)據(jù)按照索引的順序來(lái)存儲(chǔ)。對(duì)于聚集索引,葉子結(jié)點(diǎn)即存儲(chǔ)了真實(shí)的數(shù)據(jù)行,不再有另外單獨(dú)的數(shù)據(jù)頁(yè)。非聚集索引中的表數(shù)據(jù)存儲(chǔ)順序與索引順序無(wú)關(guān)。對(duì)于非聚集索引,葉結(jié)點(diǎn)包含索引字段值及指向數(shù)據(jù)頁(yè)數(shù)據(jù)行的邏輯指針,該層緊鄰數(shù)據(jù)頁(yè),其行數(shù)量與數(shù)據(jù)表行數(shù)據(jù)量一致。在一張表上只能創(chuàng)建一個(gè)聚集索引,因?yàn)檎鎸?shí)數(shù)據(jù)的物理順序只可能有一種。如果一張表沒(méi)有聚集索引,表中的數(shù)據(jù)行沒(méi)有特定的順序,所有的新行將被添加到表的末尾位置。
  那么,索引真正的優(yōu)點(diǎn)有哪些呢?可以總結(jié)為以下幾點(diǎn)。
 ?。?)索引可以避免遍歷整張數(shù)據(jù)表。多數(shù)查詢可以僅通過(guò)掃描少量的索引頁(yè)及數(shù)據(jù)頁(yè),而不需要查找歷所有數(shù)據(jù)頁(yè)。
 ?。?)對(duì)于非聚集索引,有些查詢甚至可以不訪問(wèn)數(shù)據(jù)頁(yè)。
  (3)聚集索引可以避免數(shù)據(jù)插入操作集中于表的最后一個(gè)數(shù)據(jù)頁(yè)。
 ?。?)一些情況下,索引還可用于避免排序操作。
  1.聚集索引與插入操作
  最簡(jiǎn)單的情況下,插入操作根據(jù)索引找到對(duì)應(yīng)的數(shù)據(jù)頁(yè),然后通過(guò)移動(dòng)已有的記錄為新的數(shù)據(jù)騰出空間,最后插入數(shù)據(jù)。如果數(shù)據(jù)頁(yè)已滿,則需要拆分?jǐn)?shù)據(jù)頁(yè)。頁(yè)拆分是一種耗費(fèi)資源的操作,一般數(shù)據(jù)庫(kù)系統(tǒng)中會(huì)有相應(yīng)的機(jī)制要盡量減少頁(yè)拆分的次數(shù),通常是通過(guò)為每頁(yè)預(yù)留空間來(lái)實(shí)現(xiàn)。在該使用的數(shù)據(jù)段上分配新的數(shù)據(jù)頁(yè),如果數(shù)據(jù)段已滿,則需要分配新段。調(diào)整索引指針,需要將相應(yīng)的索引頁(yè)讀入內(nèi)存并鎖定。大約有一半的數(shù)據(jù)行被歸入新的數(shù)據(jù)頁(yè)中。如果表還有非聚集索引,則需要更新這些索引指向新的數(shù)據(jù)頁(yè)。
  2.聚集索引與刪除操作
  刪除行將導(dǎo)致其下方的數(shù)據(jù)行向上移動(dòng)以填充刪除記錄造成的空白。如果刪除的行是該數(shù)據(jù)頁(yè)中的最后一行,那么該數(shù)據(jù)頁(yè)將被回收,相應(yīng)的索引頁(yè)中的記錄將被刪除。如果回收的數(shù)據(jù)頁(yè)位于跟該表的其他數(shù)據(jù)頁(yè)相同的段上,那么它可能在隨后的時(shí)間內(nèi)被利用。如果該數(shù)據(jù)頁(yè)是該段的唯一一個(gè)數(shù)據(jù)頁(yè),則該段也被回收。對(duì)于數(shù)據(jù)的刪除操作,可能導(dǎo)致索引頁(yè)中僅有一條記錄,這時(shí),該記錄可能會(huì)被移至鄰近的索引頁(yè)中,原索引頁(yè)將被回收,即索引被合并。
  3.非聚集索引與插入操作
  如果一張表包含一個(gè)非聚集索引但沒(méi)有聚集索引,則新的數(shù)據(jù)將被插入到最末一個(gè)數(shù)據(jù)頁(yè)中,然后非聚集索引將被更新。如果也包含聚集索引,該聚集索引將被用于查找新行將要處于什么位置,隨后聚集索引及非聚集索引將被更新。
  4.非聚集索引與刪除操作
  如果在刪除命令的Where子句中包含的列上,建有非聚集索引,那么該非聚集索引將被用于查找數(shù)據(jù)行的位置,數(shù)據(jù)刪除之后,位于索引葉子上的對(duì)應(yīng)記錄也將被刪除。如果該表上有其他非聚集索引,則它們?nèi)~子結(jié)點(diǎn)上的相應(yīng)數(shù)據(jù)也要?jiǎng)h除。如果刪除的數(shù)據(jù)是該數(shù)所頁(yè)中的唯一一條,則該頁(yè)也被回收,同時(shí)需要更新各個(gè)索引樹(shù)上的指針。由于沒(méi)有自動(dòng)的合并功能,如果應(yīng)用程序中有頻繁的隨機(jī)刪除操作,最后可能導(dǎo)致表包含多個(gè)數(shù)據(jù)頁(yè),但每個(gè)頁(yè)中只有少量數(shù)據(jù)。
  可見(jiàn)在數(shù)據(jù)庫(kù)中適當(dāng)?shù)亟⑺饕?,將大大縮短查詢的時(shí)間,提高數(shù)據(jù)插入刪除效率,在海量數(shù)據(jù)庫(kù)中,對(duì)于索引的合理使用尤為重要。

祁连县| 双流县| 卢湾区| 民乐县| 杨浦区| 宁安市| 奉贤区| 凤庆县| 汕头市| 孟州市| 江都市| 乐都县| 淄博市| 子洲县| 松江区| 北流市| 大厂| 天气| 柘城县| 曲周县| 客服| 布尔津县| 临安市| 武乡县| 库伦旗| 平遥县| 库车县| 汕尾市| 江都市| 苗栗县| 台前县| 徐州市| 留坝县| 瑞金市| 武邑县| 仁寿县| 彩票| 灵寿县| 游戏| 磴口县| 历史|