下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)庫系統(tǒng)中SQL語句的優(yōu)化技術(shù)
摘要:SQL語句的優(yōu)化是將性能低下的SQL語句轉(zhuǎn)換成目的相同的性能優(yōu)異的SQL語句。人工智能自動SQL優(yōu)化就是使用人工智能技術(shù),自動對SQL語句進(jìn)行重寫,從而找到性能最好的等效SQL語句。
關(guān)鍵詞:人工智能;自動優(yōu)化;SQL語句優(yōu)化
一個數(shù)據(jù)庫系統(tǒng)的生命周期可以分成:設(shè)計(jì)、開發(fā)和成品三個階段。在設(shè)計(jì)階段進(jìn)行數(shù)據(jù)庫性能優(yōu)化的成本最低,收益最大。在成品階段進(jìn)行數(shù)據(jù)庫性能優(yōu)化的成本最高,收益最小。數(shù)據(jù)庫的優(yōu)化通??梢酝ㄟ^對網(wǎng)絡(luò)、硬件、操作系統(tǒng)、數(shù)據(jù)庫參數(shù)和應(yīng)用程序的優(yōu)化來進(jìn)行。最常見的優(yōu)化手段就是對硬件的升級。根據(jù)統(tǒng)計(jì),對網(wǎng)絡(luò)、硬件、操作系統(tǒng)、數(shù)據(jù)庫參數(shù)進(jìn)行優(yōu)化所獲得的性能提升,全部加起來只占數(shù)據(jù)庫系統(tǒng)性能提升的40%左右,其余的60%系統(tǒng)性能提升來自對應(yīng)用程序的優(yōu)化。許多優(yōu)化專家認(rèn)為,對應(yīng)用程序的優(yōu)化可以得到80%的系統(tǒng)性能的提升。應(yīng)用程序的優(yōu)化通常可分為兩個方面:源代碼和SQL語句。由于涉及到對程序邏輯的改變,源代碼的優(yōu)化在時間成本和風(fēng)險上代價很高,而對數(shù)據(jù)庫系統(tǒng)性能的提升收效有限。
1.1為什么要優(yōu)化SQL語句
第一、SQL語句是對數(shù)據(jù)庫進(jìn)行操作的惟一途徑,對數(shù)據(jù)庫系統(tǒng)的性能起著決定性的作用。
第二、SQL語句消耗了70%至90%的數(shù)據(jù)庫資源。
第三、SQL語句獨(dú)立于程序設(shè)計(jì)邏輯,對SQL語句進(jìn)行優(yōu)化不會影響程序邏輯。
第四、SQL語句有不同的寫法,在性能上的差異非常大。
第五、SQL語句易學(xué),但難精通。
優(yōu)化SQL語句的傳統(tǒng)方法是通過手工重寫來對SQL語句進(jìn)行優(yōu)化。DBA或資深程序員通過對SQL語句執(zhí)行計(jì)劃的分析,依靠經(jīng)驗(yàn),嘗試重寫SQL語句,然后對結(jié)果和性能進(jìn)行比較,以試圖找到性能較佳的SQL語句。這種傳統(tǒng)上的作法無法找出SQL語句的所有可能寫法,且依賴于人的經(jīng)驗(yàn),非常耗費(fèi)時間。
1.2SQL優(yōu)化技術(shù)的發(fā)展歷程
第一代SQL優(yōu)化工具是執(zhí)行計(jì)劃分析工具。這類工具針對輸入的SQL語句,從數(shù)據(jù)庫提取執(zhí)行計(jì)劃,并解釋執(zhí)行計(jì)劃中關(guān)鍵字的含義。
第二代SQL優(yōu)化工具只能提供增加索引的建議,它通過對輸入的SQL語句的執(zhí)行計(jì)劃的分析,來產(chǎn)生是否要增加索引的建議。
第三代SQL優(yōu)化工具不僅分析輸入SQL語句的執(zhí)行計(jì)劃,還對輸入的SQL語句本身進(jìn)行語法分析,經(jīng)過分析產(chǎn)生寫法上的改進(jìn)建議。
1.3人工智能自動SQL優(yōu)化人工智能自動SQL優(yōu)化出現(xiàn)在90年代末。目前在商用數(shù)據(jù)庫領(lǐng)域,LECCOTechnologyLimited(靈高科研有限公司)擁有該技術(shù),并提供使用該技術(shù)的自動優(yōu)化產(chǎn)品LECCOSQLExpert,它支持Oracle、Sybase、MSSQLServer和IBMDB2數(shù)據(jù)庫平臺。該產(chǎn)品針對數(shù)據(jù)庫應(yīng)用的開發(fā)和維護(hù)階段提供的模塊有:SQL語法優(yōu)化器、PL/SQL集成化開發(fā)調(diào)試環(huán)境(IDE)、掃描器、數(shù)據(jù)庫監(jiān)視器等。其核心模塊SQL語法優(yōu)化器的工作原理為:①輸入一條源SQL語句;②“人工智能反饋式搜索引擎”對輸入的SQL語句,結(jié)合檢測到的數(shù)據(jù)庫結(jié)構(gòu)和索引進(jìn)行重寫,產(chǎn)生N條等效的SQL語句輸出;③產(chǎn)生的N條等效SQL語句再送入“人工智能反饋式搜索引擎”進(jìn)行重寫,直至無法產(chǎn)生新的輸出或搜索限額滿;④對輸出的SQL語句進(jìn)行過濾,選出具有不同執(zhí)行計(jì)劃的SQL語句;⑤對得到的SQL語句進(jìn)行批量測試,找出性能最好的SQL語句。
2LECCOSQLExpert自動優(yōu)化實(shí)例
2.1假設(shè)我們從源代碼中抽取出這條SQL語句(也可以通過內(nèi)帶的掃描器或監(jiān)視器獲得SQL語句):
SELECTCOUNT(*)論文下載
FROMEMPLOYEE
swheresEXISTS(SELECT'X'
FROMDEPARTMENT
swheresEMP_DEPT=DPT_ID
ANDDPT_NAMELIKE'AC%')
ANDEMP_IDIN(SELECTSAL_EMP_ID
FROMEMP_SAL_HISTB
swheresSAL_SALARY>70000)
按下“優(yōu)化”按鈕后,經(jīng)過10幾秒,SQLExpert就完成了優(yōu)化的過程,并在這10幾秒的時間里重寫產(chǎn)生了2267條等價的SQL語句,其中136條SQL語句有不同的執(zhí)行計(jì)劃。2.2“邊做邊學(xué)式訓(xùn)練”提升SQL開發(fā)水平
LECCOSQLExpert不僅能夠找到最佳的SQL語句,它所提供的“邊做邊學(xué)式訓(xùn)練”還能夠教開發(fā)人員和數(shù)據(jù)庫管理員如何寫出性能最好的SQL語句。LECCOSQLExpert的“SQL比較器”可以標(biāo)明源SQL和待選SQL間的不同之處。
以上面優(yōu)化的結(jié)果為例,為了查看源SQL語句和SQL124在寫法上有什么不同,我們可以按下“比較器”按鈕,對SQL124和源SQL語句進(jìn)行比較?!癝QL比較器”將SQL124相對于源SQL語句的不同之處以藍(lán)顏色表示了出來。如果選擇“雙向比較”復(fù)選框,“SQL比較器”可以將兩條SQL語句的不同之處以藍(lán)色表示。當(dāng)然,我們也可以從源語句和重寫后的SQL語句中任選兩條進(jìn)行比較。
從比較的結(jié)果可以看到,重寫后的SQL124把第一個Exists改寫成了In;在字段DPT_ID上進(jìn)行了合并空字符串的操作,以誘導(dǎo)數(shù)據(jù)庫先執(zhí)行子查詢中的
(SELECTDPT_ID||''
FROMDEPARTMENT
WHEREDPT_NAMELIKE'AC%')
在子查詢完成后,再與EMPLOYEE表進(jìn)行嵌套循環(huán)連接(NestedLoopJoin)。
如果覺得對寫法的改變難以理解,還可以點(diǎn)中“執(zhí)行計(jì)劃”復(fù)選框,通過比較兩條SQL語句的執(zhí)行計(jì)劃的不同,來了解其中的差異。在查看執(zhí)行計(jì)劃過程中,如果有什么不明白的地方,可以點(diǎn)中“SQL信息按鈕”,再點(diǎn)擊執(zhí)行計(jì)劃看不明白的地方,LECCOSQLExpert的上下文敏感幫助系統(tǒng)將提供執(zhí)行計(jì)劃該處的解釋。
在“SQL比較器”中,選中“統(tǒng)計(jì)信息”復(fù)選框后,可得到詳細(xì)的兩條SQL語句運(yùn)行時的統(tǒng)計(jì)信息比較,這對于學(xué)習(xí)不同的SQL寫法對數(shù)據(jù)庫資源的消耗很有幫助。
2.3LECCOSQLExpert優(yōu)化模塊的特點(diǎn)
LECCOSQLExpert優(yōu)化模塊的特點(diǎn)主要表現(xiàn)為:自動優(yōu)化SQL語句;以獨(dú)家的人工智能知識庫“反饋式搜索引擎”來重寫性能優(yōu)異的SQL語句;找出所有等效的SQL語句及可能的執(zhí)行計(jì)劃;保證產(chǎn)生相同的結(jié)果;先進(jìn)的SQL語法分析器能處理最復(fù)雜的SQL語句;可以重寫SELECT、SELECTINTO、UPDATE、INSERT和DELETE語句;通過測試運(yùn)行,為應(yīng)用程序和數(shù)據(jù)庫自動找到性能最好的SQL語句;提供微秒級的計(jì)時,能夠優(yōu)化Web應(yīng)用程序和有大量用戶的在線事務(wù)處理中運(yùn)行時間很短的SQL語句;為開發(fā)人員提供“邊做邊學(xué)式訓(xùn)練”,迅速提高開發(fā)人員的SQL編程技能;提供上下文敏感的執(zhí)行計(jì)劃幫助系統(tǒng)和SQL運(yùn)行狀態(tài)幫助;不是猜測或建議,而是獨(dú)一無二的SQL重寫解決方案。
2.4寫出專家級的SQL語句
LECCOSQLExpert的出現(xiàn),使SQL的優(yōu)化變得極其簡單,只要能夠?qū)懗鯯QL語句,它就能幫用戶找到最好性能的寫法。LECCOSQLExpert不僅能在很短的時間內(nèi)找到所有可能的優(yōu)化方案,而且能夠通過實(shí)際測試,確
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 增資擴(kuò)股委托協(xié)議
- 2025版小產(chǎn)權(quán)房購房合同范本:房產(chǎn)交易糾紛調(diào)解與和解3篇
- 2025年度個人房屋交易房地產(chǎn)廣告推廣合同范本
- 2025版房地產(chǎn)銷售委托代理合同補(bǔ)充協(xié)議3篇
- 2025-2030全球MBE摻雜源行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025年全球及中國便攜式三維測力臺行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 2025版?zhèn)€人信用貸款合同樣本6篇
- 2025年度鋼構(gòu)建筑綠色供應(yīng)鏈管理合同范本2篇
- 委托調(diào)查合同范本
- 2025年度個人與個人投資理財(cái)合作協(xié)議范本4篇
- 非遺國粹川劇變臉的傳統(tǒng)文化知識了解原創(chuàng)模板
- 夜市運(yùn)營投標(biāo)方案(技術(shù)方案)
- 電接點(diǎn) 水位計(jì)工作原理及故障處理
- 國家職業(yè)大典
- 2024版房產(chǎn)代持協(xié)議書樣本
- 2024年四川省成都市成華區(qū)中考二診物理試題
- 2024年3月計(jì)算機(jī)等級考試三級數(shù)據(jù)庫技術(shù)筆試真題及答案
- 公眾號運(yùn)營實(shí)戰(zhàn)手冊
- 科研倫理與學(xué)術(shù)規(guī)范(研究生)期末試題庫及答案
- 2024中考地理必考試卷含解析
- (高清版)DZT 0282-2015 水文地質(zhì)調(diào)查規(guī)范(1:50000)
評論
0/150
提交評論