zoukankan      html  css  js  c++  java
  • 【PostgreSQL-9.6.3】物化视图

    PostgreSQL 9.3 以后出现了物化视图。物化视图是由实实在在的数据组成,这是和一般视图的根本区别。

    1. 物化视图创建语法如下:

    --创建语法
    CREATE MATERIALIZED VIEW table_name
        [ (column_name [, ...] ) ]
        [ WITH ( storage_parameter [= value] [, ... ] ) ]
        [ TABLESPACE tablespace_name ]
        AS query
        [ WITH [ NO ] DATA ]
    
    --刷新语法
    REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
        [ WITH [ NO ] DATA ]


    2. 创建物化视图示例

    --创建测试表
    test=# CREATE TABLE TEST01 (ID INT);
    CREATE TABLE
    test=# INSERT INTO TEST01 SELECT GENERATE_SERIES(1,1000000);
    INSERT 0 1000000
    
    --创建物化视图
    test=# CREATE MATERIALIZED VIEW V_TEST01 AS SELECT * FROM TEST01;
    SELECT 1000000
    test=# 
    test=# INSERT INTO TEST01 VALUES (1000001);
    INSERT 0 1
    test=# 	iming
    Timing is on.
    
    --不加CONCURRENTLY参数的刷新
    test=# REFRESH MATERIALIZED VIEW V_TEST01;
    REFRESH MATERIALIZED VIEW
    Time: 1888.860 ms
    test=# INSERT INTO TEST01 VALUES (1000002);
    INSERT 0 1
    test=# CREATE UNIQUE INDEX INX_ID ON V_TEST01(ID);
    CREATE INDEX
    
    --加CONCURRENTLY参数的刷新
    test=# refresh materialized view concurrently v_test01;
    REFRESH MATERIALIZED VIEW
    Time: 100476.707 ms
    
    可见,加了CONCRRENTLY参数后,刷新时间明显增加。但加了CONCRRENTLY参数的更新不会阻塞查询操作。

    The End!

    2017-08-21

  • 相关阅读:
    技术晨读_20160611
    浏览器退出之后php还会继续执行么?
    大话keepalive
    也说说TIME_WAIT状态
    PHP的错误机制总结
    ASP.NET MVC中使用Unity Ioc Container
    Unity依赖注入使用详解
    小菜学习设计模式(五)—控制反转(Ioc)
    程序员的人性思考(续)
    Delegate、Predicate、Action和Func
  • 原文地址:https://www.cnblogs.com/NextAction/p/7407030.html
Copyright © 2011-2022 走看看