我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

    物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好。

    物化视图:是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照!

    1.物化视图的类型:ON DEMAND、ON COMMIT 

    二者的区别在于刷新方法的不同,ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;而ON COMMIT是说,一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致

    2、ON DEMAND物化视图:物化视图的创建本身是很复杂和需要优化参数设置的,特别是针对大型生产数据库系统而言。但Oracle允许以这种最简单的,类似于普通视图的方式来做,所以不可避免的会涉及到默认值问题。也就是说Oracle给物化视图的重要定义参数的默认值处理是我们需要特别注意的。

    3.物化视图的特点:    

     (1) 物化视图在某种意义上说就是一个物理表(而且不仅仅是一个物理表),这通过其可以被user_tables查询出来,而得到佐证;    

     (2) 物化视图也是一种段(segment),所以其有自己的物理存储属性;    

     (3) 物化视图会占用数据库磁盘空间,这点从user_segment的查询结果,可以得到佐证;    

     创建语句:create materialized view mv_name as select * from table_name    

     默认情况下,如果没指定刷新方法和刷新模式,则Oracle默认为FORCE和DEMAND。

    4.物化视图的数据怎么随着基表而更新?    

     Oracle提供了两种方式,手工刷新和自动刷新,默认为手工刷新。也就是说,通过我们手工的执行某个Oracle提供的系统级存储过程或包,来保证物化视图与基表数据一致性。这是最基本的刷新办法了。自动刷新,其实也就是Oracle会建立一个job,通过这个job来调用相同的存储过程或包,加以实现。

    ON DEMAND物化视图的特性及其和ON COMMIT物化视图的区别,即前者不刷新(手工或自动)就不更新物化视图,而后者不刷新也会更新物化视图,——只要基表发生了COMMIT

    创建定时刷新的物化视图:create materialized view mv_name refresh force on demand start with sysdate  next sysdate+1 (指定物化视图每天刷新一次)

    上述创建的物化视图每天刷新,但是没有指定刷新时间,如果要指定刷新时间(比如每天晚上10:00定时刷新一次):create materialized view mv_name refresh force on demand start with sysdate next to_date( concat( to_char( sysdate+1,'dd-mm-yyyy'),' 22:00:00'),'dd-mm-yyyy hh34:mi:ss')

    5、ON COMMIT物化视图    

       ON COMMIT物化视图的创建,和上面创建ON DEMAND的物化视图区别不大。因为ON DEMAND是默认的,所以ON COMMIT物化视图,需要再增加个参数即可

       需要注意的是,实际创建过程中,基表需要有主键约束,否则会报错(ORA-12014)

    6、物化视图的刷新    

       刷新(Refresh):指当基表发生了DML操作后,物化视图何时采用哪种方式和基表进行同步。

       刷新的模式有两种:ON DEMAND和ON COMMIT。(如上所述) 刷新的方法有四种:FAST、COMPLETE、FORCE和NEVER。FAST刷新采用增量刷新,只刷新自上次刷新以后进行的修改。COMPLETE刷新对整个物化视图进行完全的刷新。如果选择FORCE方式,则Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE的方式。NEVER指物化视图不进行任何刷新 

      对于已经创建好的物化视图,可以修改其刷新方式,比如把物化视图mv_name的刷新方式修改为每天晚上10点刷新一次:alter materialized view mv_name refresh force on demand start with sysdate next to_date(concat(to_char(sysdate+1,'dd-mm-yyyy'),' 22:00:00'),'dd-mm-yyyy hh34:mi:ss')

    7、物化视图具有表一样的特征,所以可以像对表一样,我们可以为它创建索引,创建方法和对表

    8、物化视图的删除:     

       虽然物化视图是和表一起管理的,但是在经常使用的PLSQL工具中,并不能用删除表的方式来删除(在表上右键选择‘drop’并不能删除物化视图),可以使用语句来实现:drop materialized view mv_name


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Oracle中Materialized View与普通视图有什么区别

存储方式不同:普通视图只是一个命名的查询结果集,不存储数据,每次查询都会重新执行查询语句;而Materialized View会将查询结果集存储在磁盘上,可以定期刷新数据,提高查询性能。查询性能不同:由于Materialized View存
Oracle中Materialized View与普通视图有什么区别
2024-04-19

Oracle中V$视图和DBA_视图有什么区别

在Oracle数据库中,V$视图和DBA_视图都是用来访问数据库的动态性能和配置信息的视图,但两者有一些区别:V$视图(动态性能视图):V$视图提供了当前数据库实例中的动态性能信息,如内存使用情况、会话信息、锁信息等。这些视图是实时更新的,
Oracle中V$视图和DBA_视图有什么区别
2024-04-19

PL/SQL中的视图与物化视图怎么应用

在PL/SQL中,视图和物化视图是用来简化和优化查询的工具。视图是一个虚拟表,可以像普通表一样被查询,但实际上并不存储任何数据,而是通过查询实时生成数据。物化视图则是一个存储在数据库中的表,存储了查询结果,并定期更新以保持数据的最新性。要
PL/SQL中的视图与物化视图怎么应用
2024-05-08

Index函数与Oracle的物化视图

Index函数和Oracle的物化视图都是用来优化查询性能的工具,但它们的实现方式和作用有所不同。Index函数是数据库中的一种数据结构,用来加快对表中数据的查询速度。当在查询中使用索引时,数据库引擎会直接通过索引定位到数据,而不需要遍历
Index函数与Oracle的物化视图
2024-08-16

PythonDjango通用视图和错误视图的使用代码

这篇文章主要介绍了PythonDjango通用视图和错误视图的使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-15

详解12c的v$pwfile_user视图和Oracle11g区别

我们一起看看详解12c的v$pwfile_user视图和Oracle11g区别。V$PWFILE_USERS 列出的是password文件里已授予sysdba、sysoper权限的用户,如果查询没有记录,那就有可能没有了password文件了,没有了密码文件当然sqlplus sys/xx as sysdba这种用sys用sysdba用户就无法登录了。下面介绍一下11g和12c的v$pwfile_user视图。
详解12c的v$pwfile_user视图和Oracle11g区别
2024-04-23

变量在Oracle物化视图中的应用

在Oracle中,物化视图主要用于存储预先计算的结果集,以提高查询性能。它们并不直接支持在物化视图的创建或刷新过程中使用变量。不过,可以通过动态SQL或PL/SQL代码来间接实现变量的使用,从而在一定程度上动态地影响物化视图的查询或刷新行为
变量在Oracle物化视图中的应用
2024-08-27

数据库视图和表有哪些区别

数据库视图和表的区别有:1、表是数据库中用于存储数据的物理结构,而视图只是基于表或多个表的查询结果集;2、表是数据的物理存储单元,视图只是提供了查看和操作表数据的规则;3、视图为数据库提供高级的安全机制,表没有安全机制;4、视图是表的抽象;
2023-10-22

深入了解MySQLClickHouse中的物化视图功能

MapReduce是一种用于处理大规模数据集的并行编程模型,其特点高效性和可扩展性,这篇文章主要介绍了MySQLClickHouse中的物化视图功能,需要详细了解可以参考下文
2023-05-20

编程热搜

目录