zoukankan      html  css  js  c++  java
  • Oracle SQL硬解析和软解析示例

    Oracle的软解析会把预处理的sql放到SGA(共享池)中,避免每次都让oracle做优化和生成查询计划;在Java程序中通常使用预处理语句,不让数据库走硬解析;
     
    下面是使用绑定变量的软解析和硬解析示例:
    CREATE OR REPLACE PROCEDURE proc1
    AS
    BEGIN
      FOR i IN 1..10000
      LOOP
       -- 绑定变量,软解析
        EXECUTE IMMEDIATE 'insert into t values(:x)' USING i;
      END LOOP;
    END;
    /
    
    
    -- 硬解析
    EXECUTE IMMEDIATE 'insert into t values('||i||')';
    

     

    在Oracle中可以通过下面的SQL检查哪些业务SQL没有绑定变量,导致走了硬解析耳没有发挥SQL的最佳性能:

    SELECT distinct to_char(FORCE_MATCHING_SIGNATURE) FORCE_MATCHING_SIGNATURE, SQL_TEXT
    FROM (select SQL_ID,
    SQL_TEXT,
    Q.FORCE_MATCHING_SIGNATURE FORCE_MATCHING_SIGNATURE,
    row_number() over(partition by Q.FORCE_MATCHING_SIGNATURE order by Q.FORCE_MATCHING_SIGNATURE) S_ROW_NUM
    FROM V$SQL Q
    WHERE FORCE_MATCHING_SIGNATURE > 100
    and parsing_schema_name not in
    ('MGMT_VIEW',
    'SYSMAN',
    'MDDATA',
    'OLAPSYS',
    'ORDSYS',
    'ORDPLUGINS',
    'SI_INFORMTN_SCHEMA',
    'MDSYS',
    'ANONYMOUS',
    'XDB',
    'CTXSYS',
    'DMSYS',
    'EXFSYS',
    'WMSYS',
    'ORACLE_OCM',
    'DBSNMP',
    'TSMSYS',
    'DIP',
    'OUTLN',
    'SYS',
    'SYSTEM'))
    WHERE S_ROW_NUM BETWEEN 105 AND 107
    ORDER BY FORCE_MATCHING_SIGNATURE;
    ★★★★★★好记性不如烂笔头★★★★★★
  • 相关阅读:
    第二节:简单工厂模式(静态工厂模式)
    第一节:不使用设计模式的传统方式
    第三章:设计模式概述
    第二节:类与类之间的关系
    高斯混合模型(GMM)
    随机森林
    LDA主题模型
    Adaboost算法
    线性代数
    k-means聚类
  • 原文地址:https://www.cnblogs.com/fubinhnust/p/9925884.html
Copyright © 2011-2022 走看看