当前位置: 首页 > news >正文

Oracle-物化视图基本操作

-- 物化视图  

-- 与普通视图的区别:真实存在数据的  普通视图的数据在基表

物化视图看成是, 一个定时运行的计算JOB+一个存计算结果的表

创建时生成数据:

分为两种:build immediate 和 build deferred,

build immediate是在创建物化视图的时候就生成数据。

build deferred则在创建时不生成数据,以后根据需要在生成数据。

如果不指定,则默认为build immediate。

刷新模式:

物化视图有二种刷新模式:

在创建时refresh mode是 on demand  还是 on commit。

on demand 顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;

on commit  提交触发,一旦基表有了commit,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。

一般用这种方法在操作基表时速度会比较慢。

创建物化视图时未作指定,则Oracle按 on demand 模式来创建。

上面说的是刷新的模式,针对于如何刷新,则有三种刷新方法:

 -- 增量或者全量

完全刷新(COMPLETE): 会删除表中所有的记录(如果是单表刷新,可能会采用TRUNCATE的方式),然后根据物化视图中查询语句的定义重新生成物化视图。

快速刷新( FAST ): 采用增量刷新的机制,只将自上次刷新以后对基表进行的所有操作刷新到物化视图中去。FAST必须创建基于主表的视图日志。

对于增量刷新选项,如果在子查询中存在分析函数,则物化视图不起作用。

FORCE方式:这是默认的数据刷新方式。Oracle会自动判断是否满足快速刷新的条件,如果满足则进行快速刷新,否则进行完全刷新。

关于快速刷新:Oracle物化视图的快速刷新机制是通过物化视图日志完成的。Oracle通过一个物化视图日志还可以支持多个物化视图的快速刷新。

物化视图日志根据不同物化视图的快速刷新的需要,可以建立为ROWID或PRIMARY KEY类型的。

还可以选择是否包括SEQUENCE、INCLUDING NEW VALUES以及指定列的列表。

-- 去到dba用户给user用户授权

 grant create materialized view to user;

-- 回收权限

revoke create materialized view from user; 

-- 创建物化视图

create materialized view emp_test_mv

refresh fast 

on commit 

as

select * from emp_test; 

-- 创建一张测试源表

create table emp_test as select * from emp;

-- 删除物化视图

drop materialized view emp_test_mv;

-- 在源表创建主键  否则报错

alter table emp_test add constraint pk_emp_test_empno primary key(empno) ; 

-- 删除物化视图日志

drop materialized view log on emp_test;

-- 在源表建立物化视图日志  否则报错  日志指定为主键类型

create materialized view log on emp_test    

with primary key;

--  在代码里面指定物化视图的刷新时间

-- 在每天18:58进行刷新

create materialized view emp_test_mv

refresh fast 

start with sysdate

next to_date(concat(to_char( sysdate,'dd-mm-yyyy'),'19:05:00'),'dd-mm-yyyy hh24:mi:ss')  

as

select * from emp_test; 

-- 指定三分钟刷新一次

create materialized view emp_test_mv

refresh FAST     

START WITH  sysdate  

next SYSDATE + 1/24/20

as

select * from emp_test; 

http://www.lryc.cn/news/489880.html

相关文章:

  • (功能测试)测试报告
  • 【LeetCode每日一题】——746.使用最小花费爬楼梯
  • 程序里sendStringParametersAsUnicode=true的配置导致sql server cpu使用率高问题处理
  • Vue3 el-table 默认选中 传入的数组
  • 最后一个单词的长度
  • 2024-11-19 kron积
  • Redis ⽀持哪⼏种数据类型?适⽤场景,底层结构
  • 树莓派2 安装raspberry os 并修改成固定ip
  • 11月第3周AI资讯
  • 一次封装,解放双手:Requests如何实现0入侵请求与响应的智能加解密
  • Notepad++--在开头快速添加行号
  • Python和MATLAB示例临床因素分析
  • 嵌入式硬件实战基础篇(二)-稳定输出3.3V的太阳能电池-无限充放电
  • 【数据结构】树——链式存储二叉树的基础
  • STM32-- keil常见报错与解决办法
  • 【大数据学习 | Spark-Core】RDD的概念与Spark任务的执行流程
  • 一文读懂埋阻埋容工艺
  • mysql 数据表导出为 markdown(附 go 语言 gorm 的实际使用)
  • 本地云存储 MinIO 中修改用户密码
  • go项目中比较好的实践方案
  • 回溯法基础入门解析
  • 计算机网络-VPN虚拟专用网络概述
  • 信创时代的数据库之路:2024 Top10 国产数据库迁移与同步指南
  • 自制游戏:监狱逃亡
  • 小雪时节,阴盛阳衰,注意禁忌
  • CPU性能优化--微操作
  • 工厂模式
  • 嵌入式系统与OpenCV
  • 编程之路,从0开始:动态内存笔试题分析
  • 物联网研究实训室建设方案