岳建坡
摘 要:文章主要對(duì)Oracle數(shù)據(jù)庫性能優(yōu)化研究,總結(jié)數(shù)據(jù)庫性能優(yōu)化的目標(biāo),例如縮短系統(tǒng)響應(yīng)時(shí)間、提升吞吐量、提升數(shù)據(jù)庫指標(biāo)命中率、優(yōu)化磁盤、合理的應(yīng)用內(nèi)存、減少磁盤的排序,然后描述影響數(shù)據(jù)庫的因素,相關(guān)人員掌握這些影響因素,詳細(xì)闡述了具體的優(yōu)化技術(shù),主要技術(shù)有:數(shù)據(jù)庫優(yōu)化、內(nèi)存優(yōu)化、磁盤優(yōu)化、SQL優(yōu)化。通過這種方式使Oracle數(shù)據(jù)庫的性能得到提高,加快數(shù)據(jù)處理的速度。
關(guān)鍵詞:Oracle;數(shù)據(jù)庫;性能優(yōu)化
中圖分類號(hào):TP311.138 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1006-8937(2015)15-0073-02
Oracle是一種大型的關(guān)系數(shù)據(jù)庫,在多個(gè)行業(yè)中都得到較好的應(yīng)用,并是一個(gè)重要的數(shù)據(jù)庫平臺(tái)。隨著Oracle的不斷應(yīng)用,其規(guī)模也有所擴(kuò)大,使用的人數(shù)不斷增加,在這個(gè)過程中,Oracle數(shù)據(jù)庫存在的問題也越來越明顯。工作人員對(duì)這種數(shù)據(jù)庫進(jìn)行優(yōu)化,讓其能夠在合理的條件下,更好的發(fā)揮作用,優(yōu)化系統(tǒng)的使用性能,降低系統(tǒng)的支出,為數(shù)據(jù)庫的推廣奠定了良好的基礎(chǔ)。
1 性能優(yōu)化目標(biāo)
1.1 縮短系統(tǒng)響應(yīng)時(shí)間
該數(shù)據(jù)庫的系統(tǒng)響應(yīng)時(shí)間是指在SQL語句到數(shù)據(jù)庫結(jié)果集時(shí)所用的時(shí)間。相關(guān)人員可以適當(dāng)縮短這個(gè)時(shí)間,從而降低系統(tǒng)的服務(wù)時(shí)間,讓人們的等待時(shí)間減短。該時(shí)間單位一般用ms表示,這種做法能夠減小處理用戶請(qǐng)求的時(shí)間,由此提高系統(tǒng)的利用效率。
1.2 提升吞吐量
數(shù)據(jù)庫的吞吐量會(huì)受到SQL語句的影響,數(shù)據(jù)庫能夠完成的SQL語句數(shù)量越多,那么在單位時(shí)間內(nèi),該吞吐量越大。吞吐量=SQL語句數(shù)量/時(shí)間,其單位用TPS表示。相關(guān)人員要想提高數(shù)據(jù)庫的吞吐量,可以增加單位時(shí)間處理SQL語句的數(shù)量。
1.3 提升數(shù)據(jù)庫指標(biāo)命中率
相關(guān)人員要制定數(shù)據(jù)庫指標(biāo),例如緩沖區(qū)的命中率、軟解析率等。在數(shù)據(jù)庫工作中,最常用的指標(biāo)是高速緩沖區(qū)命中率,這種指標(biāo)主要是衡量Oracle數(shù)據(jù)庫的性能,相關(guān)人員結(jié)合這種情況進(jìn)行分析。
1.4 優(yōu)化磁盤
Oracle數(shù)據(jù)庫將數(shù)據(jù)存儲(chǔ)在磁盤和內(nèi)存中,這種過程與I/O操作有關(guān),所以要合理規(guī)劃磁盤,通過高速緩存技術(shù),增加系統(tǒng)的吞吐量,從而在一定程度上縮短用戶的響應(yīng)時(shí)間,多使用系統(tǒng)內(nèi)存,避免使用磁盤I/O進(jìn)行操作。
1.5 合理的應(yīng)用內(nèi)存
在大量并發(fā)用戶的影響下,如果Oracle數(shù)據(jù)庫的存儲(chǔ)量不夠,會(huì)影響程序的處理效率。相關(guān)人員要盡量縮短數(shù)據(jù)庫的響應(yīng)時(shí)間,然后確保內(nèi)存得到合理應(yīng)用,判斷最大回報(bào)和最小損失的標(biāo)準(zhǔn),通過內(nèi)存的有效使用,提高系統(tǒng)的性能。
1.6 減少磁盤的排序
如果用戶提交的SQL語句中有排序或聚合函數(shù),那么要保證這些排序可以在內(nèi)存上進(jìn)行,也可以在物理磁盤上。系統(tǒng)的物理磁盤有獨(dú)特的結(jié)構(gòu),所以其讀寫速度比內(nèi)存讀寫速度慢,所以相關(guān)人員要盡量減小物理操作。
2 影響因素分析
很多因素都會(huì)影響Oracle的性能,例如操作系統(tǒng)或CPU性能等,所以相關(guān)人員合理設(shè)置這些具體方面,降低其對(duì)數(shù)據(jù)庫性能的影響。
①在操作系統(tǒng)上,Oracle數(shù)據(jù)庫與系統(tǒng)的服務(wù)器運(yùn)行有非常密切的聯(lián)系,如果操作系統(tǒng)沒有合理設(shè)置就會(huì)導(dǎo)致Oracle性能的降低。
②CPU占用過高:在系統(tǒng)運(yùn)行中,CPU是非常關(guān)鍵的資源。如果該資源被占用,那么很可能導(dǎo)致整體數(shù)據(jù)庫的停止運(yùn)行。
③內(nèi)存沒有合理分配:Oracle性能會(huì)受到內(nèi)存配置的影響,內(nèi)存分配不合理會(huì)導(dǎo)致計(jì)算機(jī)減少系統(tǒng)的緩沖控制,操作系統(tǒng)頻繁轉(zhuǎn)換。
④I/O沖突:因?yàn)樵谙到y(tǒng)運(yùn)行中,磁盤在同一時(shí)間段只能滿足一個(gè)進(jìn)程的需求,所以當(dāng)擁有多個(gè)進(jìn)程,就會(huì)造成讀寫沖突,從而降低整個(gè)系統(tǒng)的運(yùn)行速度。
⑤SQL常見錯(cuò)誤:應(yīng)用Oracle數(shù)據(jù)庫,有大量的SQL語句,相關(guān)人員容易出現(xiàn)配置和數(shù)據(jù)遷移的錯(cuò)誤。經(jīng)過長(zhǎng)時(shí)間的全表掃描,數(shù)據(jù)庫沒有得到合理的設(shè)置,I/O沒有合理規(guī)劃,SQL語句執(zhí)行效率較差。
3 優(yōu)化技術(shù)
3.1 數(shù)據(jù)庫優(yōu)化
應(yīng)用Oracle數(shù)據(jù)庫中,增加索引是最常見的調(diào)優(yōu)方法,數(shù)據(jù)庫對(duì)象是索引。相關(guān)人員應(yīng)充分利用索引對(duì)系統(tǒng)中的掃描情況進(jìn)行描述,通過查詢索引能夠節(jié)省大面積描述。在設(shè)置索引內(nèi)容時(shí),要重視SQL語句的使用,具體情況要結(jié)合查詢條件。相關(guān)人員要比對(duì)直接全表的檢索情況,然后通過相關(guān)數(shù)據(jù)對(duì)I/O進(jìn)行分析。
工作人員可以完善數(shù)據(jù)庫的數(shù)據(jù),掌握這個(gè)邏輯關(guān)系,能夠在數(shù)據(jù)庫使用時(shí),讓代碼和其他信息分離,這種做法能夠有效降低網(wǎng)絡(luò)的傳輸量,并提高數(shù)據(jù)情況的執(zhí)行能力。相關(guān)人員在進(jìn)行數(shù)據(jù)存儲(chǔ)的過程中,用戶可以發(fā)出執(zhí)行命令,并提交SQL語句,從而節(jié)省對(duì)該語句的分析,充分使用SQL共享池的優(yōu)勢(shì)。
3.2 內(nèi)存優(yōu)化
Oracle數(shù)據(jù)庫的信息主要存儲(chǔ)在內(nèi)存和磁盤上,從實(shí)際應(yīng)用來看,內(nèi)存的訪問量比較大,明顯高于磁盤的訪問量。但是這種情況會(huì)降低數(shù)據(jù)庫的響應(yīng)時(shí)間,減慢其運(yùn)行速度,所以相關(guān)人員要設(shè)置合適的內(nèi)存尺寸,確保數(shù)據(jù)庫性能得到更好的提升。
例如,相關(guān)人員要優(yōu)化數(shù)據(jù)緩沖區(qū)的高速緩存性能,從而降低系統(tǒng)磁盤中的I/O數(shù)據(jù),通過適當(dāng)對(duì)緩沖區(qū)尺寸進(jìn)行調(diào)整,能夠讓緩沖區(qū)找到需要的數(shù)據(jù),從而對(duì)數(shù)據(jù)庫的性能進(jìn)行優(yōu)化,減小用戶的等待時(shí)間和緩沖時(shí)間。相關(guān)單位可以通過減小全表掃描的方式,得到優(yōu)化數(shù)據(jù)庫性能的目的。相關(guān)人員可以用索引的方式,降低全表掃描的次數(shù),應(yīng)用全表掃描的次數(shù)越少,系統(tǒng)的緩沖命中率越高。
提高共享池性能,能夠較快的提高數(shù)據(jù)庫性能。共享池是存放近期使用SQL語句的地方,共享池內(nèi)的數(shù)據(jù)字典數(shù)據(jù)比緩沖區(qū)的內(nèi)存停留時(shí)間更長(zhǎng),擁有更好的命中率。所以可以優(yōu)先度緩沖區(qū)進(jìn)行調(diào)整,相關(guān)人員可以根據(jù)實(shí)際情況對(duì)每個(gè)節(jié)點(diǎn)的共享池大小進(jìn)行記錄和分析,從而有利于下一步調(diào)整。利用代碼重新書寫能夠快速提高共享池的命中率。針對(duì)比較大的對(duì)象,例如自定義的程度等,相關(guān)人員需要應(yīng)用共享池,進(jìn)行有效的解析。相關(guān)人員要將重要的對(duì)象保存在內(nèi)存中,這樣就能夠提高共享池的性能。
3.3 磁盤優(yōu)化
應(yīng)用Oracle數(shù)據(jù)庫使用對(duì)象產(chǎn)生I/O的機(jī)會(huì)較多,所以相關(guān)人員要將訪問量較大的數(shù)據(jù)文件放置在磁盤中,不同的對(duì)象要盡量分開放置,從而為索引創(chuàng)造有利條件。相關(guān)人員要注意內(nèi)存中修改過的數(shù)據(jù)并不是寫入到數(shù)據(jù)文件中,所以要優(yōu)先將其寫入到日志文件中,并保持其容量。在這個(gè)過程中,相關(guān)人員應(yīng)減少對(duì)不同對(duì)象對(duì)磁盤的競(jìng)爭(zhēng),合理將日志文件進(jìn)行分組,一組寫滿后再換到下一組,這個(gè)過程要循環(huán)進(jìn)行。在數(shù)據(jù)庫中,要?jiǎng)?chuàng)建回滾段和其專用的表空間,其中從系統(tǒng)操作失敗后得到的恢復(fù)數(shù)據(jù)是回滾段,所以應(yīng)盡量減小I/O進(jìn)程之間的競(jìng)爭(zhēng),并確??臻g競(jìng)爭(zhēng)能夠有效完成。
3.4 SQL優(yōu)化
SQL語句的執(zhí)行效率會(huì)影響Oracle數(shù)據(jù)庫的性能,所以優(yōu)化SQL語句能夠直接提高Oracle系統(tǒng)執(zhí)行效率。執(zhí)行SQL會(huì)消耗數(shù)據(jù)庫系統(tǒng)70%-85%的資源,所以合理設(shè)計(jì)SQL語句非常重要,從而提高系統(tǒng)的利用效率,優(yōu)秀的SQL語句,能夠加快執(zhí)行的速率,降低網(wǎng)絡(luò)傳輸?shù)念l率,從而充分發(fā)揮數(shù)據(jù)庫的性能。
4 結(jié) 語
通過上文對(duì)Oracle數(shù)據(jù)庫性能優(yōu)化研究,可以得出,Oracle數(shù)據(jù)庫規(guī)模的增大和用戶的增加,該數(shù)據(jù)庫中隱藏的問題會(huì)逐漸暴露出來,所以相關(guān)人員要對(duì)數(shù)據(jù)庫的性能進(jìn)行優(yōu)化,并不斷調(diào)整數(shù)據(jù)庫的各個(gè)方面。在這個(gè)過程中,要充分掌握數(shù)據(jù)庫系統(tǒng)的性能影響因素,然后針對(duì)這些因素,進(jìn)行合理優(yōu)化,采用先進(jìn)的技術(shù)調(diào)試數(shù)據(jù)庫,從而使系統(tǒng)性能更加優(yōu)化,為用戶提供更多便利。
參考文獻(xiàn):
[1] 郭霞.基于Oracle數(shù)據(jù)庫性能優(yōu)化技術(shù)研究[J].電腦知識(shí)與技術(shù),2011,(24).
[2] 魏亞楠,宋義秋.oracle數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能優(yōu)化[J].制造業(yè)自動(dòng)化,2010,(8).
[3] 戴偉敏.Oracle數(shù)據(jù)庫系統(tǒng)性能優(yōu)化與調(diào)整[J].赤峰學(xué)院學(xué)報(bào)(自然科學(xué)版),2010,(12).
[4] 吳穎雪.Oracle數(shù)據(jù)庫性能優(yōu)化[J].科技傳播,2010,(20).