[Oracle][Performance]善用Materialized View提高查詢效能#3 Query Rewrite

[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

image

Example1:

image

Example2:

image

Example3:

image

相關參數設定

query_rewrite_enabled=true

query_rewrite_integrity= STALE_TOLERATED

 

下篇小弟將簡單應用MV相關特性