Advisor
在10g将查询重写并且引进了新的强大的调优建议者使管理物化视图变得容易多了。
物化视图(Materialized Views
MVs),也被称为快照,现在已经被广泛应用了。MV将一个查询的结果存储在一个段中,并且当用户提交查询时返回查询结果,而不需要重新执行查询
------如果查询会被执行多次(经常出现在数据仓库环境中),这就会非常有效。MV可以从基础表中完全刷新或通过使用快速刷新机制增量刷新。
假如你有如下定义的MV:
create materialized view mv_hotel_resv
refresh fast
enable query rewrite
as
select distinct city, resv_id, cust_name
from hotels h, reservations r
where r.hotel_id = h.hotel_id';
你如何知道使这个MV正常工作的所有必须对象都已经被创建呢?在10g之前,这一检测是通过包DBMS_MVIEW的存储过程EXPLAIN_MVIEW
和EXPLAIN_REWRITE实现的。这些存储过程在10g还存在,它们的功能很简单------检测MV是否具备快速刷新能力和查询重新能力,但它
们并不提 供如何使这些能力有效的建议。相反,要求对于每个MV的结构都做检查是不切实际的。
在10g中,有一个新的包DBMS_ADVISOR,它有一个存储过程TUNE_MVIEW使这项工作变得非常容易:你可以在调用这个包时输入一个输入参
数,参数内容为创建MV的整个脚本。这个存储过程创建了一个建议者任务(Advisor Task),它的名字会通常存储过程唯一的输出参数返回给用户。
这有一个例子。由于第一个参数是一个输出参数,所以你必须定义一个变量:
SQL> – first define a variable to hold the OUT parameter
SQL> var adv_name varchar2(20)
1 SQL> begin
2 dbms_advisor.tune_mview
3 (
4 :adv_name,
5 'create materialized view mv_hotel_resv refresh fast enable query rewrite as
select distinct city, resv_id, cust_name from hotels h,
reservations r where r.hotel_id = h.hotel_id');
6* end;
Now you can find out the name of the Advisor from the variable.
SQL> print adv_name
ADV_NAME
-----------------------
TASK_117
接下来,可以通过一个新视图DBA_TUNE_MVIEW从Advisor那获取到所提供的建议。在执行查询前记得先执行设置SET LONG 999999,因为这个视图中的这个字段是一个CLOB类型,而默认知会显示80个字符。
SQL> select script_type, statement
2 from dba_tune_mview
3 where task_name = 'TASK_117'
4 order by script_type, action_id;
SCRIPT_TYPE STATEMENT
-------------- ------------------------------------------------------------
IMPLEMENTATION CREATE MATERIALIZED VIEW LOG ON "ARUP"."HOTELS" WITH ROWID,
SEQUENCE ("HOTEL_ID","CITY") INCLUDING NEW VALUES
IMPLEMENTATION ALTER MATERIALIZED VIEW LOG FORCE ON "ARUP"."HOTELS" ADD
ROWID, SEQUENCE ("HOTEL_ID","CITY") INCLUDING NEW VALUES
IMPLEMENTATION CREATE MATERIALIZED VIEW LOG ON "ARUP"."RESERVATIONS" WITH
ROWID, SEQUENCE ("RESV_ID","HOTEL_ID","CUST_NAME")
INCLUDING NEW VALUES
IMPLEMENTATION ALTER MATERIALIZED VIEW LOG FORCE ON "ARUP"."RESERVATIONS"
ADD ROWID, SEQUENCE ("RESV_ID","HOTEL_ID","CUST_NAME")
INCLUDING NEW VALUES
IMPLEMENTATION CREATE MATERIALIZED VIEW ARUP.MV_HOTEL_RESV REFRESH FAST
WITH ROWID ENABLE QUERY REWRITE AS SELECT
ARUP.RESERVATIONS.CUST_NAME C1, ARUP.RESERVATIONS.RESV_ID
C2, ARUP.HOTELS.CITY C3, COUNT
M1 FROM ARUP.RESERVATIONS,
ARUP.HOTELS WHERE ARUP.HOTELS.HOTEL_ID =
ARUP.RESERVATIONS.HOTEL_ID GROUP BY
ARUP.RESERVATIONS.CUST_NAME, ARUP.RESERVATIONS.RESV_ID,
ARUP.HOTELS.CITY
UNDO DROP MATERIALIZED VIEW ARUP.MV_HOTEL_RESV
字段SCRIPT_TYPE的内容就是建议。大多数行都是要被实施的,因此被命名成IMPLEMENTATION。如果接受了这些建议,需要从字段ACTION_ID中得到一个特殊的序列号。
如果重新仔细检查一下这些自动产生的建议,你会发现它们和你自己分析得出需要做的操作很相似。这些建议是逻辑上的;如果存在快速刷新,那就需要通过包括这
些新值的子句在基础表上建立物化视图日志(MATERIALIZED VIEW
LOG)。STATEMENT字段甚至提供了一个实施这些建议的准确的SQL语句。
在实施的最后步骤,Advisor建议对MV的创建方式做一些修改。注意我们例子中的一个不同点:在MV上加了一个count
。由于我们定义这个MV是快速刷新,而count
又是必须的,所以Advisor修正了这一冗余。
存储过程TUNE_MVIEW与EXPLAIN_MVIEW和EXPLAIN_REWRITE的不同之处不仅仅在于建议,它还能更容易鉴别出并提供一个效率更好的方式建立相同的MV。有时候Advisor能建议比使用一个单一的MV效率更高的的查询。
你可能会问,如果一个经验丰富的DBA能找出MV创建脚本中的却些并且能自己调整它,那这些有什么用?当然,Advisor就是一个经验丰富、精力充沛、
机器人似的的DBA,它能给出和人差不多的建议。但是和人有一个很大的不同:它可以随时工作而不需要假期和涨薪。这一好处可以使有经验的DBA从日常任务
中解放出来,把这些工作留给普通的DBA去做。而把它们自己的经验发挥到更具战略意义的任务中。
你也可以在嗲用TUNE_MVIEW时传入Advisor的名字,这样就不会使用系统自己生产的名字了。
分享到:
相关推荐
### ORACLE使用物化视图和查询重写功能 #### 一、概述 在Oracle数据库中,物化视图和查询重写功能是提高查询效率和简化数据仓库管理的重要工具。物化视图是一种预计算的数据集合,它可以存储查询的结果集,而查询...
- 本节概述了Oracle 10g的关键特性,包括性能优化、安全性增强、易于管理等方面的功能。 **1.3 Oracle数据库应用开发** - 描述了如何利用Oracle数据库进行应用程序开发的过程和最佳实践。 #### 第2章:数据块、...
这涉及到 Oracle 的一种特殊功能——物化视图日志(Materialized View Log,简称 MVL)。MVL 是一种特殊的表结构,用于记录源表中数据的变化情况,是实现快速刷新物化视图的基础。 - **物化视图日志的作用**: - *...
本教程主要聚焦于数据库的进阶概念,通过四个视频教程帮助学习者深入理解Oracle 11g的关键特性。以下是对每个视频内容的详细解读: 1. **视图对象**: 视图是数据库中的虚拟表,它不实际存储数据,而是基于一个或...
第24章 使用物化视图 第25章 使用Oracle Text进行文本搜索 第26章 使用外部表 第27章 使用回闪查询 第28章 回闪:表和数据库 第Ⅳ部分 Pl/SQL 第29章 PL/SQL简介 第30章 触发器 第31章 过程、函数与程序包 第32章 ...
本资源包,"MasterExam模拟考试引擎——Oracle DataBase 10g OCP认证考试指南全册",为备考者提供了全面的学习和实践材料,帮助他们有效地准备OCA(Oracle Certified Associate)和OCP(Oracle Certified ...
Oracle 10g DBA(数据库管理员)教程是针对Oracle公司的一款旗舰级关系型数据库管理系统——Oracle Database 10g的学习资料。Oracle 10g是Oracle数据库的第十个主要版本,它在2003年发布,提供了许多增强功能和优化...
最新的Oracle数据库11g特性:查询结果集缓存、自动内存管理、实时应用程序测试、高级压缩、全面回忆、活跃数据守卫选项以及对OLAP选项的变更(作为物化视图进行透明访问和管理)、Flashback事务命令、透明数据加密、...
第26章 使用物化视图 第27章 使用oracle text 进行文本搜索 第28章 使用外部表 第29章 使用闪回查询 第30章 闪回:表和数据库 第31章 sql 重放 第ⅳ部分 pl/sql 第32章 pl/sql 简介 第33章 应用程序...
- 视图的创建与使用,以及物化视图 - 权限和角色管理 6. **性能优化**: - SQL性能分析工具:Explain Plan、SQL Trace、 tkprof - 优化器的工作原理 - 表分区和表压缩技术 - Index Advisor和SQL Tuning ...
10. 高级特性:如物化视图、分区表、物质化子查询等。 通过这个教材,初学者不仅可以掌握Oracle 9i的基础知识,还能深入了解如何在Web环境中部署和管理数据库,为未来的职业生涯打下坚实的基础。无论是数据库管理员...
在实践中,我们还需要考虑数据库的性能优化,如通过分区来管理大数据,使用物化视图加速查询,以及利用Oracle的归档和备份策略来保证数据安全。 此外,Oracle数据库设计也包括对数据库性能监控和调优。通过使用工具...
这些关键词揭示了文章涉及的主要技术领域,即七号信令监测(通信网络监控)、数据同步技术(分布式系统中的数据一致性)以及Oracle数据库的特定特性——多级物化视图,这一技术用于提高数据更新速度并保持数据一致性...
在本章中,我们将深入探讨SQL开发中的一个重要概念——视图,它是Oracle数据库中的一个重要特性,对于数据管理和查询提供了极大的灵活性。 视图是数据库中的虚拟表,它并不实际存储数据,而是基于一个或多个基表的...
10. 高级特性:包括物化视图、物质化子查询、分区、簇、索引组织表、LOB(大型对象)等,都是提升数据库性能和管理复杂性的高级特性。 通过阅读《Oracle9i&10g&11g编程艺术——深入数据库体系结构源代码》并实践源...
《Oracle 9i&10g编程艺术——深入数据库体系结构》是一本专为有Oracle开发经验的程序员设计的书籍,旨在揭示Oracle数据库的核心构造和运行机制。Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,其9i和...
第26章 使用物化视图 第27章 使用oracle text 进行文本搜索 第28章 使用外部表 第29章 使用闪回查询 第30章 闪回:表和数据库 第31章 sql 重放 第ⅳ部分 pl/sql 第32章 pl/sql 简介 第33章 应用程序...
对于高级特性,如物化视图、分区表、索引和物质化的子查询,联机文档会提供详细的创建和使用指南。物化视图可以提高查询速度,分区则可以将大型表分成更易管理和查询的部分。索引则加速数据检索,物质化的子查询则是...