首页 > 数据库 >SQL专家云快速解决阻塞

SQL专家云快速解决阻塞

时间:2023-06-19 14:11:44浏览次数:41  
标签:源头 运维 专家 阻塞 会话 SQL 快速

背景

当数据库突然产生严重阻塞时,运维人员要快速找到阻塞的源头并处理,让业务快速恢复。但是大多数运维人员只掌握了sp_who2、sp_lock等简单的语句,存在以下不足:

  • 找不到真正的源头,过程中会误杀掉大量的会话;

  • 无法保留现场,无法为事后分析提供客观的数据支撑;

  • 效率低下,要花费很长的时间才能解决问题。

实时可视化

SQL专家云的实时可视化界面可以非常直观的呈现阻塞情况,活动会话中紫色的圆点代表阻塞,圆点越大表明阻塞个数越多,阻塞越严重。

阻塞树

点击某个时间点的圆点,进入活动会话原始数据页面,SQL专家云对阻塞关系进行分析整理,形成阻塞树,每颗阻塞树的根即为阻塞的源头,方便运维人员快速找到阻塞的源头。如下图,会话125就是阻塞的源头,阻塞了64、75、86等其他会话。

点击会话ID,进入该会话的完整信息页面,可以看到该会话全面的信息,例如执行的语句、客户端机器名、客户端IP地址、内存读写消耗、事务、tempdb消耗等等。

结束会话

除了到数据库服务器中执行KILL语句杀掉会话外,SQL专家云也提供结束会话的功能,而且根据会话的全面信息进行智能分析,提供风险提示,防止忙中出错,在杀掉会话时带来更严重的问题。例如要被杀掉的会话正在执行一条更改行数非常多的更新语句,而且已经执行了很长时间,此时结束会话将会导致长时间的事务回滚,通过该提示可以让DBA更慎重地决定结束会话还是继续等待。

 

事后

不要浪费每一次故障,这都是解决问题的契机,SQL专家云保留着每刻数据库的运行数据,可以通过SQL专家云去回溯问题,找出原因并最终解决问题。很多时候是因为前端业务人员反馈问题才知道数据库发生了阻塞,此时问题已经持续了很长时间。可以在SQL专家云中配置告警,在阻塞的初期通知到运维人员。

标签:源头,运维,专家,阻塞,会话,SQL,快速
From: https://www.cnblogs.com/zhuancloud/p/17491013.html

相关文章

  • 三种批量删除PLSQL写法效率的比对
    我们有一个重要的旧系统,最近夜维出现了一些问题,夜间执行5小时未完成,为了不影响业务,只能早上高峰期之前,DBA手工kill夜维进程。这一个夜维程序采用了PLSQL写的存储过程,通过数据库job定时启动执行。存储过程我很少使用,借着这次机会,补习了下,这个存储过程中的逻辑比较简单,依次删除若干张......
  • 一个执行计划异常变更的案例 - 外传之SQL Profile(下)
    之前的几篇文章:《一个执行计划异常变更的案例-前传》《一个执行计划异常变更的案例-外传之绑定变量窥探》《一个执行计划异常变更的案例-外传之查看绑定变量值的几种方法》《一个执行计划异常变更的案例-外传之rollinginvalidation》《一个执行计划异常变更的案......
  • 一次SQL_ID和HASH_VALUE转换尝试引发的误区
    这篇文章中曾谈到一个隐藏问题:引用原文:“使用@dbsnake大牛的SQL可以知道SQL_ID和HASH_VALUE的一一对应关系:隐藏问题1:这里的截图可能有点问题,结果并不准确,问题就出在这个SQL中使用的算法中,在另一篇博文中会仔细说明这个问题。”问题背景:这里使用以下两个SQL获取SQL_ID对应的HASH_VAL......
  • Seata Saga 模式快速入门和最佳实践
    作者:王特(亦夏)Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata为用户提供了AT、TCC、SAGA、XA等多种事务模式,帮助解决不同业务场景下的事务一致性问题。本文主要介绍SeataSaga模式的使用以及最佳实践,围绕三个部分展开,......
  • MySQL表类型和存储引擎
    基本介绍MySQL的表类型由存储引擎决定,主要包括MyISAM、innoDB、Memory等MySQL数据表主要支持六种类型,分别是:CSV、Memory、ARCHIVE、MRG_MYISAM、MYISAM、InnoDB这六种又分为两类,一类是“事务安全型”,比如:InnoDB;其余都属于第二类,称为“非事务安全型”细节说明MyISAM不支持事务、也不......
  • MySQL时间函数的选择
    Oracle中获取系统当前的时间,可以用sysdate、systimestamp等函数,在MySQL中,同样有类似的函数可以使用,碰巧看到eygle大神最近的文章,短短几行文字,就介绍了MySQL中获取系统当前时间的来龙去脉。在MySQL中,获得系统当前时间可以使用now()函数,这是最简单和应用最广的函数。除此之外,curre......
  • 初探MySQL-小白的Linux安装笔记
    这篇文章是我们组内一位小伙伴垒的文字,亲测每个步骤,真实、可靠、接地气,照着做就能入门Linux下的MySQL安装,欢迎更多的小伙伴能将日常工作中的经验记录下来,分享给其他人,正所谓“独乐乐不如众乐乐”。最近接到一个任务,由于开发环境变化,需要将旧机器上的mysql迁移到新机器上去,其中涉及......
  • 如何找到抛出ORA-00933错误的SQL
    前几天上线,凌晨3点多打车回来的路上,兄弟联系我,提了一个问题,某核心系统,上线的时候,报了很多ORA-00933的错误,明显是应用写的SQL出现了错误导致的,但是因为未将出错的SQL打印到日志中,所以不知道究竟是什么SQL出错了,由于逻辑中涉及到很多的SQL,逐个排查,非常耗时。ORA-00933,意思是“SQLcom......
  • 通过索引提升SQL性能案例一则
    最近有个应用,前端调用后台的一个逻辑很慢,请开发提供了对应逻辑使用的SQL,进行脱敏,示例如下,selectt.AGENTasagent,nvl(sum(casewhent.operation_type='A'then1else0end),0)asDflCount,nvl(sum(casewhent.operation_type=......
  • 小白学习MySQL - 闲聊聊
    众所周知,在DB-Engines的排行榜,一直占据前两位的数据库,就是Oracle和MySQL,Oracle作为关系型数据库的老大,在这个生态圈中,占据着绝对优势,MySQL作为一款面向“开源"的软件,虽然被Oracle曲线收购,相比之下,还是存在着“开源”的血统,而且有很多分支,无论是国外的MariaDB,还是国内的AliSQL,都在发......