zoukankan      html  css  js  c++  java
  • 基于advisor优化工具的一次sql优化

    问题背景:

    客户反馈升级补丁包后DB服务器CPU压力增致99%

    解决思路:

    1> 查看问题系统发现有大量的latch: cache buffers chains 等待;

    latch:cache buffers chains出现的原因   

    1、不够优化的SQL。   

    大量逻辑读的SQL语句就有可能产生非常严重的latch:cache buffers chains等待,因为每次要访问一个block,

    就需要获得该latch,由于有大量的逻辑读,那么就增加了latch:cache buffers chains争用的机率。   

    对于正在运行的SQL语句,产生非常严重的latch:cache buffers chains争用,可以利用下面SQL查看执行计划,并设法优化SQL语句。

    1 select * from table(dbms_xplan.display_cursor('sql_id',sql_child_number));   

    如果SQL已经运行完毕,我们就看AWR报表里面的SQL Statistics->SQL ordered by Gets->Gets per Exec,试图优化这些SQL。

    2、热点块争用  

    查找数据库是否存在latch的争用

    1 select sid,event,p1text,p1raw from v$session_wait where event='latch: cache buffers chains'

    配合awr报告查看

    可以确认确实有大量的latch:cache buffers chains 等待

    2> 根据客户反馈昨天刚刚升级完毕补丁包并且补丁包里有

    新上线的sql,怀疑是新的sql不够优化导致

    首先把DB服务器的cpu降下来,kill latch: cache buffers chains 会话

    复制代码
     1 select 'alter system kill session ''' || a.sid || ',' || serial# || ''' immediate;'
     2   from v$session a
     3  where a.username='ECOLOGY' 
     4  AND a.STATUS='ACTIVE'    
     5  and event in('latch: cache buffers chains','latch free')
     6 
     7 alter system kill session '56,18142' ;
     8 alter system kill session '319,1510' ;
     9 alter system kill session '1462,17432' ;
    10 alter system kill session '3456,2847' ;
    11 alter system kill session '3457,1717' ;
    12 alter system kill session '3458,16756' ;
    13 alter system kill session '3739,7185' ;
    14 alter system kill session '4000,2064' ;
    复制代码

    3> 根据sql_id 查看问题sql的执行计划

    SQL_ID  gj9y6g28qx8hw, child number 3

    -------------------------------------

    Plan hash value: 563984120

    Query Block Name / Object Alias (identified by operation id):

    -------------------------------------------------------------

       1 - SEL$6D6869C2

       7 - SEL$6D6869C2 / WORKFLOWCENTERSETTINGDETAIL@SEL$3

      10 - SEL$6D6869C2 / WORKFLOWCENTERSETTINGDETAIL@SEL$4

      12 - SEL$6D6869C2 / T1@SEL$2

      13 - SEL$6D6869C2 / T2@SEL$2

      14 - SEL$6D6869C2 / T2@SEL$2

      15 - SEL$6D6869C2 / WORKFLOW_BASE@SEL$5

      16 - SEL$6D6869C2 / WORKFLOW_BASE@SEL$5

    Outline Data

    -------------

      /*+

          BEGIN_OUTLINE_DATA

          IGNORE_OPTIM_EMBEDDED_HINTS

          OPTIMIZER_FEATURES_ENABLE('11.2.0.1')

          DB_VERSION('11.2.0.1')

          ALL_ROWS

          OUTLINE_LEAF(@"SEL$6D6869C2")

          UNNEST(@"SEL$3")

          UNNEST(@"SEL$4")

          UNNEST(@"SEL$5")

          OUTLINE(@"SEL$F5BB74E1")

          MERGE(@"SEL$2")

          OUTLINE(@"SEL$3")

          OUTLINE(@"SEL$4")

          OUTLINE(@"SEL$5")

          OUTLINE(@"SEL$1")

          OUTLINE(@"SEL$2")

          INDEX(@"SEL$6D6869C2" "WORKFLOWCENTERSETTINGDETAIL"@"SEL$3" ("WORKFLOWCENTERSETTINGDETAIL"."EID" 

                  "WORKFLOWCENTERSETTINGDETAIL"."TABID" "WORKFLOWCENTERSETTINGDETAIL"."TYPE" 

                  "WORKFLOWCENTERSETTINGDETAIL"."CONTENT"))

          INDEX(@"SEL$6D6869C2" "WORKFLOWCENTERSETTINGDETAIL"@"SEL$4" ("WORKFLOWCENTERSETTINGDETAIL"."EID" 

                  "WORKFLOWCENTERSETTINGDETAIL"."TABID" "WORKFLOWCENTERSETTINGDETAIL"."TYPE" 

                  "WORKFLOWCENTERSETTINGDETAIL"."CONTENT"))

          FULL(@"SEL$6D6869C2" "T1"@"SEL$2")

          INDEX_RS_ASC(@"SEL$6D6869C2" "T2"@"SEL$2" ("WORKFLOW_CURRENTOPERATOR"."REQUESTID" 

                  "WORKFLOW_CURRENTOPERATOR"."USERID" "WORKFLOW_CURRENTOPERATOR"."WORKFLOWID"))

          INDEX_RS_ASC(@"SEL$6D6869C2" "WORKFLOW_BASE"@"SEL$5" ("WORKFLOW_BASE"."ID"))

          LEADING(@"SEL$6D6869C2" "WORKFLOWCENTERSETTINGDETAIL"@"SEL$3" "WORKFLOWCENTERSETTINGDETAIL"@"SEL$4" 

                  "T1"@"SEL$2" "T2"@"SEL$2" "WORKFLOW_BASE"@"SEL$5")

          USE_MERGE(@"SEL$6D6869C2" "WORKFLOWCENTERSETTINGDETAIL"@"SEL$4")

          USE_MERGE_CARTESIAN(@"SEL$6D6869C2" "T1"@"SEL$2")

          USE_NL(@"SEL$6D6869C2" "T2"@"SEL$2")

          USE_NL(@"SEL$6D6869C2" "WORKFLOW_BASE"@"SEL$5")

          END_OUTLINE_DATA

      */

    Predicate Information (identified by operation id):

    ---------------------------------------------------

       7 - access("EID"=962 AND "TABID"=5 AND "TYPE"='typeid')

      10 - access("EID"=962 AND "TABID"=5 AND "TYPE"='flowid')

      12 - filter((("T1"."DELETED"=0 OR "T1"."DELETED" IS NULL) AND ("T1"."CURRENTSTATUS" IS NULL OR 

                  "T1"."CURRENTSTATUS"<>1)))

      13 - filter(("T2"."VIEWTYPE"=0 AND "T2"."ISLASTTIMES"=1 AND INTERNAL_FUNCTION("T2"."ISREMARK") AND 

    可以看出执行计划非常糟糕,这次不手工调优,尝试使用advisor工具

    调优建议如下:

    复制代码
      1 GENERAL INFORMATION SECTION
      2 
      3 -------------------------------------------------------------------------------
      4 
      5 Tuning Task Name   : staName58179
      6 
      7 Tuning Task Owner  : username
      8 
      9 Tuning Task ID     : 20591
     10 
     11 Workload Type      : Single SQL Statement
     12 
     13 Execution Count    : 1
     14 
     15 Current Execution  : EXEC_18371
     16 
     17 Execution Type     : TUNE SQL
     18 
     19 Scope              : COMPREHENSIVE
     20 
     21 Time Limit(seconds): 1800
     22 
     23 Completion Status  : COMPLETED
     24 
     25 Started at         : 10/17/2019 16:42:31
     26 
     27 Completed at       : 10/17/2019 16:42:35
     28 
     29  
     30 
     31 -------------------------------------------------------------------------------
     32 
     33 Schema Name: username
     34 
     35 SQL ID     : 48k1mg3r7vqms
     36 
     37 SQL Text   : 
     38 
     39 -------------------------------------------------------------------------------
     40 
     41 FINDINGS SECTION (2 findings)
     42 
     43 -------------------------------------------------------------------------------
     44 
     45  
     46 
     47 1- Statistics Finding     
     48 
     49 --------------------- 
     50 
     51   表 "username"."table_name" 的优化程序统计信息已失效。
     52 
     53  
     54 
     55   Recommendation
     56 
     57   --------------
     58 
     59   - 考虑收集此表及其索引的优化程序统计信息。
     60 
     61     execute dbms_stats.gather_table_stats(ownname => 'username', tabname =>
     62 
     63             'table_name', estimate_percent =>
     64 
     65             DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE
     66 
     67             AUTO', cascade => TRUE);
     68 
     69  
     70 
     71   Rationale
     72 
     73   ---------
     74 
     75     为了选择好的执行计划, 优化程序需要此表及其索引的最新统计信息。
     76 
     77  
     78 
     79 2- SQL Profile Finding (see explain plans section below)
     80 
     81 --------------------------------------------------------
     82 
     83   为此语句找到了性能更好的执行计划。
     84 
     85  
     86 
     87   Recommendation (estimated benefit: 99.95%)
     88 
     89   ------------------------------------------
     90 
     91   - 考虑接受推荐的 SQL 概要文件。
     92 
     93     execute dbms_sqltune.accept_sql_profile(task_name => 'staName58179',
     94 
     95             task_owner => 'username', replace => TRUE);
     96 
     97  
     98 
     99   Validation results
    100 
    101   ------------------
    102 
    103   已对 SQL profile 进行测试, 方法为执行其计划和原始计划并测量与计划相对应的执行统计信息。如果其中一个计划运行在很短的时间内就完成,
    104 
    105   则另一计划可能只执行了一部分。
    106 
    107  
    108 
    109                            Original Plan  With SQL Profile  % Improved
    110 
    111                            -------------  ----------------  ----------
    112 
    113   Completion Status:            COMPLETE          COMPLETE
    114 
    115   Elapsed Time(us):               76070               265      99.65 %
    116 
    117   CPU Time(us):                   61690               299      99.51 %
    118 
    119   User I/O Time(us):                  0                 0 
    120 
    121   Buffer Gets:                    36545                17      99.95 %
    122 
    123   Physical Read Requests:             0                 0 
    124 
    125   Physical Write Requests:            0                 0 
    126 
    127   Physical Read Bytes:                0                 0 
    128 
    129   Physical Write Bytes:               0                 0 
    130 
    131   Rows Processed:                     1                 1 
    132 
    133   Fetches:                            1                 1 
    134 
    135   Executions:                         1                 1 
    136 
    137  
    138 
    139   Notes
    140 
    141   -----
    142 
    143   1. original plan 已首先执行以预热缓冲区高速缓存。
    144 
    145   2. original plan 的统计信息是后面的 9 执行的平均值。
    146 
    147   3. SQL profile plan 已首先执行以预热缓冲区高速缓存。
    148 
    149   4. the SQL profile plan 的统计信息是后面的 9 执行的平均值。
    复制代码

    -------------------------------------------------------------------------------

    EXPLAIN PLANS SECTION

    -------------------------------------------------------------------------------

    1- Original

    -----------

    Plan hash value: 2478385950

    Query Block Name / Object Alias (identified by operation id):

    -------------------------------------------------------------

       1 - SEL$6D6869C2

       8 - SEL$6D6869C2 / WORKFLOWCENTERSETTINGDETAIL@SEL$3

      11 - SEL$6D6869C2 / WORKFLOWCENTERSETTINGDETAIL@SEL$4

      13 - SEL$6D6869C2 / T2@SEL$2

      14 - SEL$6D6869C2 / T2@SEL$2

      15 - SEL$6D6869C2 / WORKFLOW_BASE@SEL$5

      16 - SEL$6D6869C2 / WORKFLOW_BASE@SEL$5

      17 - SEL$6D6869C2 / T1@SEL$2

      18 - SEL$6D6869C2 / T1@SEL$2

    Predicate Information (identified by operation id):

    ---------------------------------------------------

       8 - access("EID"=962 AND "TABID"=5 AND "TYPE"='typeid')

      11 - access("EID"=962 AND "TABID"=5 AND "TYPE"='flowid')

      13 - filter("T2"."VIEWTYPE"=0 AND "T2"."ISLASTTIMES"=1 AND "T2"."WORKFLOWTYPE"=TO_NUMBER("CONTENT") AND 

                  "T2"."WORKFLOWID"=TO_NUMBER("CONTENT"))

      14 - access(("T2"."ISREMARK"='7' OR "T2"."ISREMARK"='8' OR "T2"."ISREMARK"='9') AND "T2"."USERID"=695 

                  AND "T2"."USERTYPE"=0)

      15 - filter("ISVALID"='1' OR "ISVALID"='3')

      16 - access("T2"."WORKFLOWID"="ID")

      17 - access("T1"."REQUESTID"="T2"."REQUESTID")

      18 - filter(("T1"."DELETED"=0 OR "T1"."DELETED" IS NULL) AND ("T1"."CURRENTSTATUS" IS NULL OR 

                  "T1"."CURRENTSTATUS"<>1))

    Column Projection Information (identified by operation id):

    -----------------------------------------------------------

       1 - (#keys=0) COUNT(*)[22]

       2 - (#keys=0) 

       3 - (#keys=0) "T1".ROWID[ROWID,10]

       4 - (#keys=0) "T2"."REQUESTID"[NUMBER,22]

       5 - (#keys=0) "T2"."REQUESTID"[NUMBER,22], "T2"."WORKFLOWID"[NUMBER,22]

       6 - (#keys=0) TO_NUMBER("CONTENT")[22], TO_NUMBER("CONTENT")[22]

       7 - (#keys=1) TO_NUMBER("CONTENT")[22]

       8 - "CONTENT"[VARCHAR2,100]

       9 - (#keys=0) TO_NUMBER("CONTENT")[22]

      10 - (#keys=1) TO_NUMBER("CONTENT")[22]

      11 - "CONTENT"[VARCHAR2,100]

      12 - "T2"."REQUESTID"[NUMBER,22], "T2"."WORKFLOWID"[NUMBER,22]

      13 - "T2"."REQUESTID"[NUMBER,22], "T2"."WORKFLOWID"[NUMBER,22]

      14 - "T2".ROWID[ROWID,10]

      16 - "WORKFLOW_BASE".ROWID[ROWID,10]

      17 - "T1".ROWID[ROWID,10]

    2- Original With Adjusted Cost

    ------------------------------

    Plan hash value: 2478385950

    Query Block Name / Object Alias (identified by operation id):

    -------------------------------------------------------------

       1 - SEL$6D6869C2

       8 - SEL$6D6869C2 / WORKFLOWCENTERSETTINGDETAIL@SEL$3

      11 - SEL$6D6869C2 / WORKFLOWCENTERSETTINGDETAIL@SEL$4

      13 - SEL$6D6869C2 / T2@SEL$2

      14 - SEL$6D6869C2 / T2@SEL$2

      15 - SEL$6D6869C2 / WORKFLOW_BASE@SEL$5

      16 - SEL$6D6869C2 / WORKFLOW_BASE@SEL$5

      17 - SEL$6D6869C2 / T1@SEL$2

      18 - SEL$6D6869C2 / T1@SEL$2

    Predicate Information (identified by operation id):

    ---------------------------------------------------

       8 - access("EID"=962 AND "TABID"=5 AND "TYPE"='typeid')

      11 - access("EID"=962 AND "TABID"=5 AND "TYPE"='flowid')

      13 - filter("T2"."VIEWTYPE"=0 AND "T2"."ISLASTTIMES"=1 AND "T2"."WORKFLOWTYPE"=TO_NUMBER("CONTENT") AND 

                  "T2"."WORKFLOWID"=TO_NUMBER("CONTENT"))

      14 - access(("T2"."ISREMARK"='7' OR "T2"."ISREMARK"='8' OR "T2"."ISREMARK"='9') AND "T2"."USERID"=695 

                  AND "T2"."USERTYPE"=0)

      15 - filter("ISVALID"='1' OR "ISVALID"='3')

      16 - access("T2"."WORKFLOWID"="ID")

      17 - access("T1"."REQUESTID"="T2"."REQUESTID")

      18 - filter(("T1"."DELETED"=0 OR "T1"."DELETED" IS NULL) AND ("T1"."CURRENTSTATUS" IS NULL OR 

                  "T1"."CURRENTSTATUS"<>1))

    Column Projection Information (identified by operation id):

    -----------------------------------------------------------

       1 - (#keys=0) COUNT(*)[22]

       2 - (#keys=0) 

       3 - (#keys=0) "T1".ROWID[ROWID,10]

       4 - (#keys=0) "T2"."REQUESTID"[NUMBER,22]

       5 - (#keys=0) "T2"."REQUESTID"[NUMBER,22], "T2"."WORKFLOWID"[NUMBER,22]

       6 - (#keys=0) TO_NUMBER("CONTENT")[22], TO_NUMBER("CONTENT")[22]

       7 - (#keys=1) TO_NUMBER("CONTENT")[22]

       8 - "CONTENT"[VARCHAR2,100]

       9 - (#keys=0) TO_NUMBER("CONTENT")[22]

      10 - (#keys=1) TO_NUMBER("CONTENT")[22]

      11 - "CONTENT"[VARCHAR2,100]

      12 - "T2"."REQUESTID"[NUMBER,22], "T2"."WORKFLOWID"[NUMBER,22]

      13 - "T2"."REQUESTID"[NUMBER,22], "T2"."WORKFLOWID"[NUMBER,22]

      14 - "T2".ROWID[ROWID,10]

      16 - "WORKFLOW_BASE".ROWID[ROWID,10]

      17 - "T1".ROWID[ROWID,10]

    3- Using SQL Profile

    --------------------

    Plan hash value: 1474559118

    Query Block Name / Object Alias (identified by operation id):

    -------------------------------------------------------------

       1 - SEL$6D6869C2

       7 - SEL$6D6869C2 / T2@SEL$2

       8 - SEL$6D6869C2 / T2@SEL$2

       9 - SEL$6D6869C2 / WORKFLOWCENTERSETTINGDETAIL@SEL$3

      10 - SEL$6D6869C2 / T1@SEL$2

      11 - SEL$6D6869C2 / T1@SEL$2

      12 - SEL$6D6869C2 / WORKFLOW_BASE@SEL$5

      13 - SEL$6D6869C2 / WORKFLOW_BASE@SEL$5

      14 - SEL$6D6869C2 / WORKFLOWCENTERSETTINGDETAIL@SEL$4

    Predicate Information (identified by operation id):

    ---------------------------------------------------

       5 - access("T2"."WORKFLOWTYPE"=TO_NUMBER("CONTENT"))

       7 - filter("T2"."VIEWTYPE"=0 AND "T2"."ISLASTTIMES"=1)

       8 - access(("T2"."ISREMARK"='7' OR "T2"."ISREMARK"='8' OR "T2"."ISREMARK"='9') AND "T2"."USERID"=695 

                  AND "T2"."USERTYPE"=0)

       9 - access("EID"=962 AND "TABID"=5 AND "TYPE"='typeid')

      10 - filter(("T1"."DELETED"=0 OR "T1"."DELETED" IS NULL) AND ("T1"."CURRENTSTATUS" IS NULL OR 

                  "T1"."CURRENTSTATUS"<>1))

      11 - access("T1"."REQUESTID"="T2"."REQUESTID")

      12 - filter("ISVALID"='1' OR "ISVALID"='3')

      13 - access("T2"."WORKFLOWID"="ID")

      14 - access("EID"=962 AND "TABID"=5 AND "TYPE"='flowid')

           filter("T2"."WORKFLOWID"=TO_NUMBER("CONTENT"))

    Column Projection Information (identified by operation id):

    -----------------------------------------------------------

       1 - (#keys=0) COUNT(*)[22]

       2 - (#keys=0) 

       3 - (#keys=0) "T2"."WORKFLOWID"[NUMBER,22]

       4 - (#keys=0) "T2"."WORKFLOWID"[NUMBER,22]

       5 - (#keys=1) "T2"."REQUESTID"[NUMBER,22], "T2"."WORKFLOWID"[NUMBER,22]

       6 - "T2"."REQUESTID"[NUMBER,22], "T2"."WORKFLOWID"[NUMBER,22], "T2"."WORKFLOWTYPE"[NUMBER,22]

       7 - "T2"."REQUESTID"[NUMBER,22], "T2"."WORKFLOWID"[NUMBER,22], "T2"."WORKFLOWTYPE"[NUMBER,22]

       8 - "T2".ROWID[ROWID,10]

       9 - "CONTENT"[VARCHAR2,100]

      11 - "T1".ROWID[ROWID,10]

      13 - "WORKFLOW_BASE".ROWID[ROWID,10]

    -------------------------------------------------------------------------------

    advisor建议收集统计信息

    execute dbms_stats.gather_table_stats(ownname => 'username', tabname => 'table_name', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE);

    建议绑定良好的执行计划

    execute dbms_sqltune.accept_sql_profile(task_name => 'staName58179',task_owner => 'usrename', replace => TRUE);

    4> 根据advisor给出的建议实际查看相关表是否统计信息失效,确实发现相关表的统计信息失效,收集完毕统计信息再次执行advisor测试

    GENERAL INFORMATION SECTION

    -------------------------------------------------------------------------------

    Tuning Task Name   : staName86486

    Tuning Task Owner  : username

    Tuning Task ID     : 20592

    Workload Type      : Single SQL Statement

    Execution Count    : 1

    Current Execution  : EXEC_18372

    Execution Type     : TUNE SQL

    Scope              : COMPREHENSIVE

    Time Limit(seconds): 1800

    Completion Status  : COMPLETED

    Started at         : 10/17/2019 16:48:25

    Completed at       : 10/17/2019 16:48:26

    -------------------------------------------------------------------------------

    Schema Name: username

    SQL ID     : 48k1mg3r7vqms

    SQL Text   : 

    -------------------------------------------------------------------------------

    ADDITIONAL INFORMATION SECTION

    -------------------------------------------------------------------------------

    - 此语句的 SQL 概要文件 "SYS_SQLPROF_016dd8e4cbcb0000" 已存在, 但在优化时被忽略。

    -------------------------------------------------------------------------------

    EXPLAIN PLANS SECTION

    -------------------------------------------------------------------------------

    1- Original

    -----------

    Plan hash value: 1474559118

     

    Query Block Name / Object Alias (identified by operation id):

    -------------------------------------------------------------

       1 - SEL$6D6869C2

       7 - SEL$6D6869C2 / T2@SEL$2

       8 - SEL$6D6869C2 / T2@SEL$2

       9 - SEL$6D6869C2 / WORKFLOWCENTERSETTINGDETAIL@SEL$3

      10 - SEL$6D6869C2 / T1@SEL$2

      11 - SEL$6D6869C2 / T1@SEL$2

      12 - SEL$6D6869C2 / WORKFLOW_BASE@SEL$5

      13 - SEL$6D6869C2 / WORKFLOW_BASE@SEL$5

      14 - SEL$6D6869C2 / WORKFLOWCENTERSETTINGDETAIL@SEL$4

    Predicate Information (identified by operation id):

    ---------------------------------------------------

       5 - access("T2"."WORKFLOWTYPE"=TO_NUMBER("CONTENT"))

       7 - filter("T2"."VIEWTYPE"=0 AND "T2"."ISLASTTIMES"=1)

       8 - access(("T2"."ISREMARK"='7' OR "T2"."ISREMARK"='8' OR "T2"."ISREMARK"='9') AND "T2"."USERID"=695 

                  AND "T2"."USERTYPE"=0)

       9 - access("EID"=962 AND "TABID"=5 AND "TYPE"='typeid')

      10 - filter(("T1"."DELETED"=0 OR "T1"."DELETED" IS NULL) AND ("T1"."CURRENTSTATUS" IS NULL OR 

                  "T1"."CURRENTSTATUS"<>1))

      11 - access("T1"."REQUESTID"="T2"."REQUESTID")

      12 - filter("ISVALID"='1' OR "ISVALID"='3')

      13 - access("T2"."WORKFLOWID"="ID")

      14 - access("EID"=962 AND "TABID"=5 AND "TYPE"='flowid')

           filter("T2"."WORKFLOWID"=TO_NUMBER("CONTENT"))

    Column Projection Information (identified by operation id):

    -----------------------------------------------------------

       1 - (#keys=0) COUNT(*)[22]

       2 - (#keys=0) 

       3 - (#keys=0) "T2"."WORKFLOWID"[NUMBER,22]

       4 - (#keys=0) "T2"."WORKFLOWID"[NUMBER,22]

       5 - (#keys=1) "T2"."REQUESTID"[NUMBER,22], "T2"."WORKFLOWID"[NUMBER,22]

       6 - "T2"."REQUESTID"[NUMBER,22], "T2"."WORKFLOWID"[NUMBER,22], "T2"."WORKFLOWTYPE"[NUMBER,22]

       7 - "T2"."REQUESTID"[NUMBER,22], "T2"."WORKFLOWID"[NUMBER,22], "T2"."WORKFLOWTYPE"[NUMBER,22]

       8 - "T2".ROWID[ROWID,10]

       9 - "CONTENT"[VARCHAR2,100]

      11 - "T1".ROWID[ROWID,10]

      13 - "WORKFLOW_BASE".ROWID[ROWID,10]

    Note

    -----

       - SQL profile "SYS_SQLPROF_016dd8e4cbcb0000" used for this statement

    -------------------------------------------------------------------------------

    advisor工具没有给出合理的调整,说明advisor工具判断目前的sql执行计划良好,再次执行相关sql结果秒出

    查看DB服务器负载已经正常,调优成功

  • 相关阅读:
    P4932 浏览器 题解
    P1627 [CQOI2009]中位数 题解
    P4626 一道水题 II 题解
    P1439 【模板】最长公共子序列 题解
    P2324 [SCOI2005]骑士精神 题解
    P1784 数独 题解
    浅谈 Dancing Links X 算法
    P5905 【模板】Johnson 全源最短路 题解
    线性预处理阶乘,逆元和组合数
    需要支持多种操作的线段树该如何确定运算顺序?
  • 原文地址:https://www.cnblogs.com/shujuyr/p/13155898.html
Copyright © 2011-2022 走看看