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

Oracle——物化视图

文章目录

  • 含义
  • 物化视图的语法
  • 物化视图的创建
    • 1、自动刷新的物化事务 ON COMMIT
    • 2、非自动刷新的物化视图 ON demand
  • 关于手动刷新
  • 物化视图的删除
  • 资料参考

含义

什么是物化视图

物化视图,通俗点说就是物理化的视图。

什么叫物理化

将视图以表结构的方式,存储在磁盘中。

在之前的博客中针对普通视图说过,普通视图的本质就是一段 SQL 语句,本身的数据不会存储在磁盘上,每次查询时,普通视图中的数据,来源于重新执行视图中的SQL语句

普通视图就是将复杂的可共用的SQL片段的封装。

但是,每次进行视图查询操作时,都将触发视图中的sql再次执行,程序的执行,存在执行快慢的问题,在程序界中存在一个说法叫时间复杂度

物化视图相比普通视图而言,是将原本的普通视图中的SQL转换成了对应的表结构,并会在磁盘空间中进行存储。

可以理解为就是一张由SQL语句和查询字段构成的新的表。

当然,作为而言,相对应的比如索引等操作也都可以实现。

但是物化视图由于占用了更多的服务器内存空间,也就导致出现空间复杂度的问题。

程序的效率,无非就是在时间复杂度空间复杂度的取舍。

物化视图的语法

物化视图的创建语法,如下所示:

create materialized view [view_name]
refresh [fast|complete|force]
[
on [commit|demand] |
start with (start_time) next (next_time)
]
as
{创建物化视图用的查询语句}

其中,各项关键字说明如下:

名称用途含义
materialized物化视图关键字物理化
fast刷新方式增量更新,只会刷新自上次刷新以后的修改内容。
complete刷新方式全部刷新。相当于重新执行一次创建视图的查询语句。
force刷新方式(默认刷新方式)由oracle在需要进行刷新操作时,当可以使用fast模式时,数据刷新将采用fast方式;否则使用complete方式。
nerver刷新方式视图不进行任何刷新操作。
on commit刷新时间(模态)基表数据事务提交时,立即刷新对应物化视图。
on demand刷新时间(模态)(oracle的默认类型)在用户需要刷新的时候进行刷新操作。这里就要求用户自己动手去刷新数据了(也可以使用job定时刷新)
start with (start_time) next (next_time)刷新时间从指定的时间开始,每隔一段时间(由next指定)就刷新一次

物化视图的创建

1、自动刷新的物化事务 ON COMMIT

按照上面的语法与参数说明,创建一个简单的物化视图。

创建一张物化视图表,要求在事务提交后,立刻自动刷新物化视图数据。

create MATERIALIZED VIEW mv_bl_user_list 
refresh force -- 由oracle决定该刷新的时候,采取何种方式执行
ON COMMIT  -- 刷新模态,触发点
AS 
SELECT * FROM bl_user_list

测试:
1、先执行物化视图的创建sql
2、查询基表数据信息
3、查询物化视图的数据信息
4、新增或者更新基表的数据
5、查询物化视图。
6、观察新增的数据是否自动刷新至物化视图中。

基表数据事务提交后,对应的物化视图数据也会同步及时变更!

2、非自动刷新的物化视图 ON demand

创建一个需要手动刷新数据的物化视图。

CREATE MATERIALIZED VIEW mv_bl_user_list 
refresh force
ON demand 
AS 
SELECT * FROM bl_user_list

测试:
1、先执行物化视图的创建sql
2、查询基表数据信息
3、查询物化视图的数据信息
4、新增或者更新基表的数据
5、查询物化视图。
6、观察新增的数据是否自动刷新至物化视图中。

基表的数据事务提交后,对应物化视图中的数据并不会自动刷新!

关于手动刷新

如果在创建物化视图时,设定刷新模态为 on demand 时,会需要用户进行手动刷新操作。
比如,将上述的非自动刷新视图进行数据刷新操作。

begin
--dbms_mview.refresh(TAB=>'mv_bl_user_list',METHOD=>'COMPLETE',PARALLELISM=>8);dbms_mview.refresh('mv_bl_user_list','COMPLETE');
end;

在这里插入图片描述

物化视图的删除

drop materialized view 物化视图名

资料参考

Oracle物化视图-看这一篇就可以了

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

相关文章:

  • ur3+robotiq 2f 140配置moveit
  • LDO 芯片烫手,问题出在哪里?
  • 零日漏洞发展格局及防御策略
  • RabbitMQ 可用磁盘空间报警
  • Web前端学习:二
  • 【第一章 计算机网络体系结构,标准化工作相关组织,性能指标,分层结构,OSI参考模型】
  • SpringIOC源码解析
  • 【Jupyter Notebook的简单入门使用】
  • @Component@Import@Bean加载顺序解析
  • 二极管温度补偿电路工作原理分析
  • 【C语言】多线程之条件竞争
  • UE NavigationSystem的相关实现
  • Java 继承
  • Python学习笔记8:异常
  • python保留小数函数总结
  • 狐狸优化算法(Matlab代码实现)
  • 浏览器自动化框架沦为攻击者的工具
  • SQL必备知识(自用)
  • BI工具术语表大全:从字母A-Z全面收录
  • vue3 + vite + ts 集成mars3d
  • 跨境卖家必看的沃尔玛Walmart商家入驻教程
  • 【GANs】什么是饱和损失函数 Non-Saturating LossFunction
  • USB接口虚拟网卡
  • 基于SpringBoot的外卖项目的优化
  • Ubuntu20.04/22.04 ESP32 命令行开发环境配置
  • Kali Linux使用Metasploit生成木马入侵安卓系统
  • 数据库复习1
  • 18. linux系统基础
  • ssh远程登录报错:kex_exchange_identification: Connection closed by remote host
  • Quartus II 的入门级使用