千家信息网

Oracle12c 中如何理解完全刷新的物化视图工作原理

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,Oracle12c 中如何理解完全刷新的物化视图工作原理,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是物化视图?物化视图是用于
千家信息网最后更新 2026年11月02日Oracle12c 中如何理解完全刷新的物化视图工作原理

Oracle12c 中如何理解完全刷新的物化视图工作原理,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

什么是物化视图?

物化视图是用于复制数据和提高查询操作性能的数据库对象。

引用Darl Kuhn的一句话来回答就是:"定期清空和加载查询结果的表"

我们可以通过一个小例子来模拟最简单的完全刷新物化视图的工作过程

实验之前先明确两个定义:

主表:SH.costs ,example中的示例表

基表:SH.mv_costs ,保存查询结果集的实体表,也就是"模拟物化视图"的真正保存数据的地方。

实验一,模拟完全刷新物化视图

1. 主表为SH.costs

SH@pdb1 > select * from costs where rownum<10;

PROD_ID TIME_ID PROMO_ID CHANNEL_ID UNIT_COST UNIT_PRICE

---------- --------- ---------- ---------- ---------- ----------

14 17-JAN-98 999 3 890.98 1112.87

14 24-JAN-98 999 2 886.45 1108.99

14 03-MAR-98 999 2 904.18 1176.23

14 10-MAR-98 999 3 892.72 1159.99

14 14-MAR-98 999 4 863.64 1176.23

15 02-JAN-98 999 3 875.22 1013.99

15 17-JAN-98 999 4 846.71 999.99

15 19-JAN-98 999 4 846.71 999.99

15 02-FEB-98 999 4 863.64 1013.99

2. 假设主表的常用查询如下

SH@pdb1 > select promo_id,sum(unit_cost) cost from costs group by promo_id;

PROMO_ID COST

---------- ----------

999 9168179.93

350 242949.08

351 258268

3. 使用CTAS方式创建一个表来保存常用查询的结果集,此刻它相当于物化视图的基表。

SH@pdb1 > create table mv_costs as select promo_id,sum(unit_cost) cost from costs group by promo_id;

4. 物化视图的基表执行完全刷新的过程模拟如下。首先删除基表中所有数据,然后再将源表的查询结果集插入到基表中。

SH@pdb1 > delete mv_costs;

SH@pdb1 > commit;

SH@pdb1 > insert into mv_costs select promo_id,sum(unit_cost) cost from costs group by promo_id;

SH@pdb1 > commit;

5. 查询物化视图基表的数据。

SH@pdb1 > select * from mv_costs;

PROMO_ID COST

---------- ----------

999 9168179.93

350 242949.08

351 258268

实验二, 创建完全刷新的物化视图

模拟结束,接下来创建一个真正的物化视图,跟上面模拟示例功能一样的完全刷新的物化视图。

SH@pdb1 >

create materialized view mv_costs_1

segment creation immediate

refresh

complete

on demand

as select promo_id,sum(unit_cost) cost from costs group by promo_id;

通过下面的sql语句可以看到我们创建的物化视图是由视图、基表两部分组成。基表是真正存储查询结果集的地方。

SH@pdb1 > col object_name for a20

SH@pdb1 > select object_name,object_type from user_objects where object_name like 'MV_COSTS_1' order by object_name;

OBJECT_NAME OBJECT_TYPE

-------------------- -----------------------

MV_COSTS_1 TABLE

MV_COSTS_1 MATERIALIZED VIEW

手工执行完全刷新,该命令执行效果和模拟演示中delete mv_costs, insert into mv_costs select ...是一样的。

SH@pdb1 > exec dbms_mview.refresh('MV_COSTS_1','C');

关于Oracle12c 中如何理解完全刷新的物化视图工作原理问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

视图 查询 数据 结果 工作 问题 实验 原理 地方 常用 常用查询 更多 示例 过程 帮助 解答 易行 接下来 简单易行 一句话 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 耶加雪菲 科技互联网企业 科技股互联网 科技互联网项目 新华互联网科技学院 万易互联网科技 互联网科技股有哪些 海南科技产业互联网平台 移动互联网科技公司 允成互联网科技有限公司融资 互联网科技和法律行业 保险科技服务互联网营销体系 工业互联网山东科技大学 半导体行业属于互联网高科技类吗 互联网高科技行业有哪些企业 互联网科技的前景 互联网科技创新创业项目 上海旺乐尼互联网科技有限公司 互联网科技创新方面的资料 互联网科技自媒体灵感 苏州找大状互联网科技有限公司 深圳齐家互联网科技 海南科技产业互联网平台 老年人脱离互联网科技的作文 互联网科技公司需要的职位 现代互联网科技股 企晟互联网信息科技有限公司 区块链结合互联网科技 有人说阿里系是互联网科技企业 易企秀互联网科技是做什么的
0