[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

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

Example1:

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

Example2:

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

Example3:

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

相关参数设定

query_rewrite_enabled=true

query_rewrite_integrity= STALE_TOLERATED

下篇小弟将简单应用MV相关特性

原文:大专栏  [Oracle][Performance]善用Materialized View提高查询性能#3 Query Rewrite


上一篇:Redis持久化


下一篇:使用nginx重写来隐藏或清理URL?