千家信息网

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

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,Oracle12c 中如何理解完全刷新的物化视图工作原理,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。什么是物化视图?物化视图是用于
千家信息网最后更新 2025年02月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安全错误 数据库的锁怎样保障安全 网络安全 要不要参加培训班 初一护苗网络安全课观后感 网络安全和文明上网的海报 查数据库两个字段的sql 福州检测设备软件开发 华为服务器怎么查管理口ip 金嘉鸿达网络技术有限公司 成都互联网科技有限公司李敏 怀旧服服务器最大内存 网络安全宣传视频文案 辽宁大数据授时模块服务器 合川区工商软件开发流程报价表 服务器连接错误请检查网络连接 定制家具拆单软件开发 南京云问网络技术 宁波多媒体展厅影视软件开发 pc代理服务器出现 细分行业的软件开发人员 互联网公司为何不进军高科技 西藏聚酒缘互联网科技有限公司 我的世界服务器闪退什么原因 数据库导出默认保存在哪里 数据库约束 中的moc 安徽浪潮服务器维修调试云服务器 服务器设备间安全等级 云开发提供的云数据库类型 开放语音数据库 dell 740服务器电源按钮 网络安全进校园400字 我身边的网络安全有那些
0