- 浏览: 449792 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
鱼里的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 11381Hash join算法原理 自从or ... -
Oracle Event 10046
2012-03-29 23:17 1635下面是一个10046的例子,可以用来分析具体的一些sql执行计 ... -
使用SQL_TRACE进行数据库诊断
2012-03-29 23:08 1009From:http://www.eygle.com/archi ... -
Oracle索引之B-Tree和Bitmap索引对比
2012-03-23 18:32 2359B树索引是所有大型关系 ... -
Oracle性能优化五大工具介绍
2012-03-23 15:55 1593本文介绍了Oracle性能优化工具Oracle数据库在线数据字 ... -
Oracle事物处理中回滚段容量的问题
2012-03-23 15:33 1633在执行大事务时,有时oracle会报出如下的错误: ORA- ... -
Oracle 中条件分歧总结
2011-06-01 23:17 1344Oracle 中条件分歧总结: * Decode * IF ... -
ORACLE CASE WHEN 及 SELECT CASE WHEN的用法
2011-06-01 23:07 2346转载:http://blog.csdn.net/songsen ... -
View的作用
2010-11-11 00:53 3198这篇文章重要讲述下关 ... -
Oracle For Update 行锁
2010-11-08 23:43 1993转自:http://hi.baidu.com/mcj0127/ ... -
Mysql的存储引擎:InnoDB和MyISAM区别
2010-10-05 02:25 1375InnoDB和MyISAM是许多人在 ... -
SSMAを活用してMySQL/AccessからSQL Server/Azureへマイグレーション
2010-09-10 23:03 2345作者 Abel Avram , 翻訳者 (株)ネクストスケープ ... -
Oracle 嵌套事务与自治事务思考
2010-04-22 21:35 6254关键字 嵌套事务和自治事务的概念 嵌套事务的使用 ... -
Oracle中Cursor介绍
2010-04-21 22:09 1734关键字 概念 类型 异常处理 一 概念 游标是SQL ... -
Oracle 10g 中动态性能视图
2010-04-16 19:18 2055动态性能视图用于记录当前例程的活动。启动例程时,oracle会 ... -
Oracle 和 Sql Server中日期的显示问题
2010-03-10 02:01 2879在日常的项目中,经常遇见User需要显示不同的日期格式。当然, ... -
Oracle中RowNum的用法
2010-02-08 22:05 1809ROWNUM,是一种伪列,它根据特定记录返回一个序列化的数字。 ... -
ORACLE 分析函数解析
2010-01-17 21:29 1356分析函数是oracle 8.1.6中就引入的一个全新的概念,为 ... -
ORACLE LOB大对象处理
2010-01-16 21:42 2456ORACLE LOB大对象处理 主要是用来存储大量数据的数据库 ... -
DUMP用法
2010-01-16 09:13 1862一 DUMP():查看表中列在datafile中的存储内容,它 ...
相关推荐
本文将详细探讨"视图上触发器"以及"Materialized View(物化视图)",并结合提供的SQL脚本文件进行分析。 首先,视图是数据库中的一个虚拟表,它是由SQL查询语句定义的,不存储实际数据,而是根据其定义在运行时...
此外,还可以通过`CREATE MATERIALIZED VIEW LOG`创建物化视图日志,并使用`DROP MATERIALIZED VIEW LOG`删除日志。`DROP MATERIALIZED VIEW`命令用于删除物化视图,而`DBMS_MVIEW.REFRESH`过程则用于手动刷新物化...
创建物化视图可以使用 CREATE MATERIALIZED VIEW 语句,例如: ```sql CREATE MATERIALIZED VIEW MV_VIEW AS SELECT * FROM ... ``` 删除物化视图可以使用 DROP MATERIALIZED VIEW 语句,例如: ```sql DROP ...
PostgreSQL 提供了两种刷新方式:REFRESH MATERIALIZED VIEW table_name 和 REFRESH MATERIALIZED VIEW CONCURRENTLY table_name。前者会锁住对该物化视图的查询工作,而后者可以在刷新视图时不锁住对该物化视图的...
Oracle数据库中的物化视图(Materialized View,简称MV)是一种强大的优化工具,它通过预先计算并存储查询结果,提供了一种快速访问复杂查询数据的方式。这种技术在数据仓库环境中尤其有用,因为数据仓库通常涉及...
PostgreSQL的物化视图(Materialized View)是一种数据库特性,它允许用户预先计算和存储复杂查询的结果,形成一个新的表,以提供更快的数据访问速度。物化视图不同于普通的视图,后者在查询时动态计算结果,而物化...
- **创建物化视图**:使用 `CREATE MATERIALIZED VIEW` 命令来创建物化视图。 - **自定义预构建的物化视图**:用户可以根据自己的需求预先构建物化视图,并对其进行优化。 - **物化视图的索引选择**:选择适当的索引...
对于已经存在的物化视图,可以使用ALTER语句来修改其刷新方式,例如`ALTER MATERIALIZED VIEW mv_name REFRESH [FORCE|FAST|COMPLETE|NEVER] [ON DEMAND|ON COMMIT]`。 物化视图对于大数据分析、报表生成和OLAP...
创建一个ON DEMAND物化视图非常类似于创建普通视图,只需在CREATE语句中添加`MATERIALIZED`关键字。例如: ```sql CREATE MATERIALIZED VIEW mv_testcf AS SELECT * FROM xiaotg.testcf; ``` 这个例子中,物化视图...
在Oracle数据库中,物化视图(Materialized View)是一种用于优化查询性能的重要工具。它预先计算并存储了复杂的查询结果,从而在实际查询时能够快速地返回数据,大大提升了查询效率。然而,在创建物化视图的过程中...
Doris 物化视图和索引的典型应用案例 Doris 是一个开源的分布式分析型数据库,旨在帮助用户快速处理海量数据,提供了物化视图和索引等功能,以提高查询性能和数据的一致性。下面将详细介绍 Doris 的物化视图和索引...
物化视图的日志(Materialized View Log, MVL)则是用来记录基表(Base Table)上的变化情况,以便于物化视图能够快速地刷新其内容,保持与基表的一致性。通过物化视图日志,系统可以在不扫描整个基表的情况下,只处理自...
### Oracle 物化视图详解 #### 一、物化视图的概念与作用 物化视图是Oracle数据库中一种特殊的数据对象,它保存的是基于一个或多个表(称为基表)的查询结果集,并且这些结果集是物理上存在的。与普通的视图不同,...
增量物化视图可以对物化视图进行增量刷新,语法格式与 CREATE MATERIALIZED VIEW 语句类似。创建增量物化视图的语法格式为: ``` CREATE INCREMENTAL MATERIALIZED VIEW [view_name] AS {query_block}; ``` 例如,...
- **创建物化视图**:使用CREATE MATERIALIZED VIEW语句创建物化视图。 - **刷新物化视图**:定期或按需刷新物化视图以保持数据的最新状态。 - **查询物化视图**:通过简单的SELECT语句直接查询物化视图。 - **维护...
在Oracle数据库中,物化视图(Materialized View)是一种特殊的数据库对象,它存储的是一个查询的结果集,可以理解为一个预计算的快照。物化视图主要用于提高报表查询性能和实现数据复制等功能。 物化视图的特性...
物化视图(Materialized View)是数据库管理系统中一种特殊的数据对象,它预先计算并存储了一个查询的结果,以便后续的查询能快速访问这些结果。物化视图的主要用途包括提高查询性能、实现数据的局部复制以及支持...
在数据库管理领域,物化视图(Materialized View)是一种重要的数据组织形式,它预先计算并存储了基于某个查询的结果集,从而显著提高了查询效率,尤其是在处理复杂查询或大数据量时更为明显。本文将通过一个具体的...
- **实现**:使用CREATE MATERIALIZED VIEW命令创建物化视图,并配置适当的刷新选项。 ##### 4. 测试查询重写 - **编写查询**:构造一些复杂的查询语句,尝试使用物化视图进行优化。 - **分析结果**:观察查询执行...