歡迎您光臨本站 註冊首頁

初探Oracle 11g解析自適應游標共享功能

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
Oracle 11g是甲骨文公司在2007年年7月12日推出的最新資料庫軟體,Oracle 11g有400多項功能,經過了1500萬個小時的測試,開發工作量達到了3.6萬人/月.相對過往版本而言,Oracle 11g具有了與眾不同的特性.

任何SQL語句優化引擎的核心是判定獲得SQL語句目標數據的最廉價和最有效的訪問路徑的能力,使用綁定變數可以限制需要存儲在庫緩存中返回相似結果集的SQL語句游標的數量.本文介紹Oracle 11g中的新特性 – 自適應游標共享 – 並說明實際情況中該如何使用它,以及如何限制帶有綁定變數的SQL語句的硬解析,同時提高這些語句的執行效率.

  正如我過去做老師時告訴學生的那樣,我有一個好方法可以避免資料庫性能降低,說來也很簡單,就是要求應用程序開發人員不要在資料庫運行任何SQL語句,但這的確引來不少人的笑聲和嘲笑,還是回到現實中來吧,討論一下建立有效SQL語句的途徑,我認為沒有什麼標準可供借鑒,但構造不佳的SQL語句遲早會導致聯機事務處理(OLTP)系統、決策支持系統(DSS)或混合資料庫表現不佳.

「偷窺」綁定變數:這不是作弊

  幸運的是,Oracle資料庫為我們提供了一些很好的工具,用以確定需要改善性能的SQL語句,並為提升它們的性能提供建議,這個方法的核心是當確實需要一個新的執行計劃時,我們可以修改基於成本的SQL優化器解析SQL語句的方式.當然,當一條語句第一次執行時必須硬解析,這樣優化器可以確定獲取所需數據的最佳路徑,解析是一個相對費時的操作,因此,DBA通常會限制存儲在庫緩存中的唯一性游標的數量,特別是在聯機事務處理環境下,相同的語句可能會被執行成百上千次,它們為用戶會話返回相似的結果集.

  設置有效的游標共享最簡單的方法就是按照應用程序工作量的需要為CURSOR_SHARING初始化參數設定合適的值,將這個參數的值設為SIMILAR告訴優化器當SQL語句完全相同,除了謂詞部分外,可以使用游標共享,執行計劃提供相等或更優的性能,同樣,將其值設為CURSOR_SHARING時,不論是否存在更好的執行計劃,告訴優化器強制共享游標,當SQL語句包含綁定變數時,有極好的機會提供這方面的性能優勢,但當優化器在不知道是什麼值來填充產生的游標時,怎樣才能構建一個有效的執行計劃呢?


[火星人 ] 初探Oracle 11g解析自適應游標共享功能已經有234次圍觀

http://coctec.com/docs/linux/show-post-58758.html