数据结构index是什么(数据库索引可以用hash实现吗)

技术数据库中plan_hash_value有什么用这篇文章给大家分享的是有关数据库中plan_hash_value有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

这篇文章给大家分享的是有关数据库中计划_散列_值有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

plan_hash_value判断sql的访问路径是否改变的主要方法是:v$sql.plan_hash_value的值是否改变。如果不同的sql语句含有相同的实验:—创建表deptSQL create table dept as select * from scott.dept;Table created.—执行2条sql查询dept表http://

;                     l_execution_enabled', 'false') NO_PARALLEL_INDEX(SAMPLESUB) NO_SQL_TUNE */ NVL(SUM(C1),0), NVL(SUM(C
                                                         2),0) FROM (SELECT /*+ NO_PARALLEL("DEPT") FULL("DEPT") NO_PARALLEL_INDEX("DEPT") */ 1 AS C1, 1 AS C
                                                         2 FROM "SYS"."DEPT" "DEPT") SAMPLESUB

0000000061211A40 2958346034            0      2657262937 select ADDRESS, HASH_VALUE, SQL_ID, PLAN_HASH_VALUE, CHILD_ADDRESS,          CHILD_NUMBER,  TIMESTAM
                                                         P, OPERATION,                                         OPTIONS, OBJECT_NODE, OBJECT#, OBJECT_OWNER, O
                                                         BJECT_NAME,                    OBJECT_ALIAS, OBJECT_TYPE, OPTIMIZER,
                                                                 ID, PARENT_ID, DEPTH, POSITION, SEARCH_COLUMNS, COST, CARDINALITY,           BYTES, OTHER_TA
                                                         G, PARTITION_START, PARTITION_STOP, PARTITION_ID,             OTHER, DISTRIBUTION, CPU_COST, IO_COST
                                                         , TEMP_SPACE,                          ACCESS_PREDICATES, FILTER_PREDICATES, PROJECTION, TIME, QBLOC
                                                         K_NAME,         REMARKS, OTHER_XML                                                           from GV
                                                         $SQL_PLAN                                                             where inst_id = USERENV('Insta
                                                         nce')

000000008B5D3908 3410315986            0       903671040 select address,hash_value,child_number,plan_hash_value,sql_text from v$sql where sql_text like '%DEP
                                                         T%'

000000008B626668 3145184715            0       315352865 SELECT /* OPT_DYN_SAMP */ /*+ ALL_ROWS IGNORE_WHERE_CLAUSE NO_PARALLEL(SAMPLESUB) opt_param('paralle
                                                         l_execution_enabled', 'false') NO_PARALLEL_INDEX(SAMPLESUB) NO_SQL_TUNE */ NVL(SUM(C1),0), NVL(SUM(C
                                                         2),0) FROM (SELECT /*+ IGNORE_WHERE_CLAUSE NO_PARALLEL("DEPT") FULL("DEPT") NO_PARALLEL_INDEX("DEPT"
                                                         ) */ 1 AS C1, CASE WHEN "DEPT"."DEPTNO"=10 THEN 1 ELSE 0 END AS C2 FROM "SYS"."DEPT" "DEPT") SAMPLES
                                                         UB
                                                         
—通过v$sql_plan查询执行计划                                                         
SQL>  SELECT operation, options, object_name, cost  FROM v$sql_plan  WHERE address ='000000008B589B40' and HASH_VALUE='3749466620';

OPERATION                                                    OPTIONS                                                      OBJECT_NAME                          COST
———————————————————— ————————————————————
SELECT STATEMENT                                                                                                                                                  2
SORT                                                         AGGREGATE
TABLE ACCESS                                                 FULL                                                         DEPT                                    2

SQL>
SQL> SELECT operation, options, object_name, cost  FROM v$sql_plan  WHERE address ='000000008B626668' and HASH_VALUE='3145184715';

OPERATION                                                    OPTIONS                                                      OBJECT_NAME                          COST
———————————————————— ———————————————————— —————————— ———-
SELECT STATEMENT                                                                                                                                                  2
SORT                                                         AGGREGATE
TABLE ACCESS                                                 FULL                                                         DEPT                                    2
查询的执行计划完全一样

–对表dept做修改,增加索引
SQL> create index idx_dept_deptno on dept(deptno);

Index created.

—再次查看
SQL> select address,hash_value,child_number,plan_hash_value,sql_text from v$sql where sql_text like '%DEPT%';

ADDRESS          HASH_VALUE CHILD_NUMBER PLAN_HASH_VALUE SQL_TEXT
—————- ———- ———— ————— —————————————————————————————————-
000000008B589B40 3749466620            0       315352865 SELECT /* OPT_DYN_SAMP */ /*+ ALL_ROWS IGNORE_WHERE_CLAUSE NO_PARALLEL(SAMPLESUB) opt_param('paralle
                                                         l_execution_enabled', 'false') NO_PARALLEL_INDEX(SAMPLESUB) NO_SQL_TUNE */ NVL(SUM(C1),0), NVL(SUM(C
                                                         2),0) FROM (SELECT /*+ NO_PARALLEL("DEPT") FULL("DEPT") NO_PARALLEL_INDEX("DEPT") */ 1 AS C1, 1 AS C
                                                         2 FROM "SYS"."DEPT" "DEPT") SAMPLESUB

0000000061211A40 2958346034            0      2657262937 select ADDRESS, HASH_VALUE, SQL_ID, PLAN_HASH_VALUE, CHILD_ADDRESS,          CHILD_NUMBER,  TIMESTAM
                                                         P, OPERATION,                                         OPTIONS, OBJECT_NODE, OBJECT#, OBJECT_OWNER, O
                                                         BJECT_NAME,                    OBJECT_ALIAS, OBJECT_TYPE, OPTIMIZER,
                                                                 ID, PARENT_ID, DEPTH, POSITION, SEARCH_COLUMNS, COST, CARDINALITY,           BYTES, OTHER_TA
                                                         G, PARTITION_START, PARTITION_STOP, PARTITION_ID,             OTHER, DISTRIBUTION, CPU_COST, IO_COST
                                                         , TEMP_SPACE,                          ACCESS_PREDICATES, FILTER_PREDICATES, PROJECTION, TIME, QBLOC
                                                         K_NAME,         REMARKS, OTHER_XML                                                           from GV
                                                         $SQL_PLAN                                                             where inst_id = USERENV('Insta
                                                         nce')

000000008B5D3908 3410315986            0       903671040 select address,hash_value,child_number,plan_hash_value,sql_text from v$sql where sql_text like '%DEP
                                                         T%'

000000008E0A74E0 1470990285            0               0 LOCK TABLE "DEPT" IN SHARE MODE  NOWAIT
000000008B626668 3145184715            0       315352865 SELECT /* OPT_DYN_SAMP */ /*+ ALL_ROWS IGNORE_WHERE_CLAUSE NO_PARALLEL(SAMPLESUB) opt_param('paralle
                                                         l_execution_enabled', 'false') NO_PARALLEL_INDEX(SAMPLESUB) NO_SQL_TUNE */ NVL(SUM(C1),0), NVL(SUM(C
                                                         2),0) FROM (SELECT /*+ IGNORE_WHERE_CLAUSE NO_PARALLEL("DEPT") FULL("DEPT") NO_PARALLEL_INDEX("DEPT"
                                                         ) */ 1 AS C1, CASE WHEN "DEPT"."DEPTNO"=10 THEN 1 ELSE 0 END AS C2 FROM "SYS"."DEPT" "DEPT") SAMPLES
                                                         UB

—-再次执行上述相同的2条sql
SQL> select deptno,dname from dept where deptno=10;

    DEPTNO DNAME
———- ————–
        10 ACCOUNTING

SQL> select deptno,dname from dept;

    DEPTNO DNAME
———- ————–
        10 ACCOUNTING
        20 RESEARCH
        30 SALES
        40 OPERATIONS
        
—查询v$sql下的address,hash_value,child_number,plan_hash_value,sql_text
SQL> select address,hash_value,child_number,plan_hash_value,sql_text from v$sql where sql_text like '%DEPT%';

ADDRESS          HASH_VALUE CHILD_NUMBER PLAN_HASH_VALUE SQL_TEXT
—————- ———- ———— ————— —————————————————————————————————-
000000008B589B40 3749466620            0       315352865 SELECT /* OPT_DYN_SAMP */ /*+ ALL_ROWS IGNORE_WHERE_CLAUSE NO_PARALLEL(SAMPLESUB) opt_param('paralle
                                                         l_execution_enabled', 'false') NO_PARALLEL_INDEX(SAMPLESUB) NO_SQL_TUNE */ NVL(SUM(C1),0), NVL(SUM(C
                                                         2),0) FROM (SELECT /*+ NO_PARALLEL("DEPT") FULL("DEPT") NO_PARALLEL_INDEX("DEPT") */ 1 AS C1, 1 AS C
                                                         2 FROM "SYS"."DEPT" "DEPT") SAMPLESUB

0000000061211A40 2958346034            0      2657262937 select ADDRESS, HASH_VALUE, SQL_ID, PLAN_HASH_VALUE, CHILD_ADDRESS,          CHILD_NUMBER,  TIMESTAM
                                                         P, OPERATION,                                         OPTIONS, OBJECT_NODE, OBJECT#, OBJECT_OWNER, O
                                                         BJECT_NAME,                    OBJECT_ALIAS, OBJECT_TYPE, OPTIMIZER,
                                                                 ID, PARENT_ID, DEPTH, POSITION, SEARCH_COLUMNS, COST, CARDINALITY,           BYTES, OTHER_TA
                                                         G, PARTITION_START, PARTITION_STOP, PARTITION_ID,             OTHER, DISTRIBUTION, CPU_COST, IO_COST
                                                         , TEMP_SPACE,                          ACCESS_PREDICATES, FILTER_PREDICATES, PROJECTION, TIME, QBLOC
                                                         K_NAME,         REMARKS, OTHER_XML                                                           from GV
                                                         $SQL_PLAN                                                             where inst_id = USERENV('Insta
                                                         nce')

000000008B5D3908 3410315986            0       903671040 select address,hash_value,child_number,plan_hash_value,sql_text from v$sql where sql_text like '%DEP
                                                         T%'

000000008E0A74E0 1470990285            0               0 LOCK TABLE "DEPT" IN SHARE MODE  NOWAIT
000000008B626668 3145184715            0       315352865 SELECT /* OPT_DYN_SAMP */ /*+ ALL_ROWS IGNORE_WHERE_CLAUSE NO_PARALLEL(SAMPLESUB) opt_param('paralle
                                                         l_execution_enabled', 'false') NO_PARALLEL_INDEX(SAMPLESUB) NO_SQL_TUNE */ NVL(SUM(C1),0), NVL(SUM(C
                                                         2),0) FROM (SELECT /*+ IGNORE_WHERE_CLAUSE NO_PARALLEL("DEPT") FULL("DEPT") NO_PARALLEL_INDEX("DEPT"
                                                         ) */ 1 AS C1, CASE WHEN "DEPT"."DEPTNO"=10 THEN 1 ELSE 0 END AS C2 FROM "SYS"."DEPT" "DEPT") SAMPLES
                                                         UB

00000000613ACE30 1756886759            0      2570986044 SELECT /* OPT_DYN_SAMP */ /*+ ALL_ROWS opt_param('parallel_execution_enabled', 'false') NO_PARALLEL(
                                                         SAMPLESUB) NO_PARALLEL_INDEX(SAMPLESUB) NO_SQL_TUNE */ NVL(SUM(C1),0), NVL(SUM(C2),0), NVL(SUM(C3),0
                                                         ) FROM (SELECT /*+ NO_PARALLEL("DEPT") INDEX("DEPT" IDX_DEPT_DEPTNO) NO_PARALLEL_INDEX("DEPT") */ 1
                                                         AS C1, 1 AS C2, 1 AS C3  FROM "SYS"."DEPT" "DEPT" WHERE "DEPT"."DEPTNO"=10 AND ROWNUM <= 2500) SAMPL
                                                         ESUB

6 rows selected.

—再次查看执行计划
SQL>   SELECT operation, options, object_name, cost  FROM v$sql_plan  WHERE address ='000000008B589B40' and HASH_VALUE='3749466620';

OPERATION                                                    OPTIONS                                                      OBJECT_NAME                          COST
———————————————————— ———————————————————— —————————— ———-
SELECT STATEMENT                                                                                                                                                  2
SORT                                                         AGGREGATE
TABLE ACCESS                                                 FULL                                                         DEPT                                    2

SQL> SELECT operation, options, object_name, cost  FROM v$sql_plan  WHERE address ='000000008B626668' and HASH_VALUE='3145184715';

OPERATION                                                    OPTIONS                                                      OBJECT_NAME                          COST
———————————————————— ———————————————————— —————————— ———-
SELECT STATEMENT                                                                                                                                                  2
SORT                                                         AGGREGATE
TABLE ACCESS                                                 FULL                                                         DEPT                                    2

SQL> SELECT operation, options, object_name, cost  FROM v$sql_plan  WHERE address ='00000000613ACE30' and HASH_VALUE='1756886759';

OPERATION                                                    OPTIONS                                                      OBJECT_NAME                          COST
———————————————————— ———————————————————— —————————— ———-
SELECT STATEMENT                                                                                                                                                  1
SORT                                                         AGGREGATE
VIEW                                                                                                                                                              1
COUNT                                                        STOPKEY
INDEX                                                        RANGE SCAN                                                   IDX_DEPT_DEPTNO                         1
最终发现执行计划已经改变,所以可以根据plan_hash_value值是否变化可知该sql语句的执行计划是否改变

通过v$sql视图的plan_hash_value值可以很方便的知道,该sql语句的执行计划是否改变,
通常我们的做法是分别将v$sql,v$sql_hash做两份快照,隔段时间后再做段快照,然后将其进行比较,查看是否有sql的执行计划已经改变。                                                       

感谢各位的阅读!关于“数据库中plan_hash_value有什么用”这篇文章就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/144266.html

(0)

相关推荐

  • java如何实现单机接口限流

    技术java如何实现单机接口限流这篇文章主要为大家展示了“java如何实现单机接口限流”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java如何实现单机接口限流”这篇文章吧。

    攻略 2021年11月25日
  • c语言宏定义函数怎么用(c语言continue函数使用方法)

    技术C语言宏函数container of()怎么使用本篇内容主要讲解“C语言宏函数container of()怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言宏函

    攻略 2021年12月20日
  • 单次发大量bool查询条件以及ES的java堆栈内存溢出怎么办

    技术单次发大量bool查询条件以及ES的java堆栈内存溢出怎么办今天就跟大家聊聊有关单次发大量bool查询条件以及ES的java堆栈内存溢出怎么办,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希

    攻略 2021年10月21日
  • 微信能传多大的视频,微信朋友圈能发多大的视频

    技术微信能传多大的视频,微信朋友圈能发多大的视频在iOS系统下能发400KB以内视频微信能传多大的视频,Android系统能发200到300KB之间的视频。 1.使用微信,网络不稳定,流量也受限时不太适合用户发布或者查

    生活 2021年10月20日
  • c++中如何使用两个栈实现一个队列

    技术c++中如何使用两个栈实现一个队列c++中如何使用两个栈实现一个队列,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、栈栈:只允许在固定

    攻略 2021年11月24日
  • 11.6 3Python 第六章 函数

    技术11.6 3Python 第六章 函数 11.6 3Python 第六章 函数1.运行结果如右图,函数在定义时没有返回值,体现在return的位置错啦!
    其余错误:函数错误,修改后如下:2. 错误2

    礼包 2021年11月7日