码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Oracle:poor sql导致的latch: cache buffers chains案例


    巡检时,执行如下sql发现长会话:

    SELECT SE.SID,SE.SERIAL#,TO_CHAR(LOGON_TIME,'YYYY-MM-DD HH24:MI:SS'),SE.STATUS,SE.OSUSER,SE.MACHINE,SE.PROGRAM,SE.BLOCKING_SESSION, 
    SE.SQL_ID,SE.PREV_SQL_ID ,SE.EVENT,SE.P1TEXT,SE.P1,SE.P2TEXT,SE.P2,SE.P3TEXT,SE.P3,SE.SECONDS_IN_WAIT 
    FROM SYS.V_$SESSION  SE , SYS.v_$session_wait SW 
            WHERE SE.SID=SW.SID  AND SE.STATUS='ACTIVE'   AND SE.USERNAME NOT IN ('SYS','SYSMAN','DBSNMP') 
            AND (SE.LAST_CALL_ET/86400) > 1 
            AND ( TO_CHAR(SYSDATE,'YYYYMMDD') <> TO_CHAR(SE.LOGON_TIME,'YYYYMMDD') OR SYSDATE-LOGON_TIME >= 24/24 );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Output:
    在这里插入图片描述
    从输出来看,肇事sql_id是08wx0uf3t1gt2,event是latch: cache buffers chains
    这个事件主要原因:
    1.热点数据的争用
    2.低效率的sql

    从如下查询的输出来看,这个sql有大量的逻辑读,判断应该是低效率的sql所致

    SELECT sql_fulltext,disk_reads,buffer_gets FROM V$SQLAREA WHERE SQL_ID='08wx0uf3t1gt2'
    
    
    • 1
    • 2

    Output:
    在这里插入图片描述
    也可查询发生热点块竞争的对象

    select ts#,file#,dbarfil,dbablk,obj ,tch from sys.x$bh where  hladdr in (SELECT p1raw FROM V$SESSION WHERE event='latch: cache buffers chains')
    order by tch desc
    
    • 1
    • 2

    Output:
    在这里插入图片描述
    可以看出是CES_FACT_INM表

    select owner,object_name,object_id,object_type from dba_objects where data_object_id=51983
    
    
    • 1
    • 2

    Output
    在这里插入图片描述

     SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('08wx0uf3t1gt2'))
    
    • 1

    Ouput:
    在这里插入图片描述
    在这里插入图片描述
    从上面的输出来看,尽管对CES_FACT_INM表的访问走了索引,但从底下的谓词来看,我们还可以针对filter部分建立一个function index:

     create index IDX_FUNC_CES_FACT_INM on
        CESUSER.CES_FACT_INM(DECODE(SYS_OP_C2C("DECR_TYPE"),'EX',"SUP_AJU_NO",'27',
        "SUP_AJU_NO","AJU_NO"));
    
    • 1
    • 2
    • 3

    再次查看执行计划,发现对CES_FACT_INM表的访问走了新建的函数索引,而且cost显著下降
    在这里插入图片描述
    执行很快出结果,用时不到1秒
    在这里插入图片描述
    buffer_gets也显著下降至136

     SELECT sql_fulltext,disk_reads,buffer_gets FROM V$SQLAREA WHERE SQL_ID='08wx0uf3t1gt2'
    
    • 1

    Output:
    在这里插入图片描述

  • 相关阅读:
    地磁查询网站
    Python初级笔记6 函数
    IceRPC之调用管道与传出请求->快乐的RPC
    Cryptographic primitives(密码原语)
    国自然热点 | 一文了解铁死亡及其研究思路
    STL源码阅读小记(六)——Any
    函数和变量总结
    【Azure API Management】实现在API Management服务中使用MI(管理标识 Managed Identity)访问启用防火墙的Storage Account
    基于C语言实现的足球信息查询系统 课程报告+项目源码+演示PPT+项目截图
    深度之眼(十九)——Python:Numpy库
  • 原文地址:https://blog.csdn.net/weixin_43230594/article/details/134557159
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号