一、物化视图简介

物化视图分类

物化视图分类,物化视图语法和as后面的sql分为:

  • (1) 基于主键的物化视图(主键物化视图)
  • (2)基于Rowid的物化视图(Rowid物化视图)

本博客介绍一下Oracle的物化视图,物化视图(Materialized view)是相对与普通视图而已的,普通视图是伪表,功能没那么多,而物化视图创建是需要占用一定的存储空间的,物化视图常被应用与调优一些列表SQL查询,物化视图的基本语法:

 create materialized view [视图名称]
build immediate | deferred
refresh fase | complete | force
on demand | commit
start with [start time]
next [next time]
with primary key | rowid //可以省略,一般默认是主键物化视图
as [要执行的SQL]

ok,解释一下这些语法用意:

build immediate | deferred (视图创建的方式):

  • (1) immediate:表示创建物化视图的时候是生成数据的;
  • (2) deferre:就相反了,只创建物化视图,不生成数据

refresh fase | complete | force (视图刷新的方式):

  • (1) fase:增量刷新,也就是距离上次刷新时间到当前时间所有改变的数据都刷新到物化视图,注意,fase模式必须创建视图日志
  • (2) complete:全量更新的,complete方式相当于创建视图重新全部查一遍
  • (3) force:视图刷新方式的默认方式,当增量刷新可用则增量刷新,当增量刷新不可用,则全量刷新,一般不要用默认方式

on demand | commit start with ... next ...(视图刷新时间):

  • (1) demand:根据用户需要刷新时间,也就是说用户要手动刷新
  • (2) commit:事务一提交,就自动刷新视图
  • (3) start with:指定首次刷新的时间,一般用当前时间
  • (4) next:物化视图刷新数据的周期,格式一般为“startTime+时间间隔”

二、实践:创建物化视图

上面是物化视图主要语法的简介,下面可以实践一下,创建一个主键物化视图

ps:创建一个名称为MV_T的物化视图,视图创建完成是生成数据的,增量刷新,根据用户需要刷新,每隔两天刷新一次视图

create materialized view MV_T
build immediate
refresh fast
on demand
start with sysdate
next sysdate + 2
as select * from sys_user;

可能遇到问题:

(1)、ORA-12014: 表 不包含主键约束条件

SQL> create materialized view mv_t
2 build immediate
3 refresh fast
4 on demand
5 start with sysdate
6 next sysdate + 2
7 as select * from sys_user;
as select * from sys_user;
第 7 行出现错误:
ORA-12014: 表 'SYS_USER' 不包含主键约束条件

这是因为as SQL语句的表没创建主键,而是使用的是基于表的物化视图,解决方法是新建主键

(2)、ORA-23413: 表不带实体化视图日志

SQL> create materialized view mv_t
2 build immediate
3 refresh fast
4 on demand
5 start with sysdate
6 next sysdate + 2
7 as select * from sys_user;
as select * from sys_user;
第 7 行出现错误:
ORA-23413: 表 "T_BASE"."SYS_USER" 不带实体化视图日志

这是因为refresh方式用fast方式,fast增量方式必须创建视图日志

create materialized view log on [表名];

删除视图日志:

drop materialized view log on [表名]

假如是基于Rowid的物化视图,就可以用这种方法:

create materialized view log on [表名] with rowid;

附录:物化视图常用SQL

  • 删除物化视图:
drop materialized view [视图名称];
  • 查看物化视图:
select mv.* from user_mviews mv where mv.MVIEW_NAME = [视图名称];
  • 查看物化视图列:
select sg.segment_name, sg.bytes, sg.blocks from user_segments sg where sg.segment_name = [视图名称];
  • 手动刷新物化视图:
exec dbms_mview.refresh([视图名称]);

Oracle性能调优之物化视图用法简介的更多相关文章

  1. Oracle性能调优之虚拟索引用法简介

    本博客记录一下Oracle虚拟索引的用法,虚拟索引是定义在数据字典中的伪索引,可以说是伪列,没有修改的索引字段的.虚拟索引的目的模拟索引,不会增加存储空间的使用,有了虚拟索引,开发者使用执行计划的时候 ...

  2. Oracle SQL调优之绑定变量用法简介

    目录 一.SQL执行过程简介 二.绑定变量典型用法 2.1.在SQL中绑定变量 2.2.在PL/SQL中使用绑定变量 2.3.PL/SQL批量绑定变量 2.4.Java代码里使用绑定变量 最近在看&l ...

  3. [转]oracle性能调优之--Oracle 10g AWR 配置

    一.ASH和AWR的故事 1.1 关于ASH 我们都知道,用户在ORACLE数据库中执行操作时,必然要创建相应的连接和会话,其中,所有当前的会话信息都保存在动态性能视图V$SESSION中,通过该视图 ...

  4. Oracle 性能调优之:使用 V$SQL_PLAN 视图查询内存中的执行计划

    V$SQL_PLAN视图提供了一种方法,可用于检查仍位于库高速缓存的游标的执行计划.此视图中的信息与 PLAN_TABLE 视图中的信息非常类似.但是,EXPLAIN PLAN 显示的是执行相应语句时 ...

  5. Oracle性能调优(AWR)

    一.AWR报告 AWR 是通过对比两次快照(snapshot)收集到的统计信息,来生成报表数据,生成的报表包括多个部分,这点与Statspack生成的报告非常类似.不过AWR在生成报告时,可以选择生成 ...

  6. Oracle 性能调优 SQL_TRACE

    思维导图 Oracle优化10-SQL_TRACE解读 Oracle优化11-10046事件 概述 当我们想了解一条SQL或者是PL/SQL包的运行情况时,特别是当他们的性能非常差时,比如有的时候看起 ...

  7. Oracle 性能调优 10053事件

    思维导图 10053事件概述 我们在查看一条SQL语句的执行计划时,只看到了CBO最终告诉我们的执行计划结果,但是我们并不知道CBO为何要这样做. 特别是当执行计划明显失真时,我们特别想搞清楚为什么C ...

  8. Oracle 性能调优案例(代码级别)

    业务案例一: 业务:千万记录表中查询出50条符合条件的记录. 现象:oracle部署时跨机器,业务取得数据耗时10ms.造成业务性能不达标. 为了突出主题,对于异常分支,均已省略. 对于通常写法, o ...

  9. Oracle 性能调优

    在 oracle 中效率排行, 表连接>exist>not exist>in>no in 并且使用in 查询 会有查询条件数量不能超过1000 的限制: 简单提高效率可以使用 ...

随机推荐

  1. Python 电子邮件

    从一台计算机编写邮件到对方收到邮件.假设我们自己的电子邮件地址是me@163.com,对方的电子邮件地址是friend@sina.com 我们在本地的软件上写好邮件,点击发送,邮件就发送出去了,这些电 ...

  2. Python 高级特性:切片、迭代、列表生成式、生成器

    切片(发现了一些新操作) 参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017269965565856 间隔取元素(可以取负数,负数就 ...

  3. AutoresizingMask 的使用

    (1)先了解一下这几个枚举值的含义: (2)代码演说: 在viewcontroller 用代码创建一个红色的view,如下: UIView *redView = [[UIView alloc] ini ...

  4. bat弹出确认或取消窗口

    需要在bat脚本里面弹出取消/确认框提示,可以用下面的案例: 示例: @echo off setlocal enabledelayedexpansion set Vbscript=Msgbox(&qu ...

  5. log4j每天生成一个文件配置

    log4j.rootLogger=INFO,CONSOLE,logDailyFile log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlo ...

  6. IEDA创建Springboot项目

    随着技术的更新对于开发速度的追求,我们越来越不能忍受的是Spring框架对于集成开发以后大量的配置问题.所以SprigBoot应运而生,SpringBoot框架其实就是在Spring框架的外边包裹上了 ...

  7. hexo笔记

    目录 hexo 常用指令 站内文章跳转 hexo安装 NexT主题 默认主题 评论插件-gitalk 修改内容区宽度 添加文章阴影 文章摘要设置 一篇文章多个 categories hexo的一些配置 ...

  8. 201871010102-常龙龙《面向对象程序设计(java)》第八周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  9. 【Web】URL解析

    Request = { QueryString: function (item) { var svalue = location.search.match(new RegExp("[\?\& ...

  10. 初次运行git时的配置

    初次运行git时的配置 # 参考文档 https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%88%9D%E6%AC%A1%E8%BF%90%E8% ...