oracle物化视图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle物化视图相关的知识,希望对你有一定的参考价值。

物化视图:具有物理存储的特殊视图,就像表对象一样。物化视图和表一样可以直接进行查询。通过读写分离机制起到分布式查询的作用,它是优化查询性能,提高系统工作效率的有效方法之一。

 

创建:

create materialized view view_name
refresh [fast|complete|force]
[
on [commit|demand] |
start with (start_time) next (next_time)
]
[enable query rewrite]
as
{创建物化视图用的查询语句}

 

 

创建物化视图:

--使用fast刷新方式需要创建物化视图日志:
SCOTT>create materialized view log on emp;


--创建物化视图:
SCOTT>create materialized view emp_mview
  2  build immediate
  3  refresh fast on commit
  4  enable query rewrite
  5  as
  6  select * from emp;

 

 

删除物化视图:

SCOTT>drop materialized view emp_mview;

SCOTT>drop materialized view log on emp;

 

 

创建物化视图需要create materialized view权限:

SYS>grant create materialized view to scott;

 

 

 

查询重写:当对物化视图的基表进行查询时,Oracle 会自动判断能否通过查询物化视图来得到结果。优化器自动计算判断物化视图能否满足查询要求,以及是否能提高性能。如果满足要求且能提高性能,优化器将重写查询,使用物化视图获得结果。查询重写对用户是透明的。

要开启查询重写功能,query_rewrite_enabled参数要设置为true:

SYS>show parameter query_rewrite_enabled

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
query_rewrite_enabled                string      TRUE

 

 

物化视图的刷新方式:

  • on commit:基表更新数据提交后,立即刷新物化视图。
  • on demand:手动调用dbms_mview.refresh过程刷新物化视图。

complete:完全刷新,重新执行创建物化视图的sql语句。

fast:增量刷新,只更新变化了的数据,要创建物化视图日志。

force:先使用fast更新,如果失败,则使用complete。

never:不刷新。

 


以上是关于oracle物化视图的主要内容,如果未能解决你的问题,请参考以下文章

Oracle - 创建物化视图

oracle物化视图不会自动更新是怎么回事

Oracle物化视图

如何获得oracle物化视图 定时刷新时 刷新所用的时间 或者是监控 物化视图在jobs中建立的job任务的执行时间

Oracle 物化视图日志

Oracle物化视图梳理