• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Oracle數(shù)據(jù)庫(kù)高性能優(yōu)化設(shè)計(jì)方法初探

      2012-04-29 00:44:03覃艷
      電腦知識(shí)與技術(shù) 2012年23期
      關(guān)鍵詞:數(shù)據(jù)庫(kù)優(yōu)化設(shè)計(jì)

      覃艷

      摘要:為提高Oracle數(shù)據(jù)庫(kù)的性能,該文通過對(duì)數(shù)據(jù)庫(kù)的工作原理和系統(tǒng)主要結(jié)構(gòu)的分析,從數(shù)據(jù)庫(kù)的優(yōu)化可變結(jié)構(gòu)、SGA的使用、數(shù)據(jù)庫(kù)表的設(shè)計(jì)、索引的使用等六個(gè)方面的綜合闡述,總結(jié)了Oracle數(shù)據(jù)庫(kù)高性能優(yōu)化設(shè)計(jì)的方法。

      關(guān)鍵詞:Oracle;數(shù)據(jù)庫(kù);優(yōu)化;設(shè)計(jì)

      中圖分類號(hào):TP271文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)23-5505-03

      The Method of Oracle Database Performance Optimization Design

      QIN Yan

      (Sichuan Staff University of Science and Technology, Chengdu 610101, China)

      Abstract: In order to improve the performance of Oracle database, based on the analysis ing of the working principle and system structure of the database, comprehensive elaborate six point including the database optimization of variable structure, the use of SGA, database de? sign, index using and so on, summed up the Oracle database performance optimization design method.

      Key words: Oracle; database; optimize; design

      隨著信息社會(huì)與計(jì)算機(jī)網(wǎng)絡(luò)的高速發(fā)展,數(shù)據(jù)庫(kù)作為人們儲(chǔ)存數(shù)據(jù)的重要工具,其規(guī)模也隨之不斷的擴(kuò)大,此時(shí)對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的性能要求也越來越高。因此,如何設(shè)出一個(gè)滿足用戶需求的優(yōu)化的數(shù)據(jù)庫(kù),如何盡量地減少數(shù)據(jù)庫(kù)的存儲(chǔ)空間,如何提高查詢速度,不僅是目前每個(gè)DBA人員對(duì)數(shù)據(jù)庫(kù)優(yōu)化,而且也是數(shù)據(jù)庫(kù)設(shè)計(jì)人員、應(yīng)用的開發(fā)人員需要重點(diǎn)掌握的關(guān)鍵技能。

      Oracle數(shù)據(jù)庫(kù)依靠其在處理大型數(shù)據(jù)時(shí)的高性能,而成為商業(yè)領(lǐng)域應(yīng)用最廣泛和最流行的的數(shù)據(jù)庫(kù)平臺(tái),隨著用戶數(shù)的不斷增長(zhǎng),已成為大型商業(yè)應(yīng)用系統(tǒng)的御用后臺(tái)數(shù)據(jù)管理系統(tǒng)。但在實(shí)際應(yīng)用過程中,由于對(duì)Oracle本身的不熟悉,無法充分地發(fā)揮Ora cle在處理少量數(shù)據(jù)的優(yōu)越性。數(shù)據(jù)庫(kù)設(shè)計(jì)的性能是否優(yōu)化,會(huì)直接影響數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的正常運(yùn)行和工作效率,該文從數(shù)據(jù)庫(kù)設(shè)計(jì)的性能優(yōu)化著手,從數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)存優(yōu)化和SQL語句使用優(yōu)化等方面進(jìn)行全面闡述。

      1 Oracle數(shù)據(jù)庫(kù)高性能設(shè)計(jì)方法

      該文通過六個(gè)不同的側(cè)面,為Oracle數(shù)據(jù)庫(kù)高性能優(yōu)化設(shè)計(jì)提供參考方法。

      1.1優(yōu)化可變結(jié)構(gòu)OFA

      數(shù)據(jù)庫(kù)的設(shè)計(jì)中的邏輯配置決定著其性能是否優(yōu)化,因此在對(duì)表的空間設(shè)計(jì)時(shí)Oracle提供了一種優(yōu)化結(jié)構(gòu),即OFA(Optimal flexible Architecture),第一步是根據(jù)數(shù)據(jù)的用途以及使用對(duì)象進(jìn)行歸類,如可區(qū)分為用戶數(shù)據(jù)與系統(tǒng)數(shù)據(jù),索引數(shù)據(jù)與一般數(shù)據(jù),高活動(dòng)表與低活動(dòng)表。

      在進(jìn)行數(shù)據(jù)庫(kù)的邏輯數(shù)據(jù)配置時(shí)就遵循以下原則:

      1)將使用方式相同的段類型存儲(chǔ)相同位置;2)設(shè)計(jì)系統(tǒng)時(shí)以O(shè)racle提供的標(biāo)準(zhǔn)方式為基準(zhǔn);3)創(chuàng)建分離區(qū)域,以用于處理例外;4)將表空間的沖突設(shè)置為最小化;5)分享數(shù)據(jù)字典。

      1.2合理設(shè)計(jì)和管理數(shù)據(jù)表

      數(shù)據(jù)進(jìn)行物理的分享可能通過表分區(qū)功能來實(shí)現(xiàn),也就是可以將不同分區(qū)的數(shù)據(jù)以數(shù)據(jù)文件的方式儲(chǔ)存在不同的磁盤中。例如:對(duì)于一張含有大量數(shù)據(jù)的表,根據(jù)其中的一個(gè)字段進(jìn)行表分區(qū),在查詢的時(shí)候即可對(duì)某一個(gè)表分區(qū)進(jìn)行查詢,而省去了全表掃描的麻煩,也大大縮短了查詢的時(shí)間,數(shù)據(jù)在不同的磁盤進(jìn)行輸入和輸出,可有效在進(jìn)行數(shù)據(jù)管理與查詢。

      1.3有效地使用索引

      索引的主要功能是提高數(shù)據(jù)庫(kù)數(shù)據(jù)的查詢速度,表中的邏輯值可能通過索引映射到某一行,所以數(shù)據(jù)的數(shù)理位置能夠通過這個(gè)映射關(guān)系很快被定位。在創(chuàng)建索引時(shí),要考慮到這個(gè)索引能夠最大限度地應(yīng)用到where、group by、order by等子句中。

      1)少建或不建索引的場(chǎng)景表記錄的數(shù)據(jù)少。

      如果一個(gè)表僅有10來?xiàng)l記錄,如果采用索引功能去訪問數(shù)據(jù),首先需要訪問索引表,然后再通過索引表訪問記錄,而一般情況下,索引表和數(shù)據(jù)表沒有保存在同一數(shù)據(jù)塊,因此此時(shí)至少需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行兩次讀取和數(shù)據(jù)返回。而如果不用索引,Oracle則可一次性將所需的數(shù)據(jù)讀出,速度顯而易見。

      經(jīng)常進(jìn)行記錄的添加、修改、刪除操作,而不要求查詢效率。

      數(shù)據(jù)重復(fù)率高,而且字段分布比較平均。

      例如一個(gè)表有1萬行數(shù)據(jù)記錄,而其中一個(gè)字段X只有a和b兩種值,且每個(gè)值的分布概率都為50%,則對(duì)這種表X字段建立索引時(shí)沒有太大意義。

      需要經(jīng)常與主字段一起組合查詢,但主字段索引值比較多的情況。

      如水費(fèi)表經(jīng)常按收費(fèi)序號(hào)、用戶編號(hào)、查表日期、年月日、操作標(biāo)志來具體查詢某一筆費(fèi)用,如果將這些需要查詢的字段都建立在一個(gè)索引中,則會(huì)大大增加數(shù)據(jù)更新的時(shí)間,實(shí)際情況是,只要按照收費(fèi)的序號(hào)建立索引,則數(shù)據(jù)量就會(huì)大大減少,而按照其它字段查詢時(shí)也不會(huì)影響效率。

      2)數(shù)量量大的表的索引問題

      對(duì)于字段多,數(shù)據(jù)多的表來說,由于索引數(shù)據(jù)相對(duì)于一般數(shù)據(jù)來說,都具有更高的優(yōu)先級(jí)和權(quán)限,所以建立索引未必能夠使數(shù)據(jù)表的查詢效率有所提高,因此在空間不足時(shí),一般的普通數(shù)據(jù)會(huì)被移出。因此在對(duì)大型的表建立索引表時(shí),可能會(huì)完全占用所有的數(shù)據(jù)塊空間,因此在讀寫數(shù)據(jù)來,就要不斷地進(jìn)行磁盤的訪問。遇到這種情況時(shí),可對(duì)大型表的不同分區(qū)來立索引,如果需要頻繁地查詢大型表,則可以不建立索引。

      1.4合理設(shè)計(jì)數(shù)據(jù)分片

      在實(shí)際使用過程中,可能某個(gè)表會(huì)含有相當(dāng)?shù)臄?shù)據(jù)量,而且還在急劇增長(zhǎng)的情況下,為保障數(shù)據(jù)能保持比較快的響應(yīng)速度,根據(jù)數(shù)據(jù)所處的時(shí)間與空間的局部性,利用橫向和豎向分片進(jìn)行數(shù)據(jù)表分片的設(shè)計(jì)。

      1)橫向分片

      將數(shù)據(jù)表根據(jù)使用的機(jī)構(gòu)或者部門拆分成N個(gè)子表,這樣不同機(jī)構(gòu)的數(shù)據(jù)就能夠成為獨(dú)立管理的表,這種情況主要適用于部門之間不需要交互,不需要進(jìn)行數(shù)據(jù)共享和交換的情況。

      2)豎向分片

      將數(shù)據(jù)表以流程為標(biāo)準(zhǔn)拆分成N個(gè)表,將表中不經(jīng)使用的數(shù)據(jù)移植到其它表中,如針對(duì)某個(gè)學(xué)校,可將在校生和畢業(yè)生儲(chǔ)存在不同的數(shù)據(jù)表中,當(dāng)學(xué)生畢業(yè)后,即可將相關(guān)學(xué)生信息轉(zhuǎn)入到畢業(yè)生表中,由于在校生的數(shù)據(jù)信息是需要定期更新和操作的,因此這樣的分片方式確保了在校生表能夠控制在某個(gè)定量,進(jìn)而提高查詢速度。

      3)分片原則

      在表中的記錄量少時(shí),而且無需進(jìn)行部門數(shù)據(jù)的頻繁交換情況下,可采用豎向分片方式,這種方式能夠確保邏輯配置的簡(jiǎn)單化,而且具有高可靠性,減少了管理人員的工作量。當(dāng)豎向分片無法解決問題時(shí),可引入橫向分片,將需要進(jìn)行數(shù)據(jù)頻繁交換的部門設(shè)置為一組,保存在同一張數(shù)據(jù)表中,注意橫向分片數(shù)要盡量少,以控制程序的復(fù)雜性。

      1.5 SQL語句的優(yōu)化方法

      SQL優(yōu)化方法主要有以下幾種:

      盡量控制對(duì)數(shù)據(jù)庫(kù)表的查詢,即減少對(duì)系統(tǒng)資源的消耗,實(shí)現(xiàn)方式主要采用分布式數(shù)據(jù)庫(kù)對(duì)象,如快照、顯形圖等。

      充分地使用SQL提供的共享池中已經(jīng)過分析的語法樹,使用非常接近或者完全相同的SQL語句實(shí)現(xiàn)查詢,同時(shí)可實(shí)現(xiàn)數(shù)據(jù)在SGA的準(zhǔn)確率大大提高。

      動(dòng)態(tài)SQL是一個(gè)非常便捷好用的功能,但是動(dòng)態(tài)SQL每次使用時(shí)都需要進(jìn)行語法的分析,無論共享池是是否存在所需要的查詢值,因此會(huì)大大影響數(shù)據(jù)庫(kù)的性能,因此這個(gè)功能需要限制使用。

      盡量避免使用不帶任何條件的SQL語句,由于這種語句在執(zhí)行時(shí),需要定位某一個(gè)數(shù)據(jù)塊,然后按照順序?qū)φ麄€(gè)數(shù)據(jù)表進(jìn)行掃描,如果數(shù)據(jù)表記錄多,則需要相當(dāng)長(zhǎng)的一段時(shí)間。

      屏蔽SQL語句自動(dòng)提交的模式,而可采用集中一組SQL語句整體提交的方式。

      1.6復(fù)雜SQL語句的編寫

      以某個(gè)學(xué)校學(xué)生的成績(jī)管理為例一般會(huì)包括課程表(course)、學(xué)生表(student)、成績(jī)表(score),每個(gè)表里包括的字段主要如以表1-表3所示:

      如果統(tǒng)計(jì)某個(gè)班級(jí)成績(jī)都為MM的數(shù)據(jù)信息,并以下格式顯示:

      解決辦法是在三個(gè)表中分別查詢相應(yīng)的值,然后轉(zhuǎn)換為最終需要的值,具體實(shí)現(xiàn)如下:

      方法二,SQL2,將一個(gè)表、3個(gè)值同時(shí)查出來,據(jù)不同段值,轉(zhuǎn)化成3個(gè)值。

      select S_Name,max(decode(Course_ID,語文, Score ,null)) as Score1,

      max(decode(Course_ID,英語, Score , null)) as Score2,

      max(decode(Course_ID,數(shù)學(xué), Score , null)) as Score3

      from Score_view where班級(jí)=填寫某個(gè)班級(jí)

      group S_ID,S_Name

      order by S_ID

      這種方法是直接使用Decode函數(shù),可大大提高數(shù)據(jù)查詢效率。

      2結(jié)束語

      迄今為止,數(shù)據(jù)庫(kù)技術(shù)發(fā)展和處理性能已成為應(yīng)用系統(tǒng)運(yùn)行的瓶頸。數(shù)據(jù)庫(kù)設(shè)計(jì)與管理員需要結(jié)合多方面因素,在建立數(shù)據(jù)表時(shí),能夠根據(jù)應(yīng)用系統(tǒng)的需求和可能出現(xiàn)的變化合理設(shè)計(jì)各個(gè)表和字段,以及表空間、存儲(chǔ)的數(shù)據(jù)塊空間、內(nèi)存等參數(shù)。另外,數(shù)據(jù)庫(kù)的性能調(diào)優(yōu)是一個(gè)系統(tǒng)工程,涉及的諸多方面。如何才能進(jìn)行有效的調(diào)整,結(jié)合其它技術(shù)實(shí)現(xiàn)Oracle數(shù)據(jù)庫(kù)的全面優(yōu)化。

      參考文獻(xiàn):

      [1]格林威爾.Oracle精髓[M].龔波,譯.北京:機(jī)械工業(yè)出版社,2009.

      [2]譚懷遠(yuǎn).Oracle性能分析與優(yōu)化思路[M].北京:電子工業(yè)出版社,2010.

      [3]李丙洋.涂抹.Oracle.三思筆記之一步一步學(xué)Oracle[M].北京:中國(guó)水利水電出版社,2010.

      [4]秦靖,劉存勇.Oracle從入門到精通[M].北京:機(jī)械工業(yè)出版社,2011.

      [5]羅尼,劉偉琴,張格仙.Oracle Database完全參考手冊(cè)[M].北京:清華大學(xué)出版社,2010.

      猜你喜歡
      數(shù)據(jù)庫(kù)優(yōu)化設(shè)計(jì)
      超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
      民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
      關(guān)于優(yōu)化消防安全告知承諾的一些思考
      一道優(yōu)化題的幾何解法
      瞞天過?!律O(shè)計(jì)萌到家
      設(shè)計(jì)秀
      海峽姐妹(2017年7期)2017-07-31 19:08:17
      有種設(shè)計(jì)叫而專
      Coco薇(2017年5期)2017-06-05 08:53:16
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      數(shù)據(jù)庫(kù)
      德州市| 南皮县| 香格里拉县| 沐川县| 云安县| 香格里拉县| 肥城市| 阿鲁科尔沁旗| 仙游县| 岱山县| 太仓市| 汶川县| 泰州市| 抚顺县| 安塞县| 伊宁市| 齐齐哈尔市| 会东县| 遂川县| 宣化县| 满城县| 门源| 永定县| 资中县| 永寿县| 乡宁县| 武邑县| 四子王旗| 綦江县| 电白县| 密山市| 太白县| 南丹县| 青冈县| 勐海县| 凤山市| 石渠县| 乌审旗| 永春县| 沽源县| 沂源县|