避免资源死锁:识别已打开的事务

news/2024/7/3 4:31:40

死锁往往由于以下原因引起:
1、程序错误,比如一个事务需要操作两个表,由于程序错误在有时是先操作a表后操作b表,有时是先操作b表后操作a表,就有机会互相等待而造成死锁。
2、事务太大,大事务操作的表多,操作步骤也多,死锁的机会也多。
3、性能问题,有些语句性能太差,长时间的加锁容易与其他事务形成死锁。

因为打开的事务可能会死锁资源,引发性能的问题,所以了解在一个专用数据库中哪些事务是打开的是很有帮助的。被死锁的资源可能堵塞其他数据库的用户。

为了找出这些已打开的事务就要查询master数据库中的sysprocesses表。sysprocesses表有一个open_tran的列,它表示已有命令是否是一个打开的事务。如果值大于0表示它是一个已经打开的事务。sysprocesses表还有一个spid的列,表示正在访问SQL Server的系统进程的id。你可以使用spid列作为DBCC INPUTBUFFER()系统函数的参数。只有SQL Server的sysadmins帐号才可以执行这个函数。这个函数的输出首先是spid对应的255字符的命令。你可以由此确定哪个命令是影响数据库性能的罪魁祸首,然后根据spid发出一个KILL命令。

解决死典型方法:(来自微软http://support.microsoft.com/kb/832524/zh-cn)

添加和删除索引。
添加索引提示。
修改应用程序来访问资源类似模式中。
从事务像触发器删除活动。 默认情况下, 触发器是事务。
保持事务尽可能地短。

转载于:https://www.cnblogs.com/choi/archive/2007/01/24/629218.html


http://lihuaxi.xjx100.cn/news/283436.html

相关文章

你绝对想不到,双非本科的我是如何发表 3 篇深度学习 EI 论文的?

PS:本文中的我不是阿广,是原作者。我是sh,黑龙江某双非大学计算机专业本科在读,目前是正在准备考研中,研究生专业也打算申计算机。因为计算机专业竞争比较激烈,加上我自己本科背景不是很好,所以…

linux 大量的TIME_WAIT解决办法

统计在一台前端机上高峰时间TCP连接的情况,统计命令:netstat -n | awk /^tcp/ {S[$NF]} END {for(a in S) print a, S[a]} 结果: 除了ESTABLISHED,可以看到连接数比较多的几个状态是:FIN_WAIT1, TIME_WAIT, CLOSE_WAI…

win7压缩包安装mysql_win7怎么安装mysql5.7.13压缩文件图解

匿名用户1级2016-07-04 回答1、运行mysql安装文件。 2、 按Next,然后选择安装方式,有"Typical(默认)"、"Complete(完全)"、"Custom(用户自定义)",选择第二个选项"Custom",下一步,MySQL S…

这三个Python小技巧你要知道

我们知道,字典的本质是哈希表,本身是无法排序的,但 Python 3.6 之后,字典是可以按照插入的顺序进行遍历的,这就是有序字典,其中的原理,可以阅读为什么 Python3.6 之后字典是有序的。今天分享 3 …

百度宣布:搜索业务总裁向海龙离职,另回购10亿美元股份

整理 | 一一出品 | AI科技大本营(ID:rgznai100)5 月 17 日,百度公布 2019 年第一季度未经审计的财务报告。本季度百度营收 241 亿元(约合35.9亿美元),同比增长15%,不计入此前宣布的资产剥离交易…

重上热搜!北师大教授:给非洲留学生1年10万奖学金真的不算多!

来源 | 考博圈编辑 | 学术君近日,北师大教授“给非洲留学生一年十万左右奖学金并不多”莫名其妙又上了知乎热搜?知乎一时间引起了网友的鸣不平!事情的来龙去脉是这样的:某关于《外国人永久居留管理条例》的“征求意见稿”成热议&a…

开源Jekyll助您构建你的网站

Jekyll 是一个开源的静态网站生成器。你可以使用 Markdown 编写内容,使用 HTML/CSS 来构建和展示,Jekyll 会将其编译为静态的 HTML。Jekyll 是一个开源的静态网站生成器。你可以使用 Markdown 编写内容,使用 HTML/CSS 来构建和展示&#xff0…

Oracle 10G重建EM DB Control.

Oracle 10G R2重建EM DB Control.如果安装后没有修改过IP地址或机器名字,可以跳过下面1和2两步。1.drop configuration files and repository run :emca -deconfig dbcontrol db -repos drop 2. Logon SQLPLUS as user SYS or SYSTEM, and drop the sysman account and mangem…