zoukankan      html  css  js  c++  java
  • v$sql,V$SQLTExT和v$sqlarea区别与联系

     v$sqltext
    存储的是完整的SQL,SQL被分割

    SQL> desc v$sqltext
    Name                                      Null?    Type
    ----------------------------------------- -------- ----------------------------
    ADDRESS                                            RAW(4)    ---------
    HASH_VALUE                                         NUMBER   ---------  和 address 一起唯一标志一条sql
    COMMAND_TYPE                                       NUMBER
    PIECE                                              NUMBER   ----------  分片之后的顺序编号
    SQL_TEXT                                           VARCHAR2(64)   --------------  注意长度



    v$sqlarea   ---------  存储的SQL 和一些相关的信息,比如累计的执行次数,逻辑读,物理读等统计信息
    SQL> desc v$sqlarea
    Name                                      Null?    Type
    ----------------------------------------- -------- ----------------------------
    SQL_TEXT                                           VARCHAR2(1000)
    SHARABLE_MEM                                       NUMBER
    PERSISTENT_MEM                                     NUMBER
    RUNTIME_MEM                                        NUMBER
    SORTS                                              NUMBER
    VERSION_COUNT                                      NUMBER
    LOADED_VERSIONS                                    NUMBER
    OPEN_VERSIONS                                      NUMBER
    USERS_OPENING                                      NUMBER
    FETCHES                                            NUMBER
    EXECUTIONS                                         NUMBER
    USERS_EXECUTING                                    NUMBER
    LOADS                                              NUMBER
    FIRST_LOAD_TIME                                    VARCHAR2(38)
    INVALIDATIONS                                      NUMBER
    PARSE_CALLS                                        NUMBER
    DISK_READS                                         NUMBER
    BUFFER_GETS                                        NUMBER
    ROWS_PROCESSED                                     NUMBER
    COMMAND_TYPE                                       NUMBER
    OPTIMIZER_MODE                                     VARCHAR2(25)
    PARSING_USER_ID                                    NUMBER
    PARSING_SCHEMA_ID                                  NUMBER
    KEPT_VERSIONS                                      NUMBER
    ADDRESS                                            RAW(4)
    HASH_VALUE                                         NUMBER
    MODULE                                             VARCHAR2(64)
    MODULE_HASH                                        NUMBER
    ACTION                                             VARCHAR2(64)
    ACTION_HASH                                        NUMBER
    SERIALIZABLE_ABORTS                                NUMBER
    CPU_TIME                                           NUMBER
    ELAPSED_TIME                                       NUMBER
    IS_OBSOLETE                                        VARCHAR2(1)
    CHILD_LATCH                                        NUMBER




    v$sql     ----------  存储的是具体的SQL 和执行计划相关信息,实际上,v$sqlarea 可以看做 v$sql 根据 sqltext 等 做了 group by 之后的信息


    SQL> desc v$sql
    Name                                      Null?    Type
    ----------------------------------------- -------- ----------------------------
    SQL_TEXT                                           VARCHAR2(1000)
    SHARABLE_MEM                                       NUMBER
    PERSISTENT_MEM                                     NUMBER
    RUNTIME_MEM                                        NUMBER
    SORTS                                              NUMBER
    LOADED_VERSIONS                                    NUMBER
    OPEN_VERSIONS                                      NUMBER
    USERS_OPENING                                      NUMBER
    FETCHES                                            NUMBER
    EXECUTIONS                                         NUMBER
    USERS_EXECUTING                                    NUMBER
    LOADS                                              NUMBER
    FIRST_LOAD_TIME                                    VARCHAR2(38)
    INVALIDATIONS                                      NUMBER
    PARSE_CALLS                                        NUMBER
    DISK_READS                                         NUMBER
    BUFFER_GETS                                        NUMBER
    ROWS_PROCESSED                                     NUMBER
    COMMAND_TYPE                                       NUMBER
    OPTIMIZER_MODE                                     VARCHAR2(10)
    OPTIMIZER_COST                                     NUMBER
    PARSING_USER_ID                                    NUMBER
    PARSING_SCHEMA_ID                                  NUMBER
    KEPT_VERSIONS                                      NUMBER
    ADDRESS                                            RAW(4)
    TYPE_CHK_HEAP                                      RAW(4)
    HASH_VALUE                                         NUMBER
    PLAN_HASH_VALUE                                    NUMBER
    CHILD_NUMBER                                       NUMBER    ----------  注意这个  
    MODULE                                             VARCHAR2(64)
    MODULE_HASH                                        NUMBER
    ACTION                                             VARCHAR2(64)
    ACTION_HASH                                        NUMBER
    SERIALIZABLE_ABORTS                                NUMBER
    OUTLINE_CATEGORY                                   VARCHAR2(64)
    CPU_TIME                                           NUMBER
    ELAPSED_TIME                                       NUMBER
    OUTLINE_SID                                        NUMBER    --------------  注意这里跟 outline 有关
    CHILD_ADDRESS                                      RAW(4) 
    SQLTYPE                                            NUMBER
    REMOTE                                             VARCHAR2(1)
    OBJECT_STATUS                                      VARCHAR2(19)
    LITERAL_HASH_VALUE                                 NUMBER
    LAST_LOAD_TIME                                     VARCHAR2(38)
    IS_OBSOLETE                                        VARCHAR2(1)
    CHILD_LATCH                                        NUMBER


    另外注意这个
    QL> desc v$sql_plan
    Name                                      Null?    Type
    ----------------------------------------- -------- ----------------------------
    ADDRESS                                            RAW(4)
    HASH_VALUE                                         NUMBER
    CHILD_NUMBER                                       NUMBER   ------------   注意这个和 v$sql 里面的相同字段
    OPERATION                                          VARCHAR2(60)
    OPTIONS                                            VARCHAR2(60)
    OBJECT_NODE                                        VARCHAR2(20)
    OBJECT#                                            NUMBER
    OBJECT_OWNER                                       VARCHAR2(30)
    OBJECT_NAME                                        VARCHAR2(64)
    OPTIMIZER                                          VARCHAR2(40)
    ID                                                 NUMBER
    PARENT_ID                                          NUMBER
    DEPTH                                              NUMBER
    POSITION                                           NUMBER
    SEARCH_COLUMNS                                     NUMBER
    COST                                               NUMBER
    CARDINALITY                                        NUMBER
    BYTES                                              NUMBER
    OTHER_TAG                                          VARCHAR2(70)
    PARTITION_START                                    VARCHAR2(10)
    PARTITION_STOP                                     VARCHAR2(10)
    PARTITION_ID                                       NUMBER
    OTHER                                              VARCHAR2(4000)
    DISTRIBUTION                                       VARCHAR2(40)
    CPU_COST                                           NUMBER
    IO_COST                                            NUMBER
    TEMP_SPACE                                         NUMBER
    ACCESS_PREDICATES                                  VARCHAR2(4000)
    FILTER_PREDICATES                                  VARCHAR2(4000)


    实际上,看起来同样的一句SQL ,往往具有不同的执行计划
    如果是不同的数据库用户,那么相应的涉及的 对象 可能都不一样,注意v$sql 中 
    OBJECT#                                            NUMBER
    OBJECT_OWNER                                       VARCHAR2(30)
    OBJECT_NAME                                        VARCHAR2(64)
    OPTIMIZER                                          VARCHAR2(40)

    即使是相同的数据库用户,若 session 的优化模式、session 级的参数 等不一样,执行计划也能不同。所以即使相同的sql,也可能具有不同的执行计划!

    v$sql   join  to  v$sql_plan  就代表了具体的sql的执行计划,通过下面3个字段做连接

    ADDRESS                                            RAW(4)
    HASH_VALUE                                         NUMBER
    CHILD_NUMBER                                       NUMBER


    而v$SQLAREA 忽略了  执行计划 等差异,只是在形式上sql文本看起来一样!相当于做了个聚合,是多个不同执行计划的sql的聚合和累计信息。

    其实这几个视图都来自x$kglcursor表,你查一下v$sqltext 及 v$sql的创建语句就清楚了---eygle.

    补充:

    1、查一下这些视图的定义你就能理解,它们的源都是一个。
    SELECT view_definition FROM v$fixed_view_definition        WHERE view_name='GV$SQL';
    SELECT view_definition FROM v$fixed_view_definition        WHERE view_name='GV$SQL_AREA';

    2、实际上最模糊的是v$sql与v$sqlarea,区别与联系除biti说的还有:

    a、v$sql_area相当于是按INST_ID, KGLNAOBJ, KGLHDPAR, KGLNAHSH, KGLNATIM, GLOBTS0,GLOBT19, KGLOBTS1, KGLOBT20,DECODE(KGLOBT33, 1, 'Y', 'N'),KGLHDCLT这些列的自v$sql的group by,也就是说v$sql的每一行表示的是每一个sql语句的一个versiion,而v$sqlarea存放的是相同语句不同version一个汇总。

    b、 v$sql与v$sqlarea的源都是一个:X$KGLCURSOR

    c、实际调优中建议使用v$sql,相对来说比v$sqlarea快,而且还不会产生share pool latch的争用。

    3、因v$sql及v$sqlarea存放着统计信息在调优时使用居多,但其sql是不全的,如果想获得完整的sql就要用v$sqltext了。

    自强不息,方能厚得载物。

    尊重知识,转载需注明出处。
  • 相关阅读:
    解决nodejs使用yarn安装vue-cli提示'vue' 不是内部或外部命令
    转载——java synchronized详解
    转载——Java中this关键字和super关键字的使用
    转载—— JUnit单元测试教程(翻译自Java Code Geeks)
    Usage and Idioms——Use with Maven
    转载——JUnit 5 新特性
    Usage and Idioms——Categories
    转载——单元测试利器 JUnit 4
    Usage and Idioms——Test Fixtures
    深入JUnit源码之Rule
  • 原文地址:https://www.cnblogs.com/uniqueness/p/3081550.html
Copyright © 2011-2022 走看看