查看全部128種考試
軟件水平考試
 考試動態(tài) 報考指南 歷年真題 模擬試題 復(fù)習(xí)資料 心得技巧 專業(yè)英語 技術(shù)文章 軟考論壇 考試用書
 程序員 軟件設(shè)計師 網(wǎng)絡(luò)管理員 網(wǎng)絡(luò)工程師 系統(tǒng)分析師 數(shù)據(jù)庫系統(tǒng)工程師
1
2
3
4
5
6
7
8
9
10
yanruijie  
【字體: 用智能優(yōu)化限制提高Oracle數(shù)據(jù)庫性能
用智能優(yōu)化限制提高Oracle數(shù)據(jù)庫性能
spks.exam8.com 來源:考試吧(Exam8.com) 更新:2007-1-25 16:08:34 軟件水平考試 考試論壇

  Oracle SQL運行時間的最主要的組成部分是花在為執(zhí)行準(zhǔn)備新的SQL語句上的時間。不過,如果了解了可執(zhí)行計劃產(chǎn)生的內(nèi)在機制,你就可以控制Oracle花費在評估表的連接順序的時間,并在總體上提高查詢的性能。
  準(zhǔn)備為執(zhí)行提供的SQL語句
  在一個SQL語句進(jìn)入Oracle庫的cache之后、而真正被執(zhí)行之前,將會依次發(fā)生如下事件:
  語法檢查——檢查該SQL語句的拼寫和詞序是否正確。
  語義解析——Oracle根據(jù)數(shù)據(jù)詞典(data dictionary)來驗證所有的表格(table)和列(column)。
  已保存綱要檢查——Oracle檢查詞典以確認(rèn)對應(yīng)該SQL語句是否已存在已保存的綱要(Stored Outline)。
  產(chǎn)生執(zhí)行計劃——Oracle根據(jù)一種罰值(cost-based)優(yōu)化算法和數(shù)據(jù)詞典中的統(tǒng)計數(shù)據(jù)來決定如何生成最優(yōu)執(zhí)行計劃。
  產(chǎn)生二進(jìn)制代碼——Oracle在執(zhí)行計劃的基礎(chǔ)上生成可執(zhí)行的二進(jìn)制代碼。
  一旦開始準(zhǔn)備執(zhí)行SQL語句,上述的過程很快就會執(zhí)行,這是因為Oracle可以識別出同樣的SQL語句并對同樣的SQL語句重復(fù)使用對應(yīng)的可執(zhí)行代碼。然而,對產(chǎn)生ad hoc SQL的系統(tǒng)以及SQL中嵌入文本值(literal value)的情況,SQL執(zhí)行計劃的生成時間就會變得相當(dāng)長,而且以前的執(zhí)行計劃也常常不能被再次利用。對那些牽涉到許多表格的查詢,Oracle可能要花上很長的時間來決定把連接這些表格的順序。

  評估連接表格的順序

  生成可執(zhí)行計劃的時間往往是SQL的準(zhǔn)備過程中最大的開銷組成部分,尤其是在處理有多個表的連接的查詢的情況下。當(dāng)Oracle評估表的連接順序時,它必須考慮每一種可能的排序。例如,當(dāng)有六個表格需要連接時,Oracle需要考慮720種(6的排列數(shù),即6×5×4×3×2×1=720)可能的連接排序。當(dāng)需要連接的表的數(shù)量超過10時,這個排列問題將變得非常突出:如果需要連接的表格有15個,那么需要考慮的可能的查詢排列順序超過一萬億種(精確值為1,307,674,368,000)。

  在optimizer_search_limit參數(shù)中設(shè)置限制

  你可以通過optimizer_search_limit參數(shù)來控制上述問題的發(fā)生,該參數(shù)用來指定優(yōu)化器評估的表格連接順序的最大數(shù)目。利用這個參數(shù),就可以防止優(yōu)化器在評估所有可能的表格連接順序中所花費的多余時間。如果查詢中的表的數(shù)量少于或者等于optimizer_search_limit,那么優(yōu)化器檢查所有的可能表的連接方式。

  例如,涉及了五個表的查詢一共有120種(5!=5×4×3×2×1=120)可能的連接順序,所以如果參數(shù)optimizer_search_limit的值設(shè)置為5(默認(rèn)值),那么優(yōu)化器就會考慮所有的這120種可能的連接順序。optimizer_search_limit參數(shù)還用來控制啟動開始連接指示(star join hint)的閾值。當(dāng)查詢所涉及的表格數(shù)量少于參數(shù)optimizer_search_limit的設(shè)定值,開始連接指示將被設(shè)置。

  另一個工具:optimizer_max_permutations參數(shù)

  optimizer_max_permutations初始參數(shù)用來設(shè)定優(yōu)化器優(yōu)化范圍的上界(即最多考慮多少種表格連接順序),它依賴于初始參數(shù)  optimizer_search_limit。參數(shù)optimizer_max_permutations的默認(rèn)值為8000。

  參數(shù)optimizer_search_limit 和optimizer_max_permutations一同用來設(shè)置優(yōu)化器所考慮的排列數(shù)的上限。優(yōu)化器不斷的產(chǎn)生可能的表的連接的排列,直到排列數(shù)達(dá)到參數(shù)optimizer_search_limit或者optimizer_max_permutations為止。一旦優(yōu)化器停止產(chǎn)生新的可能連接排列,它將會從中選擇出耗費最小的排列。

更多軟考資料請訪問:考試吧軟件水平考試欄目

希望與更多網(wǎng)友交流,請進(jìn)入考試吧軟件水平考試論壇

 

[1] [2] [3] 下一頁

轉(zhuǎn)帖于:軟件水平考試_考試吧
文章搜索  
看了本文的網(wǎng)友還看了:
網(wǎng)友評論
昵 稱: *  評 分: 1分 2分 3分 4分 5分
標(biāo)題:   匿名發(fā)表    (共有條評論)查看全部評論>>
版權(quán)聲明 -------------------------------------------------------------------------------------
  如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  付款方式  站內(nèi)導(dǎo)航  客服中心  友情鏈接  考試論壇  網(wǎng)站地圖
Copyright © 2004-2008 考試吧軟件水平考試網(wǎng) All Rights Reserved    
中國科學(xué)院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699
百度大聯(lián)盟黃金認(rèn)證  十佳網(wǎng)絡(luò)教育機構(gòu)  經(jīng)營許可證號:京ICP060677