v$sql字段的理解

来源:互联网 发布:阿里云注册域名不能有 编辑:程序博客网 时间:2024/06/15 16:44

PLAN_HASH_VALUE: 反应sql的执行计划,如果不同的sql的 PLAN_HASH_VALUE 相同,则表示这些sql的执行计划相同。

HASH_VALUE:sql_id的后几位的一个值,因此不同的sql 的HASH_VALUE 也可能相同。

sql_id:能够唯一标示一条sql

version_count:我们经常会在SQL相关的动态性能视图中遇VERSION_COUNT,这个字段表示这个SQL在shared pool中的版本数,一个SQL语句在library cache中一般是对应一个cursor head和一个cursor body, 其中cursor head包含sql的代码和优化器的模式,cursor body则包括这个SQL的cursor的详细定义, 比如excution plan, bind variable等等, 所以通常情况下当Server process在shared pool中定位某条SQL语句的时候,首先要对这条SQL进行hash运算,通过运算结果去定位cursor head的地址,然后在根据这个地址去定位其相应的cursor body。如果version_count这个直过高比如>1,则表示针对这同一条SQL,在共享池中有一个cursor head和多个cursor body。那么在定位一个SQL的时候由于存在过多的版本,需要扫描cursor header下面一链表私的一串儿的cursor body,那么这每一个body就对应了一个不同的版本。虽然SQl语句看似是一样的,但是由于body的不同,存在着不同的execution plan。如果这个version_count过高,那么随着cursor body数量的增加。在性能上也会有很大的影响,由于扫描cursor body的时候需要latch,对于shared pool来讲,latch是很宝贵的一种资源,因此这样的情况应该想办法来调整。来提高系统的性能。

0 0
原创粉丝点击