Oracle 性能调优之:使用 V$SQL_PLAN 视图查询内存中的执行计划

V$SQL_PLAN视图提供了一种方法,可用于检查仍位于库高速缓存的游标的执行计划。此视图中的信息与 PLAN_TABLE
视图中的信息非常类似。但是,EXPLAIN PLAN 显示的是执行相应语句时可以使用的理论,而V$SQL_PLAN 包含实际使用的计划。通过 EXPLAIN
PLAN 语句获取的执行计划与用来执行游标的执行计划可能有所不同。原因在于,也许已经用不同的会话参数值编译了游标。

V$SQL_PLAN 显示一个游标的计划,并非与一个 SQL 语句相关联的所有游标的计划。区别在于,一个 SQL
语句可能包含多个与其相关联的游标,而每个游标都由 CHILD_NUMBER
标识。例如,如果某语句引用的对象在不同方案中,那么,不同用户执行此同一语句时所关联的游标会不同。同样,不同的提示会导致不同的游标。V$SQL_PLAN
表可用于查看同一语句不同子游标的不同计划。

注:另一有用的视图是
V$SQL_PLAN_STATISTICS,此视图为每个缓存的游标的执行计划中的每项操作提供执行统计信息。另外,V$SQL_PLAN_STATISTICS_ALL
视图将 V$SQL_PLAN 中的信息与 V$SQL_PLAN_STATISTICS 和 V$SQL_WORKAREA 中的执行统计信息连接在一起。

V$SQL_PLAN 的列

此视图几乎包含 PLAN_TABLE 中的所有列,还包含其它一些列。与 PLAN_TABLE 共有的列具有相同的值:

ADDRESS

HASH_VALUE

可以使用 ADDRESS 和HASH_VALUE 列与 V$SQLAREA 联接,以便添加特定于游标的信息。

可以使用 ADDRESS、HASH_VALUE 和 CHILD_NUMBER 列与 V$SQL 联接,以便添加特定于子游标的信息。

PLAN_HASH VALUE 列是游标的 SQL 计划的数字表达形式。通过比较两个计划的
PLAN_HASH_VALUE,可以轻松地确定这两个计划是否相同(而不必逐行比较这两个计划)。

注:从 Oracle Database 10g 起,V$SESSION 中的
SQL_HASH_VALUE 被 SQL_ID 取代,在许多其它V$ 视图中都可以检索出后者。SQL_HASH_VALUE 是 32 位的值,在存储 AWR
数据的大型资料档案库中,使用它不足以唯一地标识对象。SQL_ID 是 64 位的散列值,唯一性更高,其中的后 32 位为
SQL_HASH_VALUE。通常用字符串表示该值,以便简化管理。

摘自:http://www.databi.cn/article-62-1.html

时间: 2024-08-16 09:13:59

Oracle 性能调优之:使用 V$SQL_PLAN 视图查询内存中的执行计划的相关文章

SQL Server 性能调优4 之书写高效的查询

限制查询的行和列来提高性能 这条规则非常简单,这里就不细说了. 使用搜索可参数化判断(sargable conditions)来提高性能 Sargable 由 Search ARGument Able 简写而来,字面意思是搜索可参数化?还是比较晦涩哎... 总之使用Sargable判断可以帮助查询优化器更有效地利用索引,并提高采用 index seek 的可能性,我们先把所有的操作符分一下组. Sargable操作符 = > >= < <= BETWEEN LIKE (通配符必须出

oracle性能调优学习0621

1.PLAN_table column query_plan format a55column cardinality format 99999column cost format 99999delete from plan_table;set lines 100set pages 100set echo on EXPLAIN PLAN FORSELECT *  FROM hr.employees JOIN hr.departments USING (department_id);  SELEC

[转]oracle性能调优之--Oracle 10g AWR 配置

一.ASH和AWR的故事 1.1 关于ASH 我们都知道,用户在ORACLE数据库中执行操作时,必然要创建相应的连接和会话,其中,所有当前的会话信息都保存在动态性能视图V$SESSION中,通过该视图,DBA可以查看用户实际执行的操作,或者当前的等待事件等.通常这部分信息是调优过程中的关键信息,不过,一旦连接断开.会话信息就会被同时从V$SESSION及其它相关视图中清除,也就是说,用户执行完操作走人,而你(DBA),如果不能在当前逮到他,过了这点,就不知道它曾经做过什么了. 10g 版本中,O

oracle性能调优学习0622

查询数据库中的等待事件: SET lines 100SET pages 10000COLUMN wait_class format a12COLUMN event format a30COLUMN total_waits format 999999COLUMN total_us format 999999999COLUMN pct_time format 99.99COLUMN avg_us format 999999.99SET echo on SELECT   wait_class, eve

Oracle性能调优(AWR)

一.AWR报告 AWR 是通过对比两次快照(snapshot)收集到的统计信息,来生成报表数据,生成的报表包括多个部分,这点与Statspack生成的报告非常类似.不过AWR在生成报告时,可以选择生成TXT或HTML两种格式的报告,相对来说,HTML更利于阅读,而TXT的适用性更广(即使在不能使用浏览器的机器上也能看). 操作过Statspack的朋友都还记的,生成报告使用$ORACLE_HOME/rdbms/admin/spreport.sql脚本,到了AWR这片,操作步骤基本上相同,不过生成

Oracle 性能调优

在 oracle 中效率排行, 表连接>exist>not exist>in>no in 并且使用in 查询 会有查询条件数量不能超过1000 的限制: 简单提高效率可以使用 exist 代替in 换成表连接可以更大的提高效率: 用left join (左连接) 代替 not in 和 not exist 用 inner join(内连接) 代替 in 和 exist 这样可以大大提高效率: (1)SELECT PUB_NAME FROM PUBLISHERS WHERE PUB_

MYSQL数据库性能调优之三:explain分析慢查询

explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句.使用方法,在select语句前加上explain就可以了. 一.explain列的解释 1.id :SELECT识别符.这是SELECT查询序列号.这个不重要,查询序号即为sql语句执行的顺序; 2.select类型,它有以下几种值 2.1 simple 它表示简单的select,没有union和子查询 2.2 primary 最外面的select,在有子查询的语句中,最外面

性能调优概述

大纲: 一.概述 二.什么是性能调优?(what) 三.为什么需要性能调优?(why) 四.什么时候需要性能调优?(when) 五.什么地方需要性能调优?(where) 六.什么人来进行性能调优?(who) 七.怎么样进行性能调优?(How) 八.总结 注,硬件配置:CUP Xeon E5620 x 2 8核心, 内存 16G , 硬盘 RAID 10,操作系统: CentOS 6.4 x86_64(64位). 一.概述 本来呢,这篇博文上个星期就应该写好了,但最近项目比较紧,晚上老是加班,于是

[大数据性能调优] 第二章:彻底解密Spark的HashShuffle

本課主題 Shuffle 是分布式系统的天敌 Spark HashShuffle介绍 Spark Consolidated HashShuffle介绍 Shuffle 是如何成为 Spark 性能杀手 Shuffle 性能调优思考 Spark HashShuffle 源码鉴赏 引言 Spark HashShuffle 是它以前的版本,现在1.6x 版本默应是Sort-Based Shuffle,那为什么要讲 HashShuffle 呢,因为有分布式就一定会有 Shuffle,而且 HashShu