最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

管理工具造成的阻塞

来源:博客园

背景

上午10点50分左右,客户接到SQL专家云的告警短信,数据库发生了严重的阻塞,登录到SQL专家云中发现阻塞的源头是SQL Server Management Studio,KILL掉该会话后解决。但是不理解一条简单的SQL语句为什么会造成阻塞,因此找我们分析下原因。


(资料图片)

现象

从SQL专家云的趋势分析进行回溯,从10点49分开始出现了阻塞,越来越严重,持续了10分钟。

查看当时运行的语句列表,确定此次阻塞的源头是ID为639的会话,状态为sleeping,阻塞了11091、586等大量的会话。

在会话639的完整信息中,发现了语句来源于Microsoft SQL Server Management Studio-查询(数据库管理工具),并且此会话上面还有打开的事务。

根据主机名和IP地址,找到这台机器,在数据库管理工具中发现639这个查询窗口还开着,执行的语句很简单。

在该查询窗口中执行SELECT@@TRANCOUNT,确认有一个打开着的事务,为什么管理工具会自动创建了一个事务,而且还没有提交?这是需要分析的关键。

分析

发现管理工具开启了SET_IMPLICIT_TRANSACTIONS选项。开启该选项意味着每打开一个新的查询窗口后,管理工具先自动执行SETIMPLICIT_TRANSACTIONS ON语句开启IMPLICIT_TRANSACTIONS选项。

微软官方文档对IMPLICIT_TRANSACTIONS的详细描述如下图,原文链接:https://docs.microsoft.com/zh-cn/sql/t-sql/statements/set-implicit-transactions-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15

总结

管理工具中开启了SET_IMPLICIT_TRANSACTIONS选项,导致在查询窗口执行UPDATE语句时自动开启了“隐式的”事务,执行完语句后,没有手动的去提交事务,最终导致了阻塞。SQL Server以简单易用著称,主要体现在提供了一个功能强大的管理工具,但这也是一把双刃剑,图形化封装了实现的细节,使用人员不了解底层的机制,导致了很多问题。作为DBA,不要只依赖管理工具,还要多了解底层原理,努力做到知其然,知其所以然。

北京格瑞趋势科技有限公司是聚焦于数据服务的高新技术企业,成立于2008年,创始团队及核心技术人员来自微软和雅虎。微软数据平台金牌合作伙伴,卫宁健康数据平台战略合作伙伴。通过产品+服务双轮驱动的业务模式,14年间累计服务4000+客户,覆盖互联网、市政、交通、电信、医疗、教育、电力、制造业等各个领域。

关键词: 管理工具 卫宁健康 详细描述