千家信息网

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

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,物化视图是一种特殊的物理表,"物化"(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体
千家信息网最后更新 2024年11月23日物化视图和普通视图的区别

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


视图 数据 方式 查询 更新 手工 方法 物理 存储 普通 一致 也就是 参数 数据库 语句 过程 一致性 也就是说 佐证 实际 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全新人如何找工作 计算机网络安全ppt素材 松江区管理软件开发业务流程 数据库安全性的任务 网络安全的红队什么意思 vfp数据库填表怎么保存 高校生网络安全隐患对策 小学 网络安全 总结 数据库并行 民警网络安全心得体会500字 浙江新能源软件开发价格大全 数据库验证规则属性 宪法中关于网络安全的条例 网络技术基础演示互动答案 数据库的格式是什么 成都智软软件开发有限公司 国内软件开发牛的学校 国家小学生网络安全宣传片 软件开发合同属于承揽 腾讯的轻量服务器和云服务器 软件开发哪个城市工作好 象心网络技术有限公司招聘 如何远程登录数据库 70级怀旧服部落服务器 如何在数据库中选取所有的 南京 游戏软件开发培训 麦克尔维德纽斯开发的数据库产品 360天擎服务器怎么卸载 tp获得数据条数据库 洗衣软件开发者求职
0