基于sql數(shù)據(jù)庫性能優(yōu)化研究

基于sql數(shù)據(jù)庫性能優(yōu)化研究

ID:5994952

大?。?3.50 KB

頁數(shù):10頁

時(shí)間:2017-12-30

基于sql數(shù)據(jù)庫性能優(yōu)化研究_第1頁
基于sql數(shù)據(jù)庫性能優(yōu)化研究_第2頁
基于sql數(shù)據(jù)庫性能優(yōu)化研究_第3頁
基于sql數(shù)據(jù)庫性能優(yōu)化研究_第4頁
基于sql數(shù)據(jù)庫性能優(yōu)化研究_第5頁
資源描述:

《基于sql數(shù)據(jù)庫性能優(yōu)化研究》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫

1、基于SQL數(shù)據(jù)庫性能優(yōu)化研究  [摘要]數(shù)據(jù)庫性能調(diào)整與優(yōu)化,對于提高數(shù)據(jù)庫的穩(wěn)定性、可靠性,保障業(yè)務(wù)高效運(yùn)行有著重要意義。本文從數(shù)據(jù)庫性能優(yōu)化角度出發(fā),探討程序開發(fā)過程中,Oracle數(shù)據(jù)庫的SQL語句調(diào)整和優(yōu)化技術(shù)。[關(guān)鍵詞]SQL;數(shù)據(jù)庫;性能優(yōu)化doi:10.3969/j.issn.1673-0194.2013.15.039[中圖分類號(hào)]TP392[文獻(xiàn)標(biāo)識(shí)碼]A[文章編號(hào)]1673-0194(2013)15-0064-020引言隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的普及與廣泛應(yīng)用,數(shù)據(jù)庫技術(shù)也得到了長足發(fā)展,并成為現(xiàn)代計(jì)算機(jī)信息與應(yīng)用系統(tǒng)的核心基礎(chǔ)技術(shù)。Oracle數(shù)據(jù)庫是目前使用

2、較為廣泛的數(shù)據(jù)庫系統(tǒng),用戶規(guī)模和應(yīng)用范圍不斷擴(kuò)展,由此帶來的系統(tǒng)性能問題愈來愈突出,因此,對數(shù)據(jù)庫優(yōu)化技術(shù)方法的探索,對解決系統(tǒng)瓶頸,節(jié)約系統(tǒng)開銷,確保數(shù)據(jù)庫和業(yè)務(wù)系統(tǒng)穩(wěn)定、高效地運(yùn)行,有著至關(guān)重要的意義。10數(shù)據(jù)庫的優(yōu)化,主要從硬件、操作系統(tǒng)、數(shù)據(jù)庫參數(shù)和應(yīng)用程序等方面進(jìn)行配置和調(diào)整。據(jù)統(tǒng)計(jì),對硬件系統(tǒng)和數(shù)據(jù)庫參數(shù)進(jìn)行優(yōu)化所獲得的性能提升,只占數(shù)據(jù)庫系統(tǒng)性能提升的40%左右,另外的60%系統(tǒng)性能提升來自于對應(yīng)用程序的優(yōu)化。其中,應(yīng)用程序的優(yōu)化通??煞譃閮蓚€(gè)方面:源代碼和SQL語句。一方面,由于涉及對程序邏輯的改變,源代碼的優(yōu)化在時(shí)間成本和風(fēng)險(xiǎn)上代價(jià)很高,而對數(shù)據(jù)庫系統(tǒng)性能的提升

3、收效有限;另一方面,應(yīng)用程序?qū)?shù)據(jù)庫的操作,最終體現(xiàn)在SQL語句對數(shù)據(jù)庫的操作,因此SQL語句的執(zhí)行效率決定了數(shù)據(jù)庫的性能。由此可見,應(yīng)用程序的優(yōu)化應(yīng)著重于SQL語句的優(yōu)化。在數(shù)據(jù)庫應(yīng)用系統(tǒng)中,相同功能的程序可以采用不同的SQL語句編寫實(shí)現(xiàn),而不同的SQL語句存在著性能及效率上的差異,這種差異在大型數(shù)據(jù)庫環(huán)境中表現(xiàn)得尤為明顯。因此,通過優(yōu)化調(diào)整SQL語句,從而顯著改善整個(gè)系統(tǒng)的性能,對提高數(shù)據(jù)庫內(nèi)存區(qū)的命中率、減少I/O訪問、減少對網(wǎng)絡(luò)資源的占用等有著重要意義。1SQL優(yōu)化技術(shù)分析及實(shí)現(xiàn)方法要對SQL語句進(jìn)行優(yōu)化,首先應(yīng)該清楚SQL語句的執(zhí)行過程。Oracle會(huì)為每個(gè)用戶進(jìn)程分配

4、一個(gè)服務(wù)器進(jìn)程,當(dāng)服務(wù)器進(jìn)程接收到用戶進(jìn)程提交的SQL語句時(shí),服務(wù)器進(jìn)程會(huì)對SQL語句進(jìn)行語法和詞法分析。檢查通過后,服務(wù)器進(jìn)程會(huì)將SQL語句轉(zhuǎn)變?yōu)锳SCII碼,并通過一個(gè)Hash函數(shù)將ASCII碼生成Hash值,服務(wù)器進(jìn)程會(huì)到系統(tǒng)全局區(qū)(SystemGlobalArea,SGA)的共享池(Shared10Pool)中查詢此Hash值是否存在。如果存在,服務(wù)器進(jìn)程會(huì)在共享池中讀取已經(jīng)解析好的語句來執(zhí)行,這就是軟解析;如果不存在,則需要通過優(yōu)化器生成執(zhí)行計(jì)劃和生成執(zhí)行編碼,這就是硬解析,硬解析完成后,Oracle會(huì)將SQL語句本身代碼、Hash值、執(zhí)行計(jì)劃和所有與此語句相關(guān)的統(tǒng)計(jì)數(shù)

5、據(jù)放到共享池中。根據(jù)以上所述的SQL語句執(zhí)行過程,分析優(yōu)化SQL語句,應(yīng)主要從以下幾個(gè)方面來進(jìn)行:(1)共享SQL語句。(2)高質(zhì)量的SQL語句。(3)使用索引。1.1共享SQL語句為了不重復(fù)解析相同的SQL語句,在第一次解析之后,Oracle將SQL語句存放在內(nèi)存中。這塊位于系統(tǒng)全局區(qū)域的共享池中的內(nèi)存可以被所有的數(shù)據(jù)庫用戶共享。如果用戶提交的SQL語句和之前的執(zhí)行過的語句完全相同,Oracle就能很快獲得已經(jīng)被解析的語句以及最好的執(zhí)行路徑,從而大大地提高了SQL的執(zhí)行性能并節(jié)省了內(nèi)存的使用。要共享SQL語句,必須滿足以下3個(gè)條件:(1)當(dāng)前被執(zhí)行的語句和共享池中的語句必須完全

6、相同。(2)兩個(gè)語句所指的對象必須完全相同。(3)兩個(gè)SQL語句中必須使用相同名字的綁定變量(bindvariables)。101.2高質(zhì)量的SQL語句對于海量數(shù)據(jù),質(zhì)量高的SQL語句和質(zhì)量差的SQL語句的執(zhí)行時(shí)間可能相差幾百秒,可見對于應(yīng)用系統(tǒng)來說,編寫高質(zhì)量的SQL語句將顯著提高系統(tǒng)的速度和可用性。1.2.1使用DECODE函數(shù)來減少處理時(shí)間使用DECODE函數(shù)可以避免重復(fù)掃描相同記錄或重復(fù)連接相同的表,例如:SELECTCOUNT(*),SUM(SAL)FROMEMPWHEREDEPT_NO=0200ANDENAMELIKE‘SMITH%’;SELECTCOUNT(*),S

7、UM(SAL)FROMEMPWHEREDEPT_NO=0300ANDENAMELIKE‘SMITH%’;使用DECODE函數(shù),可以高效地得到相同結(jié)果:SELECTCOUNT(DECODE(DEPT_NO,0200,’X’,NULL))D0020_COUNT,COUNT(DECODE(DEPT_NO,0300,’X’,NULL))D0030_COUNT,SUM(DECODE(DEPT_NO,0200,SAL,NULL))D0020_SAL,SUM(DECODE(DEPT_NO,03

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。