亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Oracle索引分析與查詢優(yōu)化

        2016-05-14 23:40:12崔黎明志遠(yuǎn)李婧

        崔黎 明志遠(yuǎn) 李婧

        摘要:Oracle是目前國(guó)內(nèi)在大型數(shù)據(jù)存儲(chǔ)中用得比較多的一種關(guān)系型數(shù)據(jù)庫,磁盤陣列技術(shù)(RAID)和集群技術(shù)(RAC)的運(yùn)用,使Oracle在處理數(shù)據(jù)效率和數(shù)據(jù)安全上有非常大的提高,在國(guó)內(nèi)交通、電力,通信和金融等重要領(lǐng)域都有廣泛的用途。本文基于Oracle 11g版本,對(duì)Rowid和索引的原理機(jī)制做出分析,并論述利用這些原理對(duì)大型數(shù)據(jù)表查詢的優(yōu)化。

        關(guān)鍵詞:Oracle Rowid 索引 查詢

        中圖分類號(hào):TP311.13 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)07-0234-02

        在邏輯上,Oracle是由多個(gè)表空間構(gòu)成的,在新建一個(gè)表空間的時(shí)候,必須指定存儲(chǔ)的文件,可以指向多個(gè)存儲(chǔ)在不同磁盤上的數(shù)據(jù)。表空間下面分為段、區(qū)、塊。新建一張表的時(shí)候,Oracle數(shù)據(jù)庫就會(huì)為它創(chuàng)建一個(gè)段。所謂區(qū)就是指連續(xù)的塊(block)構(gòu)成的空間,一般區(qū)包含8個(gè)空塊,block是Oracle數(shù)據(jù)庫最小的數(shù)據(jù)空間,一般為8k或16k,當(dāng)開始往這個(gè)表中插入數(shù)據(jù)的時(shí)候,Oralce數(shù)據(jù)庫會(huì)自動(dòng)為這個(gè)表分配一個(gè)區(qū),并把數(shù)據(jù)不斷往此區(qū)進(jìn)行填充,當(dāng)數(shù)據(jù)填滿此區(qū)后,Oralce數(shù)據(jù)庫會(huì)重新為該表分配一個(gè)區(qū)而不是一個(gè)段。實(shí)際上,對(duì)于我們不同的查詢過程中,就是通過一些謂詞過濾條件,從對(duì)應(yīng)的數(shù)據(jù)塊中獲取正確的一行數(shù)據(jù)或多行數(shù)據(jù)。如何快速定位到該數(shù)據(jù)行,是一個(gè)數(shù)據(jù)庫學(xué)習(xí)者不斷探索的方向。

        1 Rowid

        1.1 簡(jiǎn)介

        從字面上理解是行標(biāo)識(shí)的意思,它是Oracle數(shù)據(jù)庫中數(shù)據(jù)表的一個(gè)偽列,用于存放該表中每一行數(shù)據(jù)的地址,在8i版本之前,Oracle采用受限制的rowid,它是由數(shù)據(jù)文件編號(hào),塊編號(hào)和數(shù)據(jù)在該塊內(nèi)的偏移量這三個(gè)部分構(gòu)成,長(zhǎng)度為6個(gè)字節(jié),因此在8i之前的版本中,每個(gè)數(shù)據(jù)庫最多可以包含1022個(gè)文件,每個(gè)文件最多能有4m個(gè)數(shù)據(jù)塊,而每個(gè)數(shù)據(jù)庫最多能存儲(chǔ)64k條記錄。為了突破長(zhǎng)度的限制和解決其他一些缺陷,Oracle數(shù)據(jù)庫引入了這樣一個(gè)概念:相對(duì)文件號(hào)。它的主要特點(diǎn)是改變之前rowid中數(shù)據(jù)文件編號(hào)是整個(gè)數(shù)據(jù)庫范圍組成的表空間,即文件編號(hào)為5的文件不再是數(shù)據(jù)庫中編號(hào)為5的數(shù)據(jù)文件,而是表空間中對(duì)應(yīng)編號(hào)的數(shù)據(jù)文件。如下圖1所示為Oracle11g中一個(gè)普通表的rowid。

        從該圖1中可以看到rowid共有18位,分為四部分,格式為:AAAAAABBBCCCCCCDDD,其中AAAAAA六位表示dataobjectid,根據(jù)這個(gè)id可以確定該行數(shù)據(jù)在哪個(gè)段中;BBB三位表示相對(duì)文件號(hào),通過這個(gè)字段號(hào)可以用來確定該行數(shù)據(jù)的絕對(duì)文件號(hào);CCCCCC六位表示datablocknumber,它是相對(duì)于datafile的編號(hào);最后三位DDD表示該行數(shù)據(jù)在哪一行。通過Oracle數(shù)據(jù)庫自帶的一些函數(shù)可以把字符串轉(zhuǎn)成數(shù)字形式圖2所示。

        1.2 rowid的應(yīng)用

        (1)通過rowid查找重復(fù)記錄的數(shù)據(jù),sql如下:

        (2)通過rowid刪除重復(fù)記錄的方法:

        2 索引

        2.1索引的概念

        一般情況下,用戶對(duì)數(shù)據(jù)庫最多的操作是進(jìn)行數(shù)據(jù)查詢,當(dāng)一張表很大需要進(jìn)行全表掃描時(shí),查詢就需要很長(zhǎng)的時(shí)間,服務(wù)器會(huì)造成大量的資源浪費(fèi),同時(shí)也會(huì)讓用戶體驗(yàn)效果變得很差。因此,Oracle數(shù)據(jù)庫引入了索引的機(jī)制。索引是一個(gè)獨(dú)立的物理存儲(chǔ)結(jié)構(gòu),類似于C語言中的指針的概念,是表中一列或者多列和指向表中存儲(chǔ)這些列值的地址的數(shù)據(jù),實(shí)際上就是Rowid。索引的本質(zhì),就是根據(jù)rowid,再到數(shù)據(jù)表中定位到某條數(shù)據(jù)。類似于一本書,索引是目錄,而書的內(nèi)容是數(shù)據(jù),那么rowid就是聯(lián)系目錄和內(nèi)容的那一個(gè)“頁碼”。

        2.2 索引的分類

        Oralce數(shù)據(jù)庫提供了多種類型的索引供選擇使用,在給定條件下選擇什么類型的索引,是單列還是組合列,對(duì)于數(shù)據(jù)庫的性能來說非常重要。本文對(duì)常用的幾種索引做下分析。

        2.2.1 B樹索引

        Oracle數(shù)據(jù)庫默認(rèn)創(chuàng)建的是B樹索引,可以有多列構(gòu)成復(fù)合索引,但最多不能超過32列。B數(shù)索引的結(jié)構(gòu)如下圖3所示。

        其中最頂層稱為根節(jié)點(diǎn),最底層稱為葉子節(jié)點(diǎn),每個(gè)葉子節(jié)點(diǎn)包含了索引值、Rowid以及指向后一個(gè)葉子節(jié)點(diǎn)和前一個(gè)葉節(jié)點(diǎn)的指針,因此Oracle可以分別從前后兩個(gè)方向來遍歷這個(gè)二叉樹。創(chuàng)建B樹索引的語法如下:

        createindex索引名on表名(列名[,列名,......]);

        一般來說,當(dāng)取出的數(shù)據(jù)行數(shù)占整個(gè)表的比例很小的時(shí)候,該索引的性能會(huì)很高;但是,當(dāng)該比例超過10%的時(shí)候,使用索引的效率就會(huì)變差,此時(shí),Oracle在基于CBO的規(guī)則下會(huì)選擇使用全表掃描。表kjyq_rz2016共中有21000條數(shù)據(jù),其中某個(gè)字段compid=“440C”的數(shù)據(jù)共有5000余條,此時(shí)在利用compid字段過濾進(jìn)行查詢時(shí),Oralce就會(huì)選擇使用全表掃描方式進(jìn)行,執(zhí)行計(jì)劃如圖4所示。

        而如果在查詢的時(shí)候強(qiáng)制使用索引方式,反而效果不好,強(qiáng)制索引的執(zhí)行計(jì)劃如圖5所示。

        對(duì)比兩圖來看,在強(qiáng)制使用索引的情況下,cost和iocost是使用全表掃描的將近5倍。所以在實(shí)際生產(chǎn)環(huán)境中,盡量讓Oracle數(shù)據(jù)庫自動(dòng)選擇執(zhí)行計(jì)劃而少用hint方式去強(qiáng)制使用索引。

        2.2.2 位圖索引

        位圖索引適用于在重復(fù)度比較高的場(chǎng)景中,比如某個(gè)表中包含性別列,它只可能有男和女兩個(gè)值。如果需要按照此列作為過濾條件,此時(shí)就可以把此列設(shè)置為位圖索引列。應(yīng)該注意的是,該列的不同值如果越少效果就越好。普通B樹索引的索引結(jié)構(gòu)中存儲(chǔ)著鍵值和鍵值的Rowid,并且是一一對(duì)應(yīng)的,而位圖索引主要針對(duì)大量相同值的列而創(chuàng)建(例如:類別,操作員,部門ID等),索引塊的一個(gè)索引行中存儲(chǔ)鍵值和起止Rowid,以及這些鍵值的位置編碼,位置編碼中的每一位表示鍵值對(duì)應(yīng)的數(shù)據(jù)行的有無,一個(gè)位圖索引塊可能指向的是幾十甚至成百上千行數(shù)據(jù)的位置。創(chuàng)建位圖索引的語法如下:

        createbitmapindex索引名on表名(列名[,列名,......]);

        還是針對(duì)上面的test1表進(jìn)行處理,刪除掉B數(shù)索引,同時(shí)在compid列上增加位圖索引,以該列作為過濾條件進(jìn)行查詢,執(zhí)行計(jì)劃如下圖6所示。

        從執(zhí)行計(jì)劃來看,Oracle此時(shí)會(huì)自動(dòng)按照位圖索引的方式而不是選擇全表掃描的方式了,對(duì)比上面的全表掃描方式和普通索引方式,無論是cost,iocost還是cpucost都有非常好的效果。

        3 結(jié)語

        本文對(duì)rowid,常用的B樹索引和位圖索引根據(jù)實(shí)際情況做了相應(yīng)的對(duì)比分析,并利用Oracle11g做了對(duì)比測(cè)試。我們?cè)趯?shí)際的數(shù)據(jù)庫生產(chǎn)運(yùn)用環(huán)境中,需要根據(jù)業(yè)務(wù)需求和表結(jié)構(gòu)選擇使用最適合的索引,如果出現(xiàn)索引失效的情況,則需重建索引。同時(shí)也要定期檢查表中的數(shù)據(jù)變化,根據(jù)不同的數(shù)據(jù)變化情況做出相應(yīng)的更改,及時(shí)有效的進(jìn)行數(shù)據(jù)庫的建立和維護(hù)。

        參考文獻(xiàn)

        [1]馮亞麗,蔡金武,馮正利,呂洪艷,劉芳吉.基于表結(jié)構(gòu)及索引的Oracle查詢優(yōu)化研究[J].哈爾濱商業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2011(06).

        [2]劉華清,陳振東,涂剛.數(shù)據(jù)庫索引與優(yōu)化[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2012(18).

        [3]趙琛.Oracle服務(wù)器性能影響因素分析與優(yōu)化[J].電腦編程技巧與維護(hù),2011(20).

        [4]劉威,周嫦娥.1553B網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)數(shù)據(jù)庫優(yōu)化設(shè)計(jì)[A].2011航空試驗(yàn)測(cè)試技術(shù)學(xué)術(shù)交流會(huì)論文集[C].2010.

        [5]馬傳松.基于Oracle分布式數(shù)據(jù)庫遠(yuǎn)程數(shù)據(jù)的維護(hù)和安全性的研究[D].廣東工業(yè)大學(xué),2003.

        [6]張新林.范式下的Oracle數(shù)據(jù)庫設(shè)計(jì)及其動(dòng)態(tài)交叉表的生成[J].計(jì)算機(jī)與現(xiàn)代化,2005(09).

        在线观看老湿视频福利| 国产精品性一区二区三区| 亚洲综合在线一区二区三区| 色婷婷精品久久二区二区蜜桃| 成人国产精品一区二区网站公司 | 玖玖资源站无码专区| 久久99亚洲网美利坚合众国| 美女被内射中出在线观看 | 国产成人色污在线观看| 久久久中文字幕日韩精品| 久久久av波多野一区二区| 欧美性猛交xxxx乱大交蜜桃| 国产视频精品一区白白色| 极品美女调教喷水网站| 国产一精品一av一免费| 无码国产精品一区二区免费16| 中国老太老肥熟女视频| 国产三级不卡一区不卡二区在线| √新版天堂资源在线资源| 亚洲第一网站免费视频| 中文字幕精品人妻av在线| 久久婷婷综合缴情亚洲狠狠| 4hu四虎永久在线观看| 国产精品欧美久久久久老妞| 国产精品女同二区五区九区| 国产精品免费一区二区三区四区 | 国产毛多水多高潮高清| 国产免费又色又爽又黄软件| 亚洲夫妻性生活视频网站| 日本少妇一区二区三区四区| 粉嫩被粗大进进出出视频| 国产成人拍精品免费视频| 免费黄网站永久地址进入| 波多野结衣在线播放| 久久精品人妻一区二区三区| 一本色道久久综合中文字幕| 国产精品高清视亚洲乱码| 亚洲成av人片在线观看ww| 久久精品国产亚洲一区二区| 国产91在线播放九色快色| 亚洲愉拍99热成人精品热久久|