广告
返回顶部
首页 > 资讯 > 数据库 >物化视图和普通视图的区别
  • 247
分享到

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

2024-04-02 19:04:59 247人浏览 薄情痞子
摘要

    物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,oracle都实际上转换为视图sql

    物化视图是一种特殊的物理表,“物化”(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


您可能感兴趣的文档:

--结束END--

本文标题: 物化视图和普通视图的区别

本文链接: https://www.lsjlt.com/news/39604.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 物化视图和普通视图的区别
        物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL...
    99+
    2022-10-18
  • Oracle普通视图和物化视图的区别有哪些
    本篇内容主要讲解“Oracle普通视图和物化视图的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle普通视图和物化视图的区别有哪些”吧!物化视...
    99+
    2022-10-19
  • mysql中物化视图的快速刷新测试与物化视图日志分析
    本篇内容介绍了“mysql中物化视图的快速刷新测试与物化视图日志分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2022-10-19
  • 刷新物化视图的方法
    DBMS_MVIEW provides three different types of refresh operations. DBMS_MVIEW.REFRESHRefresh one or more ...
    99+
    2022-10-18
  • SQL中简单视图和复杂视图的区别是什么
    这篇文章将为大家详细讲解有关SQL中简单视图和复杂视图的区别是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 SQL中的视图,作为来自一个或多个表的数据的逻...
    99+
    2022-10-18
  • PostgreSQL物化视图的示例分析
    这篇文章主要介绍PostgreSQL物化视图的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、创建视图CREATE MATERIALIZED VIEW&...
    99+
    2022-10-18
  • PythonDjango通用视图和错误视图的使用代码
    定义通用视图 修改 book/models.py 代码中的 AuthorInfo 类,如果一致则不必修改 class AuthorInfo(models.Model): id...
    99+
    2023-05-15
    Python Django视图 Python Django通用视图 Python Django错误视图
  • Oracle物化视图的创建及使用(一)
    Oracle物化视图的创建及使用 http://blog.csdn.net/tegwy/article/details/8935058 先看简单创建语句: ...
    99+
    2022-10-18
  • 12c 物化视图 - 刷新方式的对比
    ...
    99+
    2022-10-18
  • 12.2 删除物化视图的是hang住了
    在drop mv 的时候如果hang住,可以启用10046进行跟踪,看其操作究竟是卡在哪一步?而我这一次遇到的场景,是卡在delete sys.mvref$_change_stats.这个表如果...
    99+
    2022-10-18
  • 数据库视图和表的区别有哪些
    小编给大家分享一下数据库视图和表的区别有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!区别:1、视图是已经编译好的sql语句...
    99+
    2022-10-18
  • 数据库视图和表有哪些区别
    数据库视图和表的区别有:1、表是数据库中用于存储数据的物理结构,而视图只是基于表或多个表的查询结果集;2、表是数据的物理存储单元,视图只是提供了查看和操作表数据的规则;3、视图为数据库提供高级的安全机制,表没有安全机制;4、视图是表的抽象;...
    99+
    2023-10-22
    数据库视图 数据库表
  • mysql视图与表的区别有哪些
    本篇内容主要讲解“mysql视图与表的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql视图与表的区别有哪些”吧! ...
    99+
    2022-10-19
  • oracle物化视图日志结构是怎样的
    本篇内容介绍了“oracle物化视图日志结构是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!orac...
    99+
    2022-10-19
  • 深入了解MySQLClickHouse中的物化视图功能
    目录数据表与视图ClickHouse的物化视图物化视图的更新使用示例数据表与视图 数据库表是一种关系型数据库中的基本对象,用于存储数据。每个表包含多个列和行,其中每个列代表一种数据类...
    99+
    2023-05-20
    MySQL ClickHouse物化视图 MySQL ClickHouse
  • MySQL的视图和索引用法与区别详解
    MySQL的视图 简单来说MySQL的视图就是对SELECT 命令的定义的一个快捷键,我们查询时会用到非常复杂的SELECT语句,而这个语句我们以后还会经常用到,我们可以经这个语句生产视图。视图是一个虚拟的表...
    99+
    2022-05-11
    MySQL 视图 MySQL 索引 视图和索引
  • 通过案例学调优之--跨库建立物化视图(Materialized View)
    通过案例学调优之--跨库建立物化视图(Materialized View)应用环境:操作系统: RedHat EL55Oracle:   Oracle 10gR2一、物化视图概述Oracle的物化...
    99+
    2022-10-18
  • 深入了解MySQL ClickHouse中的物化视图功能
    目录数据表与视图ClickHouse的物化视图物化视图的更新使用示例数据表与视图 数据库表是一种关系型数据库中的基本对象,用于存储数据。每个表包含多个列和行,其中每个列代表一种数据类型,每一行则表示一条记录视图是一种虚拟...
    99+
    2023-05-12
    MySQL ClickHouse物化视图 MySQL ClickHouse
  • 如何理解Oracle11g和12c的v$pwfile_user视图及区别
    本篇文章给大家分享的是有关如何理解Oracle11g和12c的v$pwfile_user视图及区别,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧...
    99+
    2022-10-19
  • 解释 SQL 中表、视图和同义词之间的区别
    让我们了解一下结构化查询语言 (SQL) 中的表、视图和同义词是什么。表、视图和同义词表是数据的存储库,其中在表中它是一个物理实体。表物理上驻留在数据库中。视图不是数据库物理表示的一部分。它经过预编译,因此数据检索速度更快,并且还提供安全的...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作