Oracle性能调优之物化视图用法简介
一、物化视图简介
物化视图分类
物化视图分类,物化视图语法和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性能调优之物化视图用法简介的更多相关文章
- Oracle性能调优之虚拟索引用法简介
本博客记录一下Oracle虚拟索引的用法,虚拟索引是定义在数据字典中的伪索引,可以说是伪列,没有修改的索引字段的.虚拟索引的目的模拟索引,不会增加存储空间的使用,有了虚拟索引,开发者使用执行计划的时候 ...
- Oracle SQL调优之绑定变量用法简介
目录 一.SQL执行过程简介 二.绑定变量典型用法 2.1.在SQL中绑定变量 2.2.在PL/SQL中使用绑定变量 2.3.PL/SQL批量绑定变量 2.4.Java代码里使用绑定变量 最近在看&l ...
- [转]oracle性能调优之--Oracle 10g AWR 配置
一.ASH和AWR的故事 1.1 关于ASH 我们都知道,用户在ORACLE数据库中执行操作时,必然要创建相应的连接和会话,其中,所有当前的会话信息都保存在动态性能视图V$SESSION中,通过该视图 ...
- Oracle 性能调优之:使用 V$SQL_PLAN 视图查询内存中的执行计划
V$SQL_PLAN视图提供了一种方法,可用于检查仍位于库高速缓存的游标的执行计划.此视图中的信息与 PLAN_TABLE 视图中的信息非常类似.但是,EXPLAIN PLAN 显示的是执行相应语句时 ...
- Oracle性能调优(AWR)
一.AWR报告 AWR 是通过对比两次快照(snapshot)收集到的统计信息,来生成报表数据,生成的报表包括多个部分,这点与Statspack生成的报告非常类似.不过AWR在生成报告时,可以选择生成 ...
- Oracle 性能调优 SQL_TRACE
思维导图 Oracle优化10-SQL_TRACE解读 Oracle优化11-10046事件 概述 当我们想了解一条SQL或者是PL/SQL包的运行情况时,特别是当他们的性能非常差时,比如有的时候看起 ...
- Oracle 性能调优 10053事件
思维导图 10053事件概述 我们在查看一条SQL语句的执行计划时,只看到了CBO最终告诉我们的执行计划结果,但是我们并不知道CBO为何要这样做. 特别是当执行计划明显失真时,我们特别想搞清楚为什么C ...
- Oracle 性能调优案例(代码级别)
业务案例一: 业务:千万记录表中查询出50条符合条件的记录. 现象:oracle部署时跨机器,业务取得数据耗时10ms.造成业务性能不达标. 为了突出主题,对于异常分支,均已省略. 对于通常写法, o ...
- Oracle 性能调优
在 oracle 中效率排行, 表连接>exist>not exist>in>no in 并且使用in 查询 会有查询条件数量不能超过1000 的限制: 简单提高效率可以使用 ...
随机推荐
- PMP备考-第一章-引论
项目 项目是为创造独特的产品,服务和成果而进行的临时性工作.在规定的范围,进度,成本,和质量要求之下完成项目可交付成果. 项目与运用 项目 :临时性,独特性,渐进明细 运营 :持续的,相似性,标准化 ...
- vuejs兄弟通信$emit和$on
1 vm.$on( event, callback ) 监听当前实例上的自定义事件.事件可以由vm.$emit触发.回调函数会接收所有传入事件触发函数的额外参数. 2 vm.$emit( even ...
- influxdb-1.7.8(centos 7) 部署
1.官方下载: https://dl.influxdata.com/influxdb/releases/influxdb-1.7.8.x86_64.rpm 2.安装软件 sudo yum locali ...
- [MySQL] 事务的ACID特性
事务的ACID特性: 原子性(atomicity):一个事务是一个不可分割的最小工作单位,事务中的所有操作要么都做,要么都不做. 一致性(consistency):事务前后数据的完整性必须保持一致.事 ...
- 还是畅通工程 HDU - 1233
题目链接:https://vjudge.net/problem/HDU-1233 思路: 最小生成树板子. #include <iostream> #include <stdio.h ...
- Shiro RememberMe 1.2.4 反序列化漏洞复现
目录 原理解释 环境搭建 复现过程 原理解释 Apache Shiro是一个Java安全框架,执行身份验证.授权.密码和会话管理. shiro默认使用了CookieRememberMeMana ...
- tensorflow模型量化实例
1,概述 模型量化应该是现在最容易实现的模型压缩技术,而且也基本上是在移动端部署的模型的毕竟之路.模型量化基本可以分为两种:post training quantizated和quantization ...
- Rust自定义智能指针
深了,真深了. use std::ops::Deref; struct MyBox<T>(T); impl<T> MyBox<T> { fn new(x: T) - ...
- python cookie登录DVWA,phpstudy搭建DVWA参考https://www.jianshu.com/p/97d874548300
import requestsheader={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleW ...
- C++和C的相互调用
C++和C相互调用实际工程中C++和C代码相互调用是不可避免的C++编译器能够兼容C语言的编译方式C++编译器会优先使用C++编译的方式extern关键字能强制让C++编译器进行C方式的编译 exte ...