數(shù)據(jù)庫應(yīng)用論文(2)
數(shù)據(jù)庫應(yīng)用論文篇二
《數(shù)據(jù)庫應(yīng)用系統(tǒng)性能優(yōu)化研究與實(shí)踐》
摘要:本文主要從數(shù)據(jù)庫服務(wù)器內(nèi)存參數(shù)調(diào)整,SQL語句優(yōu)化兩方面論述如何在系統(tǒng)設(shè)計(jì),運(yùn)行過程中對(duì)Oracle數(shù)據(jù)庫進(jìn)行性能優(yōu)化。數(shù)據(jù)庫服務(wù)器內(nèi)存參數(shù)調(diào)整主要論述共享池的大小設(shè)置問題,SQL語句優(yōu)化主要從Oracle解析SQL語句的機(jī)制方面來論述如何寫出高效的SQL語句。通過上述方面的調(diào)優(yōu)以確保數(shù)據(jù)庫系統(tǒng)的性能。
關(guān)鍵詞:數(shù)據(jù)庫性能優(yōu)化 逆規(guī)范化設(shè)計(jì) 優(yōu)化策略
中圖分類號(hào):TP311.13 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2012)07-0058-01
1、對(duì)數(shù)據(jù)庫服務(wù)器內(nèi)存分配的調(diào)整
由于對(duì)服務(wù)器內(nèi)存參數(shù)的調(diào)整對(duì)oracle的性能影響顯著,它成為Oracle數(shù)據(jù)庫性能調(diào)優(yōu)的首選對(duì)象。服務(wù)器內(nèi)存參數(shù)的調(diào)整主要是對(duì)數(shù)據(jù)庫系統(tǒng)全局區(qū)的調(diào)整,系統(tǒng)全局區(qū)包括共享池、數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)。其中最主要的是對(duì)數(shù)據(jù)緩沖區(qū)和共享池的參數(shù)調(diào)整。
數(shù)據(jù)庫緩沖區(qū)的作用主要是將從磁盤中讀取的數(shù)據(jù)塊存放在內(nèi)存緩存中,從這個(gè)意義上說數(shù)據(jù)庫緩沖區(qū)越大,存放的共享數(shù)據(jù)就越多,減少了對(duì)磁盤數(shù)據(jù)的物理讀操作,也就提高了系統(tǒng)的響應(yīng)速度。
共享池的作用主要是用來存放最近使用過的sql語句的,它由一個(gè)最近最少使用的算法來管理,由庫高速緩存和數(shù)據(jù)字典緩沖區(qū)兩部分組成。修改這一參數(shù)的設(shè)置,能提高系統(tǒng)性能,是由Oracle數(shù)據(jù)庫系統(tǒng)處理用戶提交的SQL語句的步驟決定的。
2、Sql優(yōu)化
由于應(yīng)用程序的執(zhí)行最終歸結(jié)為后臺(tái)數(shù)據(jù)庫中SQL語句的執(zhí)行,SQL語句本身的執(zhí)行效率就成為了影響oracle數(shù)據(jù)庫執(zhí)行效率的一個(gè)重要因素,當(dāng)我們對(duì)Oracle處理SQL語句的機(jī)制有所了解,通過對(duì)SQL語句進(jìn)行適當(dāng)?shù)恼{(diào)整,就能提高Oracle數(shù)據(jù)庫系統(tǒng)的性能。
(1)在基于規(guī)則的優(yōu)化器中,Oracle對(duì)from子句中的表名是按照從右到左的順序進(jìn)行解析的,即:From子句中排在最后的表會(huì)被首先處理。我們把這張表稱做驅(qū)動(dòng)表。當(dāng)from字句中包含多個(gè)標(biāo)的情況下,oracle是通過排序合并的方式連接這些表的,為了提高oracle的執(zhí)行效率,應(yīng)當(dāng)選擇包含記錄條數(shù)少的表作為驅(qū)動(dòng)表,即放在from子句的最后。
(2)在oracle語句中,where子句的執(zhí)行順序是自下而上的對(duì)語句進(jìn)行解析的。為了提高sql語句的執(zhí)行效率,應(yīng)該將能過濾掉大量數(shù)據(jù)的條件寫在where子句的最后。
(3)在selcect語句中使用*雖然對(duì)編程人員簡單方便,oracle會(huì)自動(dòng)列出所有列名,但oracle解析*時(shí)則是通過查詢數(shù)據(jù)字典來完成對(duì)*的轉(zhuǎn)換的,這樣耗費(fèi)了更多的時(shí)間用來查詢數(shù)據(jù)字典,轉(zhuǎn)換,必然降低執(zhí)行效率,因此在selcect語句中應(yīng)當(dāng)直接列出所有的列名。
(4)用where子句代替having子句,在where子句中排除不需要的記錄,這樣的執(zhí)行效率將遠(yuǎn)遠(yuǎn)高于執(zhí)行完成之后用having子句對(duì)記錄進(jìn)行篩選。
3、軟件開發(fā)模式優(yōu)化策略
3.1 避免訪問回滾段
如果查詢數(shù)據(jù)庫時(shí),要訪問的數(shù)據(jù)正被另外用戶修改,數(shù)據(jù)庫為了維護(hù)讀一致性,需要訪問會(huì)滾段來讀取查詢語句執(zhí)行時(shí)刻的數(shù)據(jù)值。如果應(yīng)用程序需要經(jīng)常讀取正在被其它用戶修改的數(shù)據(jù),數(shù)據(jù)庫系統(tǒng)為了得到一個(gè)數(shù)據(jù),不得不多次訪問磁盤。數(shù)據(jù)庫管理員可通過配置回滾段來減少查詢時(shí)“snapshot tooold”錯(cuò)誤的發(fā)生。解決這個(gè)問題的根本方法還是需要重新修改應(yīng)用程序設(shè)計(jì),合理對(duì)事務(wù)進(jìn)行劃分。
3.2 表的分區(qū)和并行技術(shù)
如果必須要在數(shù)據(jù)庫運(yùn)行特別耗時(shí)的操作。應(yīng)盡量地把這樣的操作分解,嚴(yán)格限制操作所涉及的記錄數(shù),并設(shè)法使操作并行,充分地提高執(zhí)行效率。
(1)使用分區(qū)。分區(qū)技術(shù)有兩個(gè)潛在的好處:提高查詢性能和提高數(shù)據(jù)庫可用性。數(shù)據(jù)庫查詢時(shí),優(yōu)化器知道那些分區(qū)包含查詢所要的數(shù)據(jù)。而其它分區(qū)數(shù)據(jù)將不會(huì)被讀取,從而查詢?nèi)蝿?wù)將更快完成。許多管理工作可在只一個(gè)分區(qū)上進(jìn)行,而不影響其它分區(qū)的數(shù)據(jù)。例如可以選擇只刪除一個(gè)表分區(qū)中的數(shù)據(jù)。
(2)使用并行。Oracle數(shù)據(jù)庫中幾乎所有的操作都支持并行特性,包括查詢、插入、和數(shù)據(jù)加載。并行選項(xiàng)可以使多個(gè)處理器同時(shí)處理一條命令,在創(chuàng)建庫數(shù)據(jù)庫對(duì)象時(shí)可以設(shè)定并行參數(shù),也可在查詢語句中重新設(shè)。
4、軟件測(cè)試優(yōu)化策略
許多情況下由于開發(fā)進(jìn)度等原因,軟件性能壓力測(cè)試都進(jìn)行的不充分。這就導(dǎo)致軟件產(chǎn)品交付時(shí),不能確保軟件性能滿足用戶需求。這點(diǎn)常常被開發(fā)人員忽視。用戶不僅需要軟件能完成一定功能,更需要軟件能支撐自己業(yè)務(wù)的運(yùn)行。因此應(yīng)用軟件性能不能滿足業(yè)務(wù)處理的速度要求,軟件系統(tǒng)就需要優(yōu)化。測(cè)試必須驗(yàn)證軟件性能能否在希望負(fù)載情況下,滿足業(yè)務(wù)處理的速度要求。
(1)用大量的數(shù)據(jù)進(jìn)行測(cè)試。系統(tǒng)使用一段時(shí)間后,數(shù)據(jù)庫的性能會(huì)發(fā)生變化。例如oracle數(shù)據(jù)庫一個(gè)表的pctfree和pctused參數(shù)設(shè)置可能會(huì)使數(shù)據(jù)塊只有一半的空間被利用或使數(shù)據(jù)庫記錄鏈接(chained)。上面的情形都會(huì)引起數(shù)據(jù)庫性能問題,且只有在應(yīng)用程序使用了一段時(shí)間后才能被發(fā)現(xiàn)。
(2)足夠多的用戶并發(fā)測(cè)試。只有一個(gè)測(cè)試用戶大多數(shù)情況下不能反映軟件真實(shí)使用情況下的負(fù)載情況。我們必須測(cè)試在多個(gè)并發(fā)用戶情況下是否會(huì)引起死鎖(deadlock)以及性能下降等問題。
5、結(jié)語
數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能優(yōu)化遠(yuǎn)不是按照廠家所列的有關(guān)指南通過短短的幾步就可以達(dá)到的。要想獲得最大的優(yōu)化效果,既需要具有廣泛而深人的數(shù)據(jù)庫原理和系統(tǒng)實(shí)踐知識(shí),又要有扎實(shí)的應(yīng)用程序設(shè)計(jì)能力,同時(shí)要充分熟悉操作系統(tǒng)和有關(guān)的軟硬件環(huán)境。筆者在實(shí)際工作中利用這些策略進(jìn)行了數(shù)個(gè)數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì),這些系統(tǒng)都表現(xiàn)出了良好的運(yùn)行性能。
參考文獻(xiàn)
[1]Gaja Krishna Vaidyanatha.Oracle性能優(yōu)化技術(shù)內(nèi)幕.機(jī)械工業(yè)出版社,2010,5:284.
[2]李愛武.Oracle數(shù)據(jù)庫系統(tǒng)原理.北京郵電大學(xué)出版社,2009-3-1:210.
看過“數(shù)據(jù)庫應(yīng)用論文”的人還看了:
1.關(guān)于計(jì)算機(jī)數(shù)據(jù)庫運(yùn)用方面的論文
3.淺談交通運(yùn)輸信息平臺(tái)數(shù)據(jù)庫的實(shí)現(xiàn)論文
4.關(guān)于計(jì)算機(jī)數(shù)據(jù)庫技術(shù)的論文