SQL专家云快速解决阻塞
背景
当数据库突然产生严重阻塞时,运维人员要快速找到阻塞的源头并处理,让业务快速恢复。但是大多数运维人员只掌握了sp_who2、sp_lock等简单的语句,存在以下不足:
-
找不到真正的源头,过程中会误杀掉大量的会话;
-
无法保留现场,无法为事后分析提供客观的数据支撑;
-
效率低下,要花费很长的时间才能解决问题。
实时可视化
SQL专家云的实时可视化界面可以非常直观的呈现阻塞情况,活动会话中紫色的圆点代表阻塞,圆点越大表明阻塞个数越多,阻塞越严重。
阻塞树
点击某个时间点的圆点,进入活动会话原始数据页面,SQL专家云对阻塞关系进行分析整理,形成阻塞树,每颗阻塞树的根即为阻塞的源头,方便运维人员快速找到阻塞的源头。如下图,会话125就是阻塞的源头,阻塞了64、75、86等其他会话。
点击会话ID,进入该会话的完整信息页面,可以看到该会话全面的信息,例如执行的语句、客户端机器名、客户端IP地址、内存读写消耗、事务、tempdb消耗等等。
结束会话
除了到数据库服务器中执行KILL语句杀掉会话外,SQL专家云也提供结束会话的功能,而且根据会话的全面信息进行智能分析,提供风险提示,防止忙中出错,在杀掉会话时带来更严重的问题。例如要被杀掉的会话正在执行一条更改行数非常多的更新语句,而且已经执行了很长时间,此时结束会话将会导致长时间的事务回滚,通过该提示可以让DBA更慎重地决定结束会话还是继续等待。
事后
不要浪费每一次故障,这都是解决问题的契机,SQL专家云保留着每刻数据库的运行数据,可以通过SQL专家云去回溯问题,找出原因并最终解决问题。很多时候是因为前端业务人员反馈问题才知道数据库发生了阻塞,此时问题已经持续了很长时间。可以在SQL专家云中配置告警,在阻塞的初期通知到运维人员。