崔华 oracle简历,2013数据库大会:崔华-基于Oracle的SQL优化案例分析
2013數據庫大會:崔華-基于Oracle的SQL優化案例分析
崔華的新書即將出版,其數據庫大會上的演講也非常精彩,他的新書十分值得期待。
2013年中國數據庫技術大會第二天的"Oracle架構與優化"專場中,來自中航信資深Oracle數據庫工程師崔華為大家分享了《基于 Oracle的SQL優化典型案例分》主題演講。從演講的內容來看,這是一次非常實用的技術分享。據資料顯示,崔華從2004年開始從事DBA工作,擁有 Oracle 數據庫技術各個領域的經驗。除了工作外,崔化在博客上撰寫大量的文章并在Oracle活動中進行演講,此外還與他們合作撰寫三本專業圖書,《Oracle DBA手記 2》、《Oracle DBA手記3》和《海量數據庫解決方案I》。
▲中航信資深Oracle數據庫工程師崔華
Oracle優化從理論說起:SQL優化方法論
提到Oracle的優化,太過理論性質的內容無需贅述,崔華先生簡單為與會者分享了3個方面,分別是:
·Oracle里的SQL優化實際上是基于對CBO和執行計劃的深刻理解
·Oracle里的SQL優化不能脫離實際的業務
·Oracle里SQL優化需要適時使用綁定變量
提起CBO不得不多說兩句,ORACLE 早先提供了CBO、RBO兩種SQL優化器。CBO在ORACLE7 引入并不斷深入,而同時9i以后版本中基本上都是基于CBO的優化。
崔華認為SQL優化最有技術含量的部分不在于你通過種種手段(比如重新收集統計信息等)調整了目標SQL的執行計劃、縮短了其執行時間、解決了該SQL的性能問題,而是在于你要知道CBO為什么在一開始會選錯執行計劃,你要知道CBO選錯執行計劃的根本原因。
深入分析很多案例后發現很多問題的原因都有一定共性,在本次演講的案例顯示導致CBO評估出對一個實際數據量為730多萬且統計信息準確的大表 S_EVT_ACT執行全表掃描操作后的成本值僅為2,其原因是參數OPTIMIZER_MODE的值在session級別被修改成了 FIRST_ROWS_10,這同時也是導致上述坐席登陸慢的問題多次不間斷出現的根本原因。 而對于這種問題的改進方法崔華建議:
? 修改各個session中對于參數OPTIMIZER_MODE的設置,將其值修改為默認值ALL_ROWS
? 如果不能在session級修改參數OPTIMIZER_MODE的值,我們還可以使用SQL Profile。在上述18個表關聯SQL中加入Hint(即/*+ index(T18 S_EVT_ACT_P1) */),并用加入Hint后改寫SQL的執行計劃替換原SQL的執行計劃
引實例講方法
在下面的SQL 語句中包含了IN,而IN之后的括號內是一個包含視圖的子查詢(即select grppolno from v_bc_lcpol where polno = '9022000000000388'),它不是一個常量的集合,所以Oracle這里不能對該SQL做"IN-List Iterator"和"IN-List Expansion /OR Expansion";
上述SQL中的視圖V_BC_LCGRPPOL和V_BC_LCPOL均包含了集合運算符UNION ALL,所以Oracle這里也不能對該SQL做視圖合并;于是Oracle現在就只剩下了兩條路可走:要么對該SQL走FILTER類型的執行計劃(即 "IN-List Filter"),要么對該SQL做子查詢展開。
而把sql語句改寫以后,效果則會發生巨大的變化:
從這個例子的解決過程我們可以看出,雖然最后的解決方法很簡單,但這其實完全倚賴于我們對Oracle如何處理SQL語句中的IN、子查詢展開、視圖合并和連接謂詞推入的深刻理解.
By eygle on 2013-04-25 08:27 |
Comments (0) |
Activity | 3096 |
總結
以上是生活随笔為你收集整理的崔华 oracle简历,2013数据库大会:崔华-基于Oracle的SQL优化案例分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql-修改密码(error-129
- 下一篇: 用vbs往服务器发送文件,[转] Win