[Oracle][Performance]善用Materialized View提高查詢效能#3 Query Rewrite
早期無query rewrite技術,DBACreate中繼table提高前端查詢效能,但前端程式也需要修改相關Sql statement(牽一髮動全身)
可說相當麻煩,如果需求量少倒還好,但量大的話我想DBA這工作應該沒人會想做的(事多錢少責任大~><)。
這篇就來看看Oracle query rewriete技術所帶來的改善(MSSQL2005/2008也有應用)
文章均為自己見解,如有錯誤還請指教
Overview
當現有的Materialized views被用來滿足請求時,查詢優化器可以自動識別,緊接著就會重新寫入請求。查詢直接指向materialized view,而不用知道具體細節,這樣使系統性能得到改善。
Oracle 現在又多了其他查詢重寫能力,它通常會把相關查詢重新寫到次目錄中,比如,如果有人採用不正確的查詢模式使用不存在的語句時,Oracle SQL優化器就會自動探測到這種情況。同時會以更快的SQL查詢速度來取代原有SQL。
Cost-Based Query Rewrite Process
Example1:
Example2:
Example3:
相關參數設定
query_rewrite_enabled=true
query_rewrite_integrity= STALE_TOLERATED
下篇小弟將簡單應用MV相關特性