- 浏览: 441760 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
鱼里的yeol:
正在学习EJB 感觉有些吃力
Ejb3学习之二----Ejb3的Ejb Bean类型介绍 -
phoenix5870:
默认就是singleton的。
Spring中的Singleton模式和Java中的Singleton模式 -
jhys7s8jd:
pdf打印机下载 无水印http://www.onlinedo ...
PDFCreate工具的使用 -
wang371134086:
:e vil:
浅谈Struts2中的拦截器实现责任链模式 -
liu765023051:
亲,local与remote有什么区别呢
EJB学习之三---Local和Remote接口
1. Materialized View 概述:
Oracle的实体化视图提供了强大的功能,可以用在不同的环境中。在不同的环境中,实体化视图的作用也不相同。数据仓库中的实体化视图主要用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。在数据仓库中,还经常使用查询重写(query rewrite)机制,这样不需要修改原有的查询语句,Oracle会自动选择合适的实体化视图进行查询,完全对应用透明。实体化视图和表一样可以直接进行查询。实体化视图可以基于分区表,实体化视图本身也可以分区。除了在数据仓库中使用,实体化视图还用于复制、移动计算等方面。实体化视图有很多方面和索引很相似:使用实体化视图的目的是为了提高查询性能;实体化视图对应用透明,增加和删除实体化视图不会影响应用程序中SQL语句的正确性和有效性;实体化视图需要占用存储空间;当基表发生变化时,实体化视图也应当刷新。
materialized view 同snapshot是同一个概念。但同view是不一样的:
1)物化视图是存储数据的视图,存储了基础表的全部或者一部分数据,主要用作sql语句的优化,查询物化视图比查询表中的数据速度要快;
2)MV是自动刷新或者手动刷新的,View不用刷新;
3) MV也可以直接update,但是不影响base table,对View的update反映到base table上;
4)MV主要用于远程数据访问,mv中的数据需要占用磁盘空间,view中不保存数据
2. DDL/DML:
1).CREATE MATERIALIZED VIEW
语法:
CREATE MATERIALIZED VIEW [user.]mview
例子:
2)ALTER MATERIALIZED VIEW
语法:
ALTER MATERIALIZED VIEW [user.]mview
例子:
主要参数说明:
ON PREBUILD TABLE:
描述 将已经存在的表注册为实体化视图。同时还必须提供描述创建该表的查询的 SELECT 子句。可能无法始终保证查询的精度与表的精度匹配。为了克服此问题,应该在规范中包含 WITH REDUCED PRECISION 子句。
Build Clause 创建方式
描述 包括BUILD IMMEDIATE和BUILD DEFERRED两种
取值 BUILD IMMEDIATE 在创建实体化视图的时候就生成数据
BUILD DEFERRED 在创建时不生成数据,以后根据需要在生成数据
默认 BUILD IMMEDIATE
Refresh 刷新子句
描述 当基表发生了DML操作后,实体化视图何时采用哪种方式和基表进行同步
语法 [refresh [fast | complete | force]
[on demand | commit]
[start with date]
[next date]
[with {primary key | rowid}]
]
取值 FAST 采用增量刷新,只刷新自上次刷新以后进行的修改
COMPLETE 对整个实体化视图进行完全的刷新
FORCE(默认) Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用Fast方式,否则采用Complete的方式,Force选项是默认选项
ON DEMAND(默认) 实体化视图在用户需要的时候进行刷新,可以手工通过 DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新
ON COMMIT 实体化视图在对基表的DML操作提交的同时进行刷新
START WITH 第一次刷新时间
NEXT 刷新时间间隔
WITH PRIMARY KEY(默认) 生成主键实体化视图,也就是说实体化视图是基于表的主键,而不是ROWID(对应于ROWID子句)。 为了生成PRIMARY KEY子句,应该在表上定义主键,否则应该用基于ROWID的实体化视图。主键实体化视图允许识别实体化视图表而不影响实体化视图增量刷新的可用性
WITH ROWID 只有一个单一的主表,不能包括下面任何一项:
●Distinct
●聚合函数
●Group by
●子查询
●连接
●SET操作
Query Rewrite 查询重写
描述 包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的实体化视图是否支持查询重写。查询重写是指当对实体化视图的基表进行查询时,Oracle会自动判断能否通过查询实体化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的实体化视图中读取数据
取值 ENABLE QUERY REWRITE 支持查询重写
DISABLE QUERY REWRITE 不支持查询重写
默认 DISABLE QUERY REWRITE
3. 实例探究:
下一篇会介绍materialized view log的用法。
Oracle的实体化视图提供了强大的功能,可以用在不同的环境中。在不同的环境中,实体化视图的作用也不相同。数据仓库中的实体化视图主要用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。在数据仓库中,还经常使用查询重写(query rewrite)机制,这样不需要修改原有的查询语句,Oracle会自动选择合适的实体化视图进行查询,完全对应用透明。实体化视图和表一样可以直接进行查询。实体化视图可以基于分区表,实体化视图本身也可以分区。除了在数据仓库中使用,实体化视图还用于复制、移动计算等方面。实体化视图有很多方面和索引很相似:使用实体化视图的目的是为了提高查询性能;实体化视图对应用透明,增加和删除实体化视图不会影响应用程序中SQL语句的正确性和有效性;实体化视图需要占用存储空间;当基表发生变化时,实体化视图也应当刷新。
materialized view 同snapshot是同一个概念。但同view是不一样的:
1)物化视图是存储数据的视图,存储了基础表的全部或者一部分数据,主要用作sql语句的优化,查询物化视图比查询表中的数据速度要快;
2)MV是自动刷新或者手动刷新的,View不用刷新;
3) MV也可以直接update,但是不影响base table,对View的update反映到base table上;
4)MV主要用于远程数据访问,mv中的数据需要占用磁盘空间,view中不保存数据
2. DDL/DML:
1).CREATE MATERIALIZED VIEW
语法:
CREATE MATERIALIZED VIEW [user.]mview
例子:
CREATE MATERIALIZED VIEW hq_emp REFRESH COMPLETE START WTIH SYSDATE NEXT SYSDATE +1/4096 AS SELECT * FROM hq_emp;
2)ALTER MATERIALIZED VIEW
语法:
ALTER MATERIALIZED VIEW [user.]mview
例子:
CREATE MATERIALIZED VIEW hq_emp REFRESH COMPLETE START WTIH SYSDATE NEXT SYSDATE +1/4096 AS SELECT * FROM hq_emp; ALTER MATERIALIZED VIEW hq_emp REFRESH FAST;
主要参数说明:
ON PREBUILD TABLE:
描述 将已经存在的表注册为实体化视图。同时还必须提供描述创建该表的查询的 SELECT 子句。可能无法始终保证查询的精度与表的精度匹配。为了克服此问题,应该在规范中包含 WITH REDUCED PRECISION 子句。
Build Clause 创建方式
描述 包括BUILD IMMEDIATE和BUILD DEFERRED两种
取值 BUILD IMMEDIATE 在创建实体化视图的时候就生成数据
BUILD DEFERRED 在创建时不生成数据,以后根据需要在生成数据
默认 BUILD IMMEDIATE
Refresh 刷新子句
描述 当基表发生了DML操作后,实体化视图何时采用哪种方式和基表进行同步
语法 [refresh [fast | complete | force]
[on demand | commit]
[start with date]
[next date]
[with {primary key | rowid}]
]
取值 FAST 采用增量刷新,只刷新自上次刷新以后进行的修改
COMPLETE 对整个实体化视图进行完全的刷新
FORCE(默认) Oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用Fast方式,否则采用Complete的方式,Force选项是默认选项
ON DEMAND(默认) 实体化视图在用户需要的时候进行刷新,可以手工通过 DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新
ON COMMIT 实体化视图在对基表的DML操作提交的同时进行刷新
START WITH 第一次刷新时间
NEXT 刷新时间间隔
WITH PRIMARY KEY(默认) 生成主键实体化视图,也就是说实体化视图是基于表的主键,而不是ROWID(对应于ROWID子句)。 为了生成PRIMARY KEY子句,应该在表上定义主键,否则应该用基于ROWID的实体化视图。主键实体化视图允许识别实体化视图表而不影响实体化视图增量刷新的可用性
WITH ROWID 只有一个单一的主表,不能包括下面任何一项:
●Distinct
●聚合函数
●Group by
●子查询
●连接
●SET操作
Query Rewrite 查询重写
描述 包括ENABLE QUERY REWRITE和DISABLE QUERY REWRITE两种。分别指出创建的实体化视图是否支持查询重写。查询重写是指当对实体化视图的基表进行查询时,Oracle会自动判断能否通过查询实体化视图来得到结果,如果可以,则避免了聚集或连接操作,而直接从已经计算好的实体化视图中读取数据
取值 ENABLE QUERY REWRITE 支持查询重写
DISABLE QUERY REWRITE 不支持查询重写
默认 DISABLE QUERY REWRITE
3. 实例探究:
SQL> create materialized view DUMMY_INSURED_MV 2 refresh complete 3 start with sysdate next sysdate + 1/4096 4 as select * from t_dummy_insured_old; Materialized view created SQL> view DUMMY_INSURED_MV; CREATE MATERIALIZED VIEW DUMMY_INSURED_MV REFRESH COMPLETE ON DEMAND START WITH TO_DATE('09-12-2009 16:19:48', 'DD-MM-YYYY HH24:MI:SS') NEXT SYSDATE + 1/4096 AS SELECT "T_DUMMY_INSURED_OLD"."DETAIL_ID" "DETAIL_ID","T_DUMMY_INSURED_OLD"."POLICY_ID" "POLICY_ID","T_DUMMY_INSURED_OLD"."DUMMY_NUM" "DUMMY_NUM","T_DUMMY_INSURED_OLD"."DUMMY_NAME" "DUMMY_NAME","T_DUMMY_INSURED_OLD"."JOB_CLASS" "JOB_CLASS","T_DUMMY_INSURED_OLD"."INSURED_AMOUNT" "INSURED_AMOUNT","T_DUMMY_INSURED_OLD"."AVERAGE_AGE" "AVERAGE_AGE","T_DUMMY_INSURED_OLD"."PREM_AGE" "PREM_AGE","T_DUMMY_INSURED_OLD"."MALE_RATE" "MALE_RATE","T_DUMMY_INSURED_OLD"."GENDER" "GENDER","T_DUMMY_INSURED_OLD"."SMOKING" "SMOKING","T_DUMMY_INSURED_OLD"."REALIZED_AMOUNT" "REALIZED_AMOUNT","T_DUMMY_INSURED_OLD"."REPORT_MONTH" "REPORT_MONTH","T_DUMMY_INSURED_OLD"."CREATE_TIME" "CREATE_TIME" FROM "T_DUMMY_INSURED_OLD" "T_DUMMY_INSURED_OLD"; SQL> insert into t_dummy_insured_old select S_DUMMY_INS_OLD_DETAIL_ID.Nextval, 2 DI.*,'200911',Sysdate from t_dummy_insured DI; 1196 rows inserted SQL> commit; Commit complete SQL> select count(1) from DUMMY_INSURED_MV; COUNT(1) ---------- 1196
下一篇会介绍materialized view log的用法。
发表评论
-
Oracle的Hash Join之探究整理
2012-04-08 15:48 11310Hash join算法原理 自从or ... -
Oracle Event 10046
2012-03-29 23:17 1594下面是一个10046的例子,可以用来分析具体的一些sql执行计 ... -
使用SQL_TRACE进行数据库诊断
2012-03-29 23:08 963From:http://www.eygle.com/archi ... -
Oracle索引之B-Tree和Bitmap索引对比
2012-03-23 18:32 2324B树索引是所有大型关系 ... -
Oracle性能优化五大工具介绍
2012-03-23 15:55 1530本文介绍了Oracle性能优化工具Oracle数据库在线数据字 ... -
Oracle事物处理中回滚段容量的问题
2012-03-23 15:33 1590在执行大事务时,有时oracle会报出如下的错误: ORA- ... -
Oracle 中条件分歧总结
2011-06-01 23:17 1306Oracle 中条件分歧总结: * Decode * IF ... -
ORACLE CASE WHEN 及 SELECT CASE WHEN的用法
2011-06-01 23:07 2266转载:http://blog.csdn.net/songsen ... -
View的作用
2010-11-11 00:53 3127这篇文章重要讲述下关 ... -
Oracle For Update 行锁
2010-11-08 23:43 1921转自:http://hi.baidu.com/mcj0127/ ... -
Mysql的存储引擎:InnoDB和MyISAM区别
2010-10-05 02:25 1333InnoDB和MyISAM是许多人在 ... -
SSMAを活用してMySQL/AccessからSQL Server/Azureへマイグレーション
2010-09-10 23:03 2297作者 Abel Avram , 翻訳者 (株)ネクストスケープ ... -
Oracle 嵌套事务与自治事务思考
2010-04-22 21:35 6202关键字 嵌套事务和自治事务的概念 嵌套事务的使用 ... -
Oracle中Cursor介绍
2010-04-21 22:09 1734关键字 概念 类型 异常处理 一 概念 游标是SQL ... -
Oracle 10g 中动态性能视图
2010-04-16 19:18 2016动态性能视图用于记录当前例程的活动。启动例程时,oracle会 ... -
Oracle 和 Sql Server中日期的显示问题
2010-03-10 02:01 2818在日常的项目中,经常遇见User需要显示不同的日期格式。当然, ... -
Oracle中RowNum的用法
2010-02-08 22:05 1769ROWNUM,是一种伪列,它根据特定记录返回一个序列化的数字。 ... -
ORACLE 分析函数解析
2010-01-17 21:29 1303分析函数是oracle 8.1.6中就引入的一个全新的概念,为 ... -
ORACLE LOB大对象处理
2010-01-16 21:42 2413ORACLE LOB大对象处理 主要是用来存储大量数据的数据库 ... -
DUMP用法
2010-01-16 09:13 1814一 DUMP():查看表中列在datafile中的存储内容,它 ...
相关推荐
NULL 博文链接:https://wuaner.iteye.com/blog/686899
这篇文章主要介绍了PostgreSQL物化视图(materialized view)过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、创建视图 CREATE MATERIALIZED VIEW ...
使用在 Postgres 中创建自动更新物化视图的方法扩展ActiveRecord::Migration 。 可以执行来检查物化视图是否与其非物化版本保持同步。 背景 以下是有关物化视图的一些资源: Dan Chak他的著作Enterprise Rails 中...
利用强制查询重写和新的强大的调整顾问程序—它们使您不再需要凭猜测进行工作 ,在 10g 中管理物化视图变得更加容易。文中介绍了物化视图的定义及其一些功能。
Postgres物化视图演示 设置 在您的机器上安装了postgresql 运行脚本 createdb your_database psql -f setup_scripts/00_setup.sql psql -d your_database 如果需要更多种子数据, bundle exec ruby dev.rb以为...
物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照(声名:本人刚刚学习物化视图这篇文章来自网络感觉有借鉴...
引入ClickHouse物化视图 (MATERIALIZED VIEW), 该物化视图在ClickHouse上的表现较为奇特, 具有数据入流后的自动刷新功能。 目前我们用它充当PipelineDB实时流聚合功能, 以此, 达到raw数据入流存储和聚合同步完成的...
主要的 ETL 方案,一种是我们熟悉的物化视图(materialized view),另一种就是本文将要 介绍的 CDC 组件(Change Data Capture 改变数据捕获)。 CDC 特性是在 Oracle9i 数据库中引入的。CDC 能够帮助你识别从上次提取...
此类数据由Cosmos DB Change Feed公开,并由Azure Function(通过Change Feed Processor)使用,该功能获取JSON文档并使用它创建或更新存储在view集中的相关物化视图。 可以在这里找到有关体系结构和解决方案的更...
RethinkDB 中的视图/物化视图 这只是关于如何在 rethinkDB 中重现 SQL VIEW/MATERIALIZED VIEW 功能的一系列想法。 设置 您需要以下软件: RethinkDB(从下载)。 安装并启动它(命令是全局的,但请记住使用测试...
在此示例中,我们刷新了3个物化视图,其中两个基于真实表,第三个依赖于前两个。 parallel-actions lib将简化执行,确保在v1和v2完成之前v3不会启动。 const { Pool } = require ( 'pg' ) ; const pexec = require...
DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE,SELECT_CATALOG_ROLE这些角色主要用于访问数据字典视图和包。 EXP_FULL_DATABASE, IMP_FULL_DATABASE这两个角色用于数据导入导出工具的使用。 自定义角色 ...
ATE是一个分布式的不可变数据存储区,内置在基于内存的物化视图中,具有强大的加密和身份验证功能。 那是什么意思? 该库是在现代分布式计算中处理数据的一种方式。 ...数据被持久保存到分布式提交日志中。 ......