基本的oracle物化视图

来源:互联网 发布:有声小说制作软件 编辑:程序博客网 时间:2024/04/29 15:06

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

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

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

    2、ON DEMAND物化视图

    物化视图的建立本身是很复杂和须要优化参数配置的,特别是针对大型生产数据库系统而言。但Oracle允许以这种最基本的,类似于普通视图的形式来做,所以不可防止的会涉及到默认值疑问。也就是说Oracle给物化视图的主要解释参数的默认值处理是我们须要特别留心的。

    物化视图的特点:

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

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

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

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

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

物化视图的数据如何随着基表而更新?

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

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

    3、ON COMMIT物化视图

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

    须要留心的是,不能在解释时仅指定ON COMMIT,还得附带个参数才行。

建立 ON COMMIT物化视图:create materialized view mv_name refresh force on commit as select * from table_name

 

    备注:实际建立流程中,基表须要有主键约束,否则会报错(ORA-12014)

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 中班安全迷了眼怎么办 15个月的小孩长泡疹怎么办 墨盒加错颜色墨水怎么办 墨盒颜色加错了怎么办 uV打印有色差是怎么办 cmyk和rgb有色差怎么办 染头发新长出来怎么办 白色衣服弄上口红怎么办 口红弄到牛仔裤上怎么办 口红弄到沙发上怎么办 做了拔罐后背疼怎么办 拔罐拔出血水后怎么办 拨了罐浑身疼怎么办 拔完火罐洗澡疼怎么办 拔罐之后脊背疼怎么办? 五个月的狗胆小怎么办 电脑颜色不正常分辨率调不了怎么办 宝宝认人怎么办 五个月 新生儿42天听力筛查未通过怎么办 幼儿大便干燥拉不下粑粑怎么办 宝宝大便干燥拉粑粑带浓血怎么办 新生儿便秘4天了怎么办 写卷子的题目不认识怎么办? 2个月小猫尿床怎么办 安全教案鱼刺卡住了怎么办 被鱼刺卡住怎么办安全教案 小班健康教案生病了怎么办 被蜜蜂蛰了怎么办教案 走丢了怎么办大班反思 小孩吃了硬物怎么办 小孩吞了硬物怎么办 小学二年级孩子成绩不好怎么办 二年级孩子成绩不好怎么办 一年级学的不好二年级怎么办 17个月宝宝夜奶怎么办 小孩吃积食了吐怎么办 11个宝宝不会爬怎么办 5岁宝宝严重挑食怎么办 孩子吃菜口味重怎么办? 孩子挑食不吃菜不吃肉怎么办 微信新的朋友回复频繁怎么办