发布网友 发布时间:2022-04-07 22:41
共3个回答
懂视网 时间:2022-04-08 03:03
后续当我们对IRDB_NETWORK_MASTER、IRDB_NETWORK_GSM_DETAIL、IRDB_NETWORK_CODES和IRDB_COUNTRY_MASTER这四个业务基表中的任何一个或者多个进行DML commit的时候,物化视图IRDB_NETWORKLIST就能自动更新了。当然了,基表与物化视图的同步也是有一定代价的,但如果不建立物化视图,那么每次外部调用都会去查询基表,而物化视图会将这种压力分散,将基表查询、基表连接与外部业务接口访问错开,有利于降低数据库负载的peak值,这也是数据库性能优化的核心思想之一。
2、高级复制
很多业务场景,我们不需要对整个数据库进行同步,只需要对部分表的部分字段进行同步,这个时候,物化视图可以派上用场。下面是某直辖市移动彩铃业务数据库结构图:
这里,一台P650小机作为管理节点,负责业务开销户、业务话单等数据处理,其余5台P650小机作为呼叫节点使用,只提供用户数据的查询功能。这里不需要用DG等全库同步的技术,因为呼叫节点只需要同步部分与呼叫业务相关的数据。管理节点建立物化视图,这里以t_userinfo用户表为例:
CREATE MATERIALIZED VIEW
usdptemp.T_USERINFO_MV
REFRESH FAST
AS
selectPHONENUMBER,LOCALID,BRANDID,PAYKIND from usdp604.T_USERINFO
在呼叫节点建立一个同义词:
create or replace synonym T_USERINFO
for T_USERINFO_mv;
这样子可以保持和管理节点完全一样的对象名称。
然后建立一个刷新组,每10秒刷新一次物化视图:
--create a refresh group
BEGIN
DBMS_REFRESH.MAKE(
name => ‘usdpsync‘,
list => ‘T_USERINFO_mv‘,
next_date=> sysdate,
interval => ‘sysdate + 10/86400‘
);
END;
/
呼叫节点上的T_USERINFO_mv是从管理节点上的临时用户impdp过来的,用的dblink,所以,呼叫节点上的T_USERINFO_mv和管理节点上的物化视图日志是绑在一起的。
物化视图在使用过程中,还有几点需要留意,在此罗列一下:
1、物化视图有两种刷新模式ON DEMAND和ON COMMIT,前者需要调用dbms_mview手工刷新,后者在基表提交的时候会自动刷新。如果建立物化视图的时候不指定刷新方式,默认是ON DEMAND,此时一般需要建立一个job,在job里按照某个固定周期调用dbms_mview进
行刷新。
2、物化视图日志在建立时有多种选项:可以指定为ROWID、PRIMARY KEY和OBJECT ID几种类型,同时还可以指定SEQUENCE或明确指定列名。上面这些情况产生的物化视图日志的结构都不相同。
3、刷新方法有四种:fast、complete、force和never。
fast是增量刷新,只刷新上次刷新以后进行的修改。
complete是对整个物化视图进行完全的刷新。
force,oracle在刷新时会判断是否可以进行快速刷新,如果可以进行fast,否则进行complete
never,物化视图不进行任何刷新。
如果要进行快速刷新,必须建立物化视图日志。物化视图日志命名规则为mlog$_+基表名称。
查看当前系统的物化视图日志表:
select * from dba_mview_logs;
force方式刷新则不需要建立物化视图日志。
4、如果物化视图遇到同步问题,紧急情况下,可以执行手动刷新:
SQL> exec dbms_mview.refresh(‘IRDB_NETWORKLIST‘);
PL/SQL procedure successfully completed
此时会根据基表对IRDB_NETWORKLIST物化视图进行刷新。
5、物化视图日志优化:
对于物化视图日志,我们可以建立索引提高性能。同时在排查同步慢等性能问题的时候也需要检查看是否出现高水位,物化视图日志表的高水位会影响刷新性能,处理高水位的方法,在此省略。
本文出自 “记忆碎片” 博客,谢绝转载!
oracle物化视图的两个典型应用场景
标签:oracle 物化视图
热心网友 时间:2022-04-08 00:11
物化视图(Materialized View)在9i以前的版本叫做快照(SNAPSHOT),从9i开始改名叫做物化视图。其实无论是快照还是物化视图,都能体现出这个对象的特点。热心网友 时间:2022-04-08 01:29
开机以后等一会儿,会自动同步的。