• 42.oracle物化视图


    写在前面

      先大概列一下数据库表设计的常规流程、方案、要遵循的规则

    1. 根据业务切分设计表
    2. 逻辑分层(数据库分层)
    3. 数据库结构设计与拆分:
      水平拆分(mysql分片)
      oracle分区
      物化视图
      中间表
      设计方案
    4. 优化结构设计:
      建立普通索引
      建立规则索引
      建立复合索引
      数据规则(添加你认为必要的扩展字段)
      预留字段(用于关联其他业务的)
      做一些合理的冗余

    物化视图的概念

      视图(VIEW)是一种虚表,其目的仅仅是为了方便我们进行综合数据查询,它并不能提高性能。想要提高性能的话,就需要引出物化视图了。

      物化视图是一种特殊的物理表,物化(materialized)视图是相对普通视图而言的。

      物化视图的特点:

    • 是一个物理表而且不仅仅是一个物理表,可以查询user_tables看一下。
    • 物化视图是一种段(segment),有自己的物理存储属性。
    • 物化视图会占用数据库磁盘空间,可以查询user_segment看一下。

      物化视图刷新类型:手工刷新和自动刷新,默认为手工刷新。(ON DEMAND、ON COMMIT)

      二者的区别在于刷新的方法不同,ON DEMAND,仅在该物化视图“需要”被刷新才会刷新,就是更新物化视图,以保证表和视图的一致性;ON COMMIT是一旦表有COMMIT(事务提交),则立即刷新,更新物化视图。

    物化视图的使用

    create materialized view mv_name[选项N] as select * from table_name;

    • 选项1:BUILD[IMMEDIATE,DEFFERRED]是否在创建视图是生成数据,默认生成;defferred 需要的时候生成。
    • 选项2:REFRESH[FAST , COMPLETE , FORCE , NEVER],fast是增量属性,或者说叫快速刷新;complete 全表刷新;force 如果增量刷新可以使用则使用增量刷新,否则全表刷新;never表示不刷新。
    • 选项3:ON[DEMAND , COMMIT] 即手工刷新和提交时刷新。
    • 选项4:START WITH:通知数据库完成从主表到本地表第一次复制的时间。
    • 选项5:NEXT :刷新的时间间隔。

    准备

    用dba角色给scott分配创建物化视图的权限

    创建简单物化视图

    来更新一下看看物化视图有没有变:

    结果显然可见,没有变,为什么呢?因为update后没有commit; commit后视图数据发生了变化。

    配置为增量刷新

    前面在创构建物化视图的时候,refresh被指定为force,但就目前来看,用的并不是增量刷新,而是全表刷新。因为物化视图并不知道基表在修改的时候更新了哪一条数据,所以要明确指定出来:

    create materialized view log on a with rowid;

    create materialized view log on b with rowid;

    再创建一个物化视图,注意一点要AROWID和BROWID:

    指定手动刷新,每隔一分钟刷一次。

    create materialized view mv_ab
        refresh fast on demand
        start with sysdate
        next sysdate+1/1440
    as
        select a.rowid as arowid , b.rowid as browid,a.id, a.name, b.clsid, b.name as clsname
        from a,b
        where a.clsid = b.clsid;

  • 相关阅读:
    文件上传的核心点 一(59)
    ajax1—php(27)
    php—Smarty-缓存2(26)
    php—Smarty-缓存1(25)
    java—实现一个监听器HttpServletRequest的创建销毁、在线人数 (56)
    Linux—virtualbox系统安装(1)
    php—Smarty-2
    java—不同的用户登录以后可以看到不同的菜单(后台可以实现对用户菜单的管理) 1 (55)
    java—数据存储过程 (54)
    java—ThreadLocal模式与OSIV模式(53)
  • 原文地址:https://www.cnblogs.com/sigm/p/6622550.html
Copyright © 2020-2023  润新知