惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LangChain Blog
云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
A
About on SuperTechFans
J
Java Code Geeks
量子位
博客园 - 三生石上(FineUI控件)
博客园 - Franky
博客园_首页
H
Hackread – Cybersecurity News, Data Breaches, AI and More
IT之家
IT之家
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - CHOI

Serv-U:快速构建功能强大FTP服务器 安装SQL 2005小记 郎咸平在墨尔本的演讲 IBM ThinkPad R60e 0658 HE1 System.Runtime.InteropService.SEHException外部组件发生异常 严介和在管理创新与企业家成长论坛上的演讲节选 马云:像阿甘一样简单(转) 比较 Microsoft .NET 和 J2EE 的构成技术 选自蔡学镛's Blog 61条面向对象设计的经验原则 《经济半小时》创新论谈:马云 今晚去苏州 经常要用到的ASCII码 记一记 一篇关于感情的文章(转) PS:觉得写得还不错,虽然有些还做不到 经济常识 System.AccessViolationExceptioin尝试读取或写入受保护的内容 关于DLL解释得比较好的文章 使用DUMPBIN命令 这几天听的几首歌的歌词 写在开始工作第4个周五的傍晚
避免资源死锁:识别已打开的事务
CHOI · 2007-01-24 · via 博客园 - CHOI

死锁往往由于以下原因引起:
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)

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