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

Oracle物化视图详解

物化视图(Materialized View)是Oracle数据库中一种特殊的物理表,它存储了查询结果的物理副本,而不是仅仅存储查询的定义‌。与普通视图不同,普通视图是虚拟表,每次查询时都需要动态执行SQL语句,而物化视图会实际存储查询结果,就像一个物理表一样‌。

物化视图的主要特点

  1. 物理存储‌:物化视图实际存储数据,占用数据库存储空间‌
  2. 性能优势‌:可以显著提高复杂查询的性能,特别是涉及多个表连接或聚合运算的查询‌3
  3. 数据同步‌:可以通过不同方式刷新以保持与基表数据的一致性‌
  4. 索引支持‌:可以像普通表一样创建索引进一步优化查询性能‌

物化视图的分类

按刷新方式分类

  • ON DEMAND‌:需要手动或按计划刷新物化视图‌
  • ON COMMIT‌:基表数据变更提交时自动刷新物化视图‌

按刷新方法分类

  • FAST‌:增量刷新,只刷新自上次刷新后修改的数据‌
  • COMPLETE‌:完全刷新,重新计算整个物化视图‌
  • FORCE‌:Oracle自动选择FAST或COMPLETE方式(默认)‌
  • NEVER‌:不进行任何刷新‌

创建物化视图的基本语法

CREATE MATERIALIZED VIEW [视图名称]
BUILD IM
MEDIATE|DEFERRED REFRESH FAST|COMPLETE|FORCE ON DEMAND|COMMIT
START WITH [开始时间] NEXT [间隔时间] WITH PRIMARY KEY|ROWID
AS [查询语句];

参数说明:

  • BUILD IMMEDIATE:创建时立即生成数据
  • BUILD DEFERRED:创建时不生成数据,后续需要时再生成
  • REFRESH:指定刷新方式(FAST/COMPLETE/FORCE)
  • ON DEMAND|COMMIT:指定刷新触发方式
  • START WITHNEXT:设置刷新计划‌

物化视图的典型应用场景

  1. 数据仓库和报表系统‌:预先计算复杂聚合查询结果‌
  2. 分布式数据库环境‌:在不同数据库间同步数据‌
  3. 性能优化‌:加速频繁执行的复杂查询‌
  4. 数据整合‌:将多个数据源的数据汇总到一个视图中‌

物化视图刷新示例

-- 手动完全刷新
BEGINDBMS_MVIEW.REFRESH('mv_sales_summary', 'C');
END;
-- 手动增量刷新
BEGINDBMS_MVIEW.REFRESH('mv_sales_summary', 'F');
END;

物化视图与普通视图的区别

特性物化视图普通视图
数据存储物理存储数据只存储查询定义
查询性能高(直接读取存储结果)低(每次执行查询)
刷新机制需要定期刷新实时反映基表变化
存储空间占用存储空间不占用存储空间
索引支持支持创建索引不支持索引‌56
http://www.dtcms.com/a/293686.html

相关文章:

  • 计算机网络第四章(4)——网络层《无分类编址CIDR、路由聚合》
  • ESP32-CAM实战:DIY基于OpenAI的AI视觉识别相机
  • 校园后勤服务平台小程序的设计与实现
  • Android埋点实现方案深度分析
  • 新手向:Idea的使用技巧
  • Android 架构演进:从 MVC 到 MVVM 的设计之道
  • SpringCloud seata全局事务
  • python在windows电脑找回WiFi密码
  • LinkedList的模拟实现+LinkedList和ArrayList的区别
  • 使用 Maven 的 `maven-assembly-plugin` 插件打包zip
  • UE5实现NPC头部朝向玩家功能
  • 旧手机部署轻量级服务器
  • HakcMyVM-Luz
  • 解构未来金融:深入剖析DeFi与去中心化交易所(DEX)的技术架构
  • ZooKeeper在Hadoop中的协同应用:从NameNode选主到分布式锁实现
  • CSS 基础
  • Web 服务器和Web 中间件
  • Apache POI 介绍与使用指南
  • 思路探索:当大型语言模型遇见数据分析的现实挑战
  • 利用中间件实现任务去重与分发精细化:股吧舆情数据采集与分析实战
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-最近七天微博发布量实现
  • java设计模式 -【装饰器模式】
  • C study notes[3]
  • JavaWeb笔记12
  • 硬件基础 -- 信号完整性
  • ESP32-S3学习笔记<4>:I2C的应用
  • 0基础法考随手笔记 02(刑诉法专题04 辩护与代理)
  • 如何用 Kafka + Redis + 线程池搭建高吞吐异步消息处理架构
  • TwoPhaseIterator 两阶段验证
  • Fastdds中的端口号计算