ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 有关sql的动态性能视图学习

有关sql的动态性能视图学习

原创 Linux操作系统 作者:mafeiyan 时间:2011-12-07 16:19:07 0 删除 编辑
v$sql:

V$SQL中的列说明:

l         SQL_TEXTSQL文本的前1000个字符

l         SHARABLE_MEM:占用的共享内存大小(单位:byte)

l         PERSISTENT_MEM:生命期内的固定内存大小(单位:byte)

l         RUNTIME_MEM:执行期内的固定内存大小

l         SORTS:完成的排序数

l         LOADED_VERSIONS:显示上下文堆是否载入,10

l         OPEN_VERSIONS:显示子游标是否被锁,10

l         USERS_OPENING:执行语句的用户数

l         FETCHESSQL语句的fetch数。

l         EXECUTIONS:自它被载入缓存库后的执行次数

l         USERS_EXECUTING:执行语句的用户数

l         LOADS:对象被载入过的次数

l         FIRST_LOAD_TIME:初次载入时间

l         INVALIDATIONS:无效的次数

l         PARSE_CALLS:解析调用次数

l         DISK_READS:读磁盘次数

l         BUFFER_GETS:读缓存区次数

l         ROWS_PROCESSED:解析SQL语句返回的总列数

l         COMMAND_TYPE:命令类型代号

l         OPTIMIZER_MODESQL语句的优化器模型

l         OPTIMIZER_COST:优化器给出的本次查询成本

l         PARSING_USER_ID:第一个解析的用户ID

l         PARSING_SCHEMA_ID:第一个解析的计划ID

l         KEPT_VERSIONS:指出是否当前子游标被使用DBMS_SHARED_POOL包标记为常驻内存

l         ADDRESS:当前游标父句柄地址

l         TYPE_CHK_HEAP:当前堆类型检查说明

l         HASH_VALUE:缓存库中父语句的Hash

l         PLAN_HASH_VALUE:数值表示的执行计划。

l         CHILD_NUMBER:子游标数量

l         MODULE:在第一次解析这条语句是通过调用DBMS_APPLICATION_INFO.SET_MODULE设置的模块名称。

l         ACTION:在第一次解析这条语句是通过调用DBMS_APPLICATION_INFO.SET_ACTION设置的动作名称。

l         SERIALIZABLE_ABORTS:事务未能序列化次数

l         OUTLINE_CATEGORY:如果outline在解释cursor期间被应用,那么本列将显示出outline各类,否则本列为空

l         CPU_TIME:解析/执行/取得等CPU使用时间(单位,毫秒)

l         ELAPSED_TIME:解析/执行/取得等消耗时间(单位,毫秒)

l         OUTLINE_SIDoutline session标识

l         CHILD_ADDRESS:子游标地址

l         SQLTYPE:指出当前语句使用的SQL语言版本

l         REMOTE:指出是否游标是一个远程映象(Y/N)

l         OBJECT_STATUS:对象状态(VALID or INVALID)

l         IS_OBSOLETE:当子游标的数量太多的时候,指出游标是否被废弃(Y/N)

V$SQL_PLAN

本视图提供了一种方式检查那些执行过的并且仍在缓存中的cursor的执行计划。

  通常,本视图提供的信息与打印出的EXPLAIN PLAN非常相似,不过,EXPLAIN PLAN显示的是理论上的计划,并不一定在执行的时候就会被使用,但V$SQL_PLAN中包括的是实际被使用的计划。获自EXPLAIN PLAN语句的执行计划跟具体执行的计划可以不同,因为cursor可能被不同的session参数值编译(如,HASH_AREA_SIZE)

V$SQL_PLAN中的常用列:

除了一些新加列,本视图几乎包括所有的PLAN_TABLE列,那些同样存在于PLAN_TABLE中的列拥有相同的值:

l         ADDRESS:当前cursor父句柄位置

l         HASH_VALUE:在library cache中父语句的HASH值。

ADDRESSHASH_VALUE这两列可以被用于连接v$sqlarea查询 cursor-specific 信息。

l         CHILD_NUMBER:使用这个执行计划的子cursor

ADDRESS,HASH_VALUE以及CHILD_NUMBER可被用于连接v$sql查询子cursor信息。

l         OPERATION: 在各步骤执行内部操作的名称,例如:TABLE ACCESS

l         OPTIONS: 描述列OPERATION在操作上的变种,例如:FULL

l         OBJECT_NODE: 用于访问对象的数据库链接database link 的名称对于使用并行执行的本地查询该列能够描述操作中输出的次序。

l         OBJECT#: 表或索引对象数量

l         OBJECT_OWNER: 对于包含有表或索引的架构schema 给出其所有者的名称

l         OBJECT_NAME: 表或索引名

l         OPTIMIZER: 执行计划中首列的默认优化模式;例如,CHOOSE。比如业务是个存储数据库,它将告知是否对象是最优化的。

l         ID: 在执行计划中分派到每一步的序号。

l         PARENT_ID: ID 步骤的输出进行操作的下一个执行步骤的ID

l         DEPTH: 业务树深度(或级)

l         POSITION: 对于具有相同PARENT_ID 的操作其相应的处理次序。

l         COST: cost-based方式优化的操作开销的评估,如果语句使用rule-based方式,本列将为空。

l         CARDINALITY: 根据cost-based方式操作所访问的行数的评估。

l         BYTES: 根据cost-based方式操作产生的字节的评估,。

l         OTHER_TAG: 其它列的内容说明。

l         PARTITION_START: 范围存取分区中的开始分区。

l         PARTITION_STOP: 范围存取分区中的停止分区。

l         PARTITION_ID: 计算PARTITION_STARTPARTITION_STOP这对列值的步数

l         OTHER: 其它信息即执行步骤细节,供用户参考。

l         DISTRIBUTION: 为了并行查询,存储用于从生产服务器到消费服务器分配列的方法

l         CPU_COST: 根据cost-based方式CPU操作开销的评估。如果语句使用rule-based方式,本列为空。

l         IO_COST: 根据cost-based方式I/O操作开销的评估。如果语句使用rule-based方式,本列为空。

l         TEMP_SPACE: cost-based方式操作(sort or hash-join)的临时空间占用评估。如果语句使用rule-based方式,本列为空。

l         ACCESS_PREDICATES: 指明以便在存取结构中定位列,例如,在范围索引查询中的开始或者结束位置。

l         FILTER_PREDICATES: 在生成数据之前即指明过滤列。

  下列语句显示一条指定SQL语句的执行计划。查看一条SQL语句的执行计划是调整优化SQL语句的第一步。这条被查询到执行计划的SQL语句是通过语句的HASH_VALUEADDRESS列识别。分两步执行:

 

1.SELECT sql_text, address, hash_value FROM v$sql

 WHERE sql_text like '%TAG%';

2.SELECT operation, options, object_name, cost FROM v$sql_plan

 WHERE address = '82157784' AND hash_value = 1224822469;

 select * from v$sql where address = '000000042C8F5210' AND hash_value = 2180328129;

 select * from v$sqltext where address = '000000042C8F5210' AND hash_value = 2180328129;

 select * from v$sqlarea where address = '000000042C8F5210' AND hash_value = 2180328129;

 select * from v$sql_plan where address = '000000042C8F5210' AND hash_value = 2180328129 and child_number=19;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22295535/viewspace-712880/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 学习直方图知识
请登录后发表评论 登录
全部评论

注册时间:2009-11-30

  • 博文量
    18
  • 访问量
    19311