1、什么是物化视图

物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。
视图是一个虚拟表(也可以认为是一条语句),基于它创建时指定的查询语句返回的结果集。每次访问它都会导致这个查询语句被执行一次。为了避免每次访问都执行这个查询,可以将这个查询结果集存储到一个物化视图(也叫实体化视图)。
物化视图相当于把远程库某一节点时间的数据复制同步到了本地库中,直接查询本地库即可,效率变快(直接带有固定的结果集),只是会有时间差而已。

2、作用

在类似统计功能中,查询操作是无可避免,而这些查询操作如果很频繁,对整体数据库性能是很致命的。而物化视图实现远程数据源与本地数据的实时同步,也就是定时刷新,通过在本地创建物化视图可以大大提高查询效率。

  1. 实现两个数据库之间的数据同步,可以存在时间差。
  2. 如果是远程链接数据库的场景时,提高查询速度。
    (由于查询逻辑复杂,数据量比较大,导致每次查询视图的时候,查询速度慢,效率低下)

3、创建、使用

准备:远程数据库、本地数据库

3.1、本地用户创建database link(数据库链接)

先给用户分配创建的权限

grant create materialized view to user_name;

再创建链接

postgre物化视图的查询锁 查看物化视图_数据库

3.2、在远程数据库表增加物化视图日志

创建:Create materialized view log on base_brand ;
附:查看日志
select * from user_mview_logs;–日志列表
select * from MLOG$_BASE_BRAND ;

3.3、本地库创建物化视图

需要的权限(或者直接给用户dba角色权限):
grant create materialized view to user_name;
创建:
create materialized view mv_base_brand
refresh force on demand
start with sysdate next to_date(concat(to_char(sysdate+1,‘dd- mm-yyyy’),‘10:25:00’),‘dd-mm-yyyy hh24:mi:ss’)
– 每天10点25执行
as
select * from base_brand@FMCG82;

3.4 查询视图:

select * from mv_base_brand ;