• oracle动态采样导致数据库出现大量cursor pin s wait on x等待


    生产库中,突然出现了大量的cursor pin s wait on x等待,第一反应是数据库出现了硬解析,查看最近的DDL语句,没有发现DDL。那么有可能这个sql是第一次进入

    在OLTP高并发下产生硬解析,导致出现大量等待。但是,此次 发现等待时间很长,远远超过硬解析应该有的时间,再次分析后发现是动态采样的问题。

    动态采样:在表没有统计信息或者SQL中有临时表是会发生

    生产库环境:统计信息收集关闭,新建的表从来没有收集过统计信息也没有导入统计信息,并且表都很大(一百多G)

    原因:因为表没有统计信息,因此SQL第一次后硬解析是会发生动态采样,但是表很大,导致动态采样的时间很长

    解决方法:

    1.加hint

    select /*+dynamic_sampling(dysam 0)*/* from dysam where id=10;

    2.关闭数据库的动态采样

    alter system set optimizer_dynamic_sampling = 0;

    关闭数据库动态采样要注意,每个SQL都有HINT,不然关闭后,执行计划可能会是错误的。

  • 相关阅读:
    准备工作
    案例分析
    阅读任务
    准备工作
    案例分析作业
    情 202103226-1 编程作业
    阅读任务
    准备工作
    4 20210412-1 原型设计作业
    3 20210405-1 案例分析作业
  • 原文地址:https://www.cnblogs.com/monkey6/p/13993515.html
Copyright © 2020-2023  润新知