[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相关特性