首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
華為認證 | Java認證
公務員 | 報關員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網絡編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護士
會計從業(yè)資格考試會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師
注冊資產評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質量工程師 | 物業(yè)管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師
設備監(jiān)理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

用智能優(yōu)化限制提高Oracle數(shù)據(jù)庫性能

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

  評估連接表格的順序

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

  在optimizer_search_limit參數(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的值設置為5(默認值),那么優(yōu)化器就會考慮所有的這120種可能的連接順序。optimizer_search_limit參數(shù)還用來控制啟動開始連接指示(star join hint)的閾值。當查詢所涉及的表格數(shù)量少于參數(shù)optimizer_search_limit的設定值,開始連接指示將被設置。

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

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

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

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

希望與更多網友交流,請進入考試吧軟件水平考試論壇

 

1 2 3 4 下一頁
文章責編:yanruijie  
看了本文的網友還看了
文章搜索
軟件水平考試欄目導航
版權聲明:如果軟件水平考試網所轉載內容不慎侵犯了您的權益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉載本軟件水平考試網內容,請注明出處。