首页 > 其他分享 >管理工具造成的阻塞

管理工具造成的阻塞

时间:2023-01-09 12:22:55浏览次数:40  
标签:语句 TRANSACTIONS 管理工具 阻塞 造成 SQL IMPLICIT

背景

上午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选项。开启该选项意味着每打开一个新的查询窗口后,管理工具先自动执行SET IMPLICIT_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+客户,覆盖互联网、市政、交通、电信、医疗、教育、电力、制造业等各个领域。

 

 

 

标签:语句,TRANSACTIONS,管理工具,阻塞,造成,SQL,IMPLICIT
From: https://www.cnblogs.com/zhuancloud/p/17036650.html

相关文章

  • 数据库阻塞查询语句 SQL SERVER
    --查询CPU占用最高的SQL语句SELECTtotal_worker_time/execution_countASavg_cpu_cost,plan_handle,execution_count,(SELECTSUBSTRING(text,statement_sta......
  • SELECT COUNT(*) 会造成全表扫描?回去等通知吧
    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招......
  • SELECT COUNT(*) 会造成全表扫描?回去等通知吧
    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校......
  • IconJar - Mac 上的一款多功能图标素材管理工具
    IconJar是一个多功能的图标管理工具,由世界各地的设计师和开发人员使用。在一个应用程序中搜索、组织、预览和检索图标,而不是创建大量的文件夹来存储你的收藏。这款应用针......
  • 类似git 的数据版本管理工具
    git是一个很不错的svc系统,当前基于git的玩法是越来越多了,比如gitops,基于git的数据管理也是包含了不少的开源实现基于git玩法的好处版本化,可以实现特定版本的只读活......
  • nvm之node的版本管理工具
    nvm是什么nvm是一个node的版本管理工具,可以简单操作node版本的切换、安装、查看。等等,与npm不同的是,npm是依赖包的管理工具。下载安装https://github.com/coreybutler/n......
  • 文献与代码管理工具及统计基础
    文献与代码管理工具及统计基础学习方法:好好上网,文献与代码管理工具1.好好上网2.Mendeley3.github1.好好上网,好好学习,好好提问上网入口:搜索引擎(Google、Bing)查文......
  • 零基础理解万向节锁 gimbal lock 造成的影响
    前情提要昨天想突发奇想想去理解之前一直没搞懂的万向节锁,网上看了许多资料说实话没看懂,可能是理论和实际脱离太多了。就连万向节和经常用来演示的平衡环架是啥我都不知道......
  • Docker可视化管理工具 - Portainer
    1.什么是PortainerPortainer是一个轻量级的容器管理UI,可让你轻松管理不同的Docker环境(Docker主机或Swarm群集)。它由可在任何Docker引擎上运行的单个容器组成,旨......
  • 【23期】请你谈谈关于IO同步、异步、阻塞、非阻塞的区别
    同步(synchronous)IO和异步(asynchronous)IO,阻塞(blocking)IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asyn......