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

?

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

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

覃艷

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

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

中圖分類號:TP271文獻(xiàn)標(biāo)識碼:A文章編號: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

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

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

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

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

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

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

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

1)將使用方式相同的段類型存儲相同位置;2)設(shè)計(jì)系統(tǒng)時以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ù)文件的方式儲存在不同的磁盤中。例如:對于一張含有大量數(shù)據(jù)的表,根據(jù)其中的一個字段進(jìn)行表分區(qū),在查詢的時候即可對某一個表分區(qū)進(jìn)行查詢,而省去了全表掃描的麻煩,也大大縮短了查詢的時間,數(shù)據(jù)在不同的磁盤進(jìn)行輸入和輸出,可有效在進(jìn)行數(shù)據(jù)管理與查詢。

1.3有效地使用索引

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

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

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

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

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

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

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

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

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

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

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

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

1)橫向分片

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

2)豎向分片

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

3)分片原則

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

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

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

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

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

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

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

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

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

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

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

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

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

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班級=填寫某個班級

group S_ID,S_Name

order by S_ID

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

2結(jié)束語

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

參考文獻(xiàn):

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

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

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

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

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

猜你喜歡
數(shù)據(jù)庫優(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ù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
建水县| 乌拉特后旗| 乌鲁木齐市| 凉山| 大渡口区| 泰安市| 佛坪县| 定襄县| 明光市| 宁陵县| 罗山县| 丰顺县| 德格县| 吉隆县| 贵定县| 攀枝花市| 萨迦县| 民和| 宕昌县| 大化| 开鲁县| 库车县| 增城市| 新晃| 营口市| 平谷区| 监利县| 方山县| 南岸区| 镶黄旗| 万宁市| 定州市| 赣榆县| 清远市| 镇远县| 盐池县| 海晏县| 文昌市| 蒙阴县| 天祝| 建宁县|