oracle中sql查詢(xún)優(yōu)化研究論文

oracle中sql查詢(xún)優(yōu)化研究論文

ID:10028286

大?。?3.50 KB

頁(yè)數(shù):12頁(yè)

時(shí)間:2018-05-21

oracle中sql查詢(xún)優(yōu)化研究論文 _第1頁(yè)
oracle中sql查詢(xún)優(yōu)化研究論文 _第2頁(yè)
oracle中sql查詢(xún)優(yōu)化研究論文 _第3頁(yè)
oracle中sql查詢(xún)優(yōu)化研究論文 _第4頁(yè)
oracle中sql查詢(xún)優(yōu)化研究論文 _第5頁(yè)
資源描述:

《oracle中sql查詢(xún)優(yōu)化研究論文 》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。

1、ORACLE中SQL查詢(xún)優(yōu)化研究論文ORACLE中SQL查詢(xún)優(yōu)化研究論文ORACLE中SQL查詢(xún)優(yōu)化研究論文ORACLE中SQL查詢(xún)優(yōu)化研究論文ORACLE中SQL查詢(xún)優(yōu)化研究論文ORACLE中SQL查詢(xún)優(yōu)化研究論文ORACLE中SQL查詢(xún)優(yōu)化研究論文ORACLE中SQL查詢(xún)優(yōu)化研究論文ORACLE中SQL查詢(xún)優(yōu)化研究論文  摘要數(shù)據(jù)庫(kù)性能問(wèn)題一直是決策者及技術(shù)人員共同關(guān)注的焦點(diǎn),影響數(shù)據(jù)庫(kù)性能的一個(gè)重要因素就是SQL查詢(xún)語(yǔ)句的低效率。論文首先分析了導(dǎo)致SQL查詢(xún)語(yǔ)句性能低下的四個(gè)常見(jiàn)原因以及SQL調(diào)優(yōu)的一般步驟,然后分別針對(duì)如何降低I/O操作、在查詢(xún)語(yǔ)句中如何避免對(duì)查

2、詢(xún)結(jié)果的高成本操作以及在多表連接時(shí)如何提高查詢(xún)效率進(jìn)行了分析?! £P(guān)鍵詞ORACLE;SQL;優(yōu)化;連接  1引言  隨著網(wǎng)絡(luò)應(yīng)用不斷發(fā)展,系統(tǒng)性能已越來(lái)越引起決策者的重視。影響系統(tǒng)性能的因素很多,低效的SQL語(yǔ)句就是其中一個(gè)不可忽視的重要原因。論文首先分析導(dǎo)致SQL性能低下的常見(jiàn)原因,然后分析SQL調(diào)優(yōu)應(yīng)遵循的一般步驟,最后從如何降低I/O、避免對(duì)查詢(xún)結(jié)果的高成本操作和多表連接中如何提高SQL性能進(jìn)行了研究。鑒于目前ORACLE在數(shù)據(jù)庫(kù)市場(chǎng)上的主導(dǎo)地位,論文將只針對(duì)ORACLE進(jìn)行討論?! ?影響SQL性能的原因  影響SQL性能的因素很多,如初始化參數(shù)設(shè)置不合理、導(dǎo)

3、入了不準(zhǔn)確的系統(tǒng)及模式統(tǒng)計(jì)數(shù)據(jù)從而影響優(yōu)化程序(CBO)的正確判斷等,這些往往和DBA密切相關(guān)。純粹從SQL語(yǔ)句出發(fā),筆者認(rèn)為影響SQL性能不外乎以下四個(gè)重要原因:  (1)在大記錄集上進(jìn)行高成本操作,如使用了引起排序的謂詞等?! ?2)過(guò)多的I/O操作(含物理I/O與邏輯I/O),最典型的就是未建立恰當(dāng)?shù)乃饕?,?dǎo)致對(duì)查詢(xún)表進(jìn)行全表掃描?! ?3)處理了太多的無(wú)用記錄,如在多表連接時(shí)過(guò)濾條件位置不當(dāng)導(dǎo)致中間結(jié)果集包含了太多的無(wú)用記錄?! ?4)未充分利用數(shù)據(jù)庫(kù)提供的功能,如查詢(xún)的并行化處理等?! 〉?4)個(gè)原因處理起來(lái)相對(duì)簡(jiǎn)單。論文將針對(duì)前三個(gè)原因論述如何提高SQL查詢(xún)

4、語(yǔ)句的性能?! ?SQL優(yōu)化的一般步驟  SQL優(yōu)化一般需經(jīng)過(guò)發(fā)現(xiàn)問(wèn)題、分析問(wèn)題、提出解決措施、應(yīng)用措施、測(cè)試性能幾個(gè)步驟,如圖1所示。“發(fā)現(xiàn)問(wèn)題就是解決問(wèn)題的一半”,因此在SQL調(diào)優(yōu)過(guò)程中,定位問(wèn)題SQL是非常重要的一步,一般可借助于ORACLE自帶的性能優(yōu)化工具如STATSPACK、TKPROF、AUTOTRACE等輔助用戶(hù)進(jìn)行,同時(shí)還應(yīng)該重視動(dòng)態(tài)性能視圖如V$SQL、V$MYSTAT、V$SYSSTAT等的研究?! D1SQL優(yōu)化的一般步驟  4SQL語(yǔ)句的優(yōu)化  優(yōu)化排序操作  排序的成本十分高昂,當(dāng)在查詢(xún)語(yǔ)句中使用了引起結(jié)果集排序的謂詞時(shí),SQL性能必然受到影

5、響。  排序過(guò)程分析  當(dāng)待排序數(shù)據(jù)集不是太大時(shí),服務(wù)器在內(nèi)存(排序區(qū))完成排序操作,如果排序需要更多的內(nèi)存空間,服務(wù)器將進(jìn)行如下處理:  (1)將數(shù)據(jù)分成多個(gè)小的集合,對(duì)每一集合進(jìn)行排序?! ?2)服務(wù)器向磁盤(pán)申請(qǐng)臨時(shí)空間,將排好序的中間結(jié)果寫(xiě)入臨時(shí)段,再對(duì)另外的集合進(jìn)行排序?! ?3)在所有的集合均排好序后,服務(wù)器再將它們進(jìn)行合并得到最終的結(jié)果,如果排序區(qū)尺寸太小,合并無(wú)法一次完成時(shí),將分多次進(jìn)行?! 纳鲜龇治隹芍判蚴且环N十分昂貴的操作,它消耗大量的CPU時(shí)間和內(nèi)存,觸發(fā)磁盤(pán)分頁(yè)和交換操作,因此只要有可能,我們就應(yīng)該在SQL語(yǔ)句中盡量避免排序操作?! ≈幸鹋?/p>

6、序的操作  SQL查詢(xún)語(yǔ)句中引起排序的操作大致有:ORDERBY和GROUPBY從句;DISTINCT修飾符;UNION、INTERSECT、MINUS集合操作符;多表連接時(shí)的排序合并連接(SORTMERGEJOIN)等?! ∪绾伪苊馀判颉 ?)建立恰當(dāng)?shù)乃饕 ?duì)經(jīng)常進(jìn)行排序和連接操作的字段建立索引。在建立索引后,當(dāng)服務(wù)器向這些字段發(fā)出排序請(qǐng)求時(shí),將直接引用索引而不進(jìn)行排序操作;當(dāng)進(jìn)行等值連接查詢(xún)操作時(shí),若建立連接的字段未建立索引,服務(wù)器進(jìn)行的是排序合并連接(SORTMERGEJOIN),連接操作的過(guò)程如下:  對(duì)進(jìn)行連接的兩個(gè)或多個(gè)表分別進(jìn)行全掃描;  對(duì)每一個(gè)表中

7、的行集分別進(jìn)行全排序;  合并排序結(jié)果?! ∪绻⑦B接的字段已建立索引,服務(wù)器進(jìn)行嵌套循環(huán)連接(NESTEDLOOPJOINS),該連接方式不需要任何排序,其過(guò)程如下:  對(duì)驅(qū)動(dòng)表進(jìn)行全表掃描;  對(duì)返回的每一行利用連接字段值實(shí)施索引惟一掃描;  利用從索引掃描中返回的ROWID值在從表中定位記錄;  合并主、從表中的匹配記錄。  因此,建立索引可避免多數(shù)排序操作?! ?)用UNIIONALL替換UNION  UNION在進(jìn)行表鏈接后會(huì)篩選掉重復(fù)的記錄,所以在表鏈接后會(huì)對(duì)所產(chǎn)生的結(jié)果集進(jìn)行排序運(yùn)算,刪除重復(fù)的記錄再返回結(jié)果。大部分應(yīng)用中

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

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

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