zoukankan      html  css  js  c++  java
  • v$lock查询慢原来是MERGE JOIN CARTESIAN

    查询v$LOCK视图耗时四十多秒

     执行计划如下:

     出现了MERGE JOIN CARTESIAN ,难怪慢。

    exec dbms_stats.gather_table_stats(OWNNAME=>'SYS',tabname=>'X$KSUSE');
    exec dbms_stats.gather_table_stats(OWNNAME=>'SYS',tabname=>'X$KSQRS');
    exec dbms_stats.gather_table_stats(OWNNAME=>'SYS',tabname=>'X$KDNSSF');
    exec dbms_stats.gather_table_stats(OWNNAME=>'SYS',tabname=>'X$KSQEQ');
    exec dbms_stats.gather_table_stats(OWNNAME=>'SYS',tabname=>'X$KTADM');
    exec dbms_stats.gather_table_stats(OWNNAME=>'SYS',tabname=>'X$KTATRFIL');
    exec dbms_stats.gather_table_stats(OWNNAME=>'SYS',tabname=>'X$KTATRFSL');
    exec dbms_stats.gather_table_stats(OWNNAME=>'SYS',tabname=>'X$KTATL');
    exec dbms_stats.gather_table_stats(OWNNAME=>'SYS',tabname=>'X$KTSTUSC');
    exec dbms_stats.gather_table_stats(OWNNAME=>'SYS',tabname=>'X$KTSTUSS');
    exec dbms_stats.gather_table_stats(OWNNAME=>'SYS',tabname=>'X$KTSTUSG');
    exec dbms_stats.gather_table_stats(OWNNAME=>'SYS',tabname=>'X$KTCXB');

    收集统计信息后再次执行还是慢,耗时是一样的,执行计划也还是一样,那就禁止merge join cartesian。

    禁止执行 merge join cartesian,可以在系统级别设置隐含参数_optimizer_mjc_enabled=false;

    alter system set "_optimizer_mjc_enabled" = false;

    也可以在SESSION级别设置_optimizer_mjc_enabled=false;

    alter session set "_optimizer_mjc_enabled" = false;

    还可以在单个SQL级别使用HINT来禁止,/*+ OPT_PARAM('_optimizer_mjc_enabled','false') */。

    select */*+ OPT_PARAM('_optimizer_mjc_enabled','false')*/ from v$lock;

    加上hint后就正常了。

     

  • 相关阅读:
    系统调用简单总结
    系统调用原理详解
    总结:c 语言与Linux操作系统的关系
    poj3171 Cleaning Shifts
    洛谷P1032 字串变换
    poj3662 Telephone Lines
    洛谷P1073 最优贸易
    Uva1330/poj1964 City Game
    poj2559/SP1805 Largest Rectangle in a Histogram
    洛谷 P1196 [NOI2002]银河英雄传说
  • 原文地址:https://www.cnblogs.com/historynote/p/14150899.html
Copyright © 2011-2022 走看看