• PGSQL数据库里物化视图【materialized view】


    1、普通视图

         数据库中的视图(view)是从一张或多张数据库表查询导出的虚拟表,反映基础表中数据的变化,且本身不存储数据。

    2、物化视图【materialized view】

        2.1、概念: 物化视图是查询结果集的一份持久化存储,所以它与普通视图完全不同,而非常趋近于表。 可以是基础表中部分数据的一份简单拷贝,也可以是多表join之后产               生的结果或        其子集,或者原始数据的聚合指标等等。所以,物化视图不会随着基础表的变化而变化,所以它也称为快照(snapshot)。

                 如果要更新数据的话,需要用户手动进行,如周期性执行SQL,或利用触发器等机制。
     
        2.2、产生物化视图的过程就叫做“物化”(materialization)。广义地讲,物化视图是数据库中的预计算逻辑+显式缓存,典型的空间换时间思路。
                 所以用得好的话,它可以避免对基础表的频繁查询并复用结果,从而显著提升查询的性能。它当然也可以利用一些表的特性,如索引。


    Material View的主要作用

      1. 实现两个数据库之间的数据同步,可以存在时间差。

      2. 如果是远程链接数据库的场景时,提高查询速度。

      (由于查询逻辑复杂,数据量比较大,导致每次查询视图的时候,查询速度慢,效率低下)

    物化视图的刷新方式和方法

    1. 刷新的方式

      Fast

      Complete

      Fource

    2. 刷新的方法

      DBMS_REFRESH.Refresh

      DBMS_MVIEW.Refresh

      EXEC DBMS_MVIEW.refresh('BXJ_OBJECTS_MV_T1','C');
      EXEC DBMS_REFRESH.refresh('REP_MVIEWGROUP');




    案例创建一个物化视图:
    创建一个表:
    
        create table t(id int,name varchar);
    
    插入数据:
    
        insert into t
        -> select generate_series(1,1000000),random()::VARCHAR;
    
    创建一个:物化视图
        create materialized view mv_t as select * from t;
    
    创建一个索引:
        create unique index idx_ken on mv_t(id);
    
    查询最大值:
        select max(id) from mv_t;
    
    插入一个最大数据:
        insert into t values(1000001,random());
    
    
    插入后记得刷新数据:refresh 
    refresh materialized view mv_t;

    删除物化视图:drop

        drop materialized view mv_t;

     
    五  、总结 
    1.物化视图当前是全量刷新,暂不支持增量刷新 
    2.刷新参数with data是全量更新(replace)物化视图内容,且是默认参数;with no data会清除物化视图内容,释放物化视图所占的空间,并使物化视图不可用 


    参考链接:https://www.jianshu.com/p/3f385e4e7f95
                      https://blog.csdn.net/sunbocong/article/details/77931744
    心有猛虎,细嗅蔷薇
  • 相关阅读:
    Httprunner生成Allure格式HTML报告
    Go语言编写单元测试用例
    dotnet 在 UOS 国产系统上安装 dotnet sdk 的方法
    dotnet 在国产 UOS 系统利用 dotnet tool 工具做文件传输
    webpack丑化插件
    webpack自动生成html
    webpack vue
    webpack vue
    HO引擎近况20210225
    常用十大算法(三)— 动态规划算法
  • 原文地址:https://www.cnblogs.com/1314520xh/p/14589402.html
Copyright © 2020-2023  润新知