数据库索引分裂 问题分析

news2024/9/23 3:17:37

1、背景描述:

        某客户反馈在 18 点 30 分左右出现性能问题,活动会话飙升,业务卡顿。

2、问题分析 

         通过awr 可以看到大量的索引分裂等待,和并发的事务槽等待,事务槽的并发等待是由于索引分裂阻塞大量会话导致的并发加剧的问题,所以我们主要看索引分裂的问题。

          通过ASH 信息进行分析,活动会话飙升时刻在18 点32 分,当时阻塞者一直是节点2 的8442 会话,随后被阻塞会话不断飙升,被阻塞会话都是在等待TX – index contention 索引分裂。

          根据ASH 继续分析8442 这个会话的活动情况,可以看到8442 从18 点32 分开始一直到19 点32 分持续1 小时一直在执行一个update 语句,等待事件上看是在等待单块读。

计划上看这个语句执行计划没有发生改变,逻辑读明显增大,在IO上等待严重,执行次数为0

         那么问题就比较明显了,8442 会话执行更新操作,由于该会话一直等待单块读,阻塞了大量会话去等待索引分裂,而实际上8442 正在执行的操作就是索引分裂,那么为什么索引分裂需要持续这么久,扫描这么多的单块读,下面我们在awr 中查看failed probes on index block reclamation 这个指标,总共出现105w 次,平均每秒1152 次 

 

select 
    a.INSTANCE_NUMBER,
    a.BEGIN_INTERVAL_TIME,
    b.STAT_NAME,b.VALUE,
    b.value-lag(b.value,1)over(order by a.begin_interval_time) as intervalvalue
 from 
     dba_hist_snapshot a,
     DBA_HIST_SYSSTAT b 
 where 
     a.instance_number=2 
 and a.INSTANCE_NUMBER=b.INSTANCE_NUMBER 
 and a.SNAP_ID=b.SNAP_ID 
 and b.STAT_NAME='failed probes on index block reclamation' 
 and a.BEGIN_INTERVAL_TIME>sysdate-1 order by 2;

 

那么问题锁定到为什么会扫描大量块不可用呢,这种问题一般在两种场景较为突出

         一种是插入的表正在执行批量DELETE 操作,DELETE 导致出现了大量的空块,但是空块上还存在着事务未提交,当索引分裂时这些被释放的空块会被扫描并检查,当发现上面还有事务没有提交时就会发生failed 。

        另外一种是索引存在大量的碎片,段空间自动管理使用位图去管理段内的空闲空间,  这些Free Block 的要求是status 是75%-100% Free 的, server process 会扫描这些75%-100% Free 的block  并确认这些block  实际上是100% 空的,  如果找到100% Free Block 则使用;如果没有则继续搜索,  直到所有候选block 都被检查过,这个行为叫做 probes on index block reclamation 。每次寻找空块并failed  ,oracle 就会增加这个统计指标

3、结论与建议 

        经过分析本次性能故障是由于索引分裂长时间未结束阻塞大量会话等待索引分裂,索引分裂时间长的原因是由于索引存在较多的碎片导致分裂时出现大量的空块扫描失败failed probes on index block reclamation 。

3.1 建议如下

1.       通过创建hash 索引降低索引分裂的发生频率

2.       定期清理碎片,降低failed probes on index block reclamation 发生频率

3.       避免业务高峰期大批量删除数据

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/69160.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试gitlab-runner

上一篇:Docker安装Gitlab-ruuner_素心如月桠的博客-CSDN博客https://blog.csdn.net/m0_47010003/article/details/127997515 总结: 上一篇中操作到: 📌安装了gitlab-runner,在gitlab中创建一个项目(testci&…

Java匿名内部类

Java匿名内部类\huge{Java匿名内部类}Java匿名内部类 匿名内部类 ①. 概念(定义) 通俗一点来讲匿名内部类就是没有名字的局部内部类。 注意这里的两点: 没有名字局部内部类 ②. 作用 方便创建子类的对象,最终的目的是简化代…

Linux内核Hook系统调用execve

在Linux系统中,用户层程序无法直接控制系统内核,只能通过系统调用。 一般调用顺序为: 用户进程->execve()->syscall()->stub_execve()->sys_execve()-> do_execve()..... 本文章使用的是国产uos-Linux,内核为 4.19.0-amd64-…

数组实现单链表和双链表

全文目录😀 数组实现的优势🤔 单链表😕 初始化😕 头插😕 在下标 k 后面插入元素😕 删除下标 k 后面的元素😕 遍历😵‍💫 双链表🤨 初始化🤨 插入&…

利用Python自制一个批量图片水印添加器

前段时间写了个比较简单的批量水印添加的python实现方式,将某个文件夹下面的图片全部添加上水印。 今天正好有时间就做了一个UI应用的封装,这样不需要知道python直接下载exe的应用程序使用即可。 下面主要来介绍一下实现过程。 首先,还是老…

WebDAV之葫芦儿·派盘 + PDF Expert

PDF Expert 支持WebDAV方式连接葫芦儿派盘。 推荐一款备受称赞的PDF阅读工具PDF Expert,一款超简单的PDF编辑器。 PDF Expert是一款macOS上的办公软件,它具有专业的PDF编辑功能,可以快速从邮件、网页支持PDF打开,支持用户进行阅读、批注等功能,用户可以直接在PDF上进行…

机器学习10线性回归法Linear Regression

文章目录一、线性回归算法简介二、简单线性回归的实现三、向量化运算四、衡量线性回归法的指标,MSE,RMS,MAEMSE均方误差(Mean Squared Error)RSE均方误差(Root Mean Squared Error)平均绝对误差MAE(Mean Ab…

在职场,如何克服拖延症?

在职场,你遇见过这样的情况吗:领导让你写一份方案,你一拖再拖,直到最后一天才打开电脑。 这就是拖延症的表现。很多人做一件事常常拖到截止时间的临界点,才被压力所迫开始做事。 也有的人是因为觉得自己解决不了事情&…

PXE + Kickstart 服务器批量安装Linux系统

一、无人值守安装服务 使用光盘镜像来安装Linux系统的方法,该方法适用于只安装少量Linux系统的情况。如果生产环境中有数百台服务器都需要安装系统,这种方式就不合时宜了。这时,我们就需要使用PXE + TFTP +HTTP + DHCP + Kickstart服务搭建出一个无人值守安装系统。这种无人…

vue中提示框 this.$confirm如何让提示框换行

let confirmText [案件号为response.businessInformation.claimNo, 点击确认跳转到查勘继续操作该案件,点击取消跳转到新建赔案查询页面] const newDatas [] const h this.$createElement for (const i in confirmText) { newDatas.pu…

「Whale 帷幄」SpaceSight 产品升级 | 打造门店数智化未来

11月,「帷幄数智空间 Whale SpaceSight」迎来新的功能更新,一起来看一看,它将为您的门店数字化带来哪些强大助力。 我们将通过三篇系列文章,为您介绍 SpaceSight 在出入口客流分析、店内客流分析、门店巡检三大场景下,…

[附源码]计算机毕业设计JAVA郑工校园二手交易平台网站

[附源码]计算机毕业设计JAVA郑工校园二手交易平台网站 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM…

HTML学生中秋节日网页设计模板 DIV布局大学生中秋节网页作业制作 八月十五中秋静态网页成品代码下载 中秋节日网页设计作品

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

Laravel Valet - macOS 极简主义者的开发环境

1. Lar**el Valet 介绍2. Lar**el Valet 安装3. 测试 Lar**el Valet4. PHP 版本5. 服务站点6. 定制 Valet 驱动7. Valet 常用命令 1. Lar**el Valet 介绍 Lar**el Valet 是 macOS 极简主义者的开发环境。Lar**el Valet 将您的 mac 配置为在您的机器启动时始终在后台运行 Nginx&…

超实用的日志分析工具——Flightplot,你不会还没用过吧

在上一篇文章中已经为大家介绍过Flight Review分析日志工具的具体使用,但是该工具在使用过程中难免存在一些问题,例如:Flight Review工具需要在线浏览,很多时候受制于电脑网络延迟等问题,导致日志信息加载失败&#xf…

win11摄像头黑了用不了的七个解决办法

目录 前言必读 方法一、重置和隐式设置摄像头 方法二、更新windwos驱动 方法三、检查串行总线控制器 方法四、下载驱动精灵来安装驱动 方法五、驱动精灵里面修复 方法六、检查键盘上面有没有物理摄像头按键 方法七、使用万能摄像头 前言必读 读者手册(必读&…

职场经验:为什么要学习自动化测试?过来人告诉你答案

学习自动化这个想法,其实自己在心里已经琢磨了很久,就是一直没付诸实践,觉得现在手工测试已经能满足当前的工作需要,不想浪费时间去学习新的东西,有点时间还不如刷刷视频、看看小说等。 为什么要进行自动化测试&#x…

大量节省实施解决方案的时间和成本——AI vision生态系统

AI Vision是一款对用户友好的工具包 基于AI图像处理可以提高各个行业中的竞争力,已经测试并实现应用的用户无不惊讶于这一系统的速度以及出色成效。但不幸的是,AI Vision尚未得到全面评估,可以理解为黑盒,它不像制造商常常声称的…

如何搭建Docker环境

Docker 是一种虚拟化技术,基于 Linux 的容器机制(Linux Containers,简称 LXC),可以把它近似地理解成是一个“轻量级的虚拟机”,只消耗较少的资源就能实现对进程的隔离保护 使用 Docker 可以把应用程序和它…

MarchineCubes实现思路总结

MarchineCubes定义 是一种基于体素构建三维模型的方式,有些类似《我的世界》中的堆方块,但实际上,建模是以方块之间的交点为中心点,每个cube表示八个象限的相交模型 实现思路 在三维空间中划分网格,每个网格是一个c…