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

避免资源死锁:识别已打开的事务相关推荐

  1. 事务_进程 ID 57_与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务

    事务_进程 ID 57_与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品.请重新运行该事务 问题描述 执行下面这个SQL查询语句时,经常会报这个错!事务_进程 ID 57_与另一个进程被死锁在 ...

  2. 怎么解决在打开Visual Studio时的报错“无法找到一个或多个组件”以及关于Visual Studio Installer无法识别已安装的VS并报错找不到路径的问题

    第一个问题:打开Visual Studio时的报错"无法找到一个或多个组件". 情况1:如果是点击安装后桌面生产的Visual Studio的快捷方式而导致出错,建议定位到Visu ...

  3. linux lsof 已打开的文件列表

    lsof是系统管理/安全工具.将这个工具称之为lsof真实名副其实,因为它是指"列出打开文件(lists openfiles)".而有一点要切记,在Unix中一切(包括网络套接口) ...

  4. CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)

    CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array) 目录 输出结果 设计思路 核 ...

  5. usb计算机连接无法连接电脑,如何用数据线连接计算机总是提示无法建立连接,并且USB调试已打开. -...

    您好,建议您更换数据线并再次进行测试. 感谢您的支持,祝您生活愉快! 尊敬的三星用户,您好!建议您按照以下步骤操作: 1. 在待机状态下,单击[取消]-[应用程序]-[开发]-[USB调试],单击复选 ...

  6. 如何利用 Selenium 对已打开的浏览器进行爬虫

    大家好! 在对某些网站进行爬虫时,如果该网站做了限制,必须完成登录才能展示数据,而且只能通过短信验证码才能登录 这时候,我们可以通过一个已经开启的浏览器完成登录,然后利用程序继续操作这个浏览器,即可以 ...

  7. usb调试模式已打开,adb devices显示List of devices attached 解决办法!纽维K333一键ROOT,获取ROOT权限!...

    usb调试模式已打开,adb devices显示老显示List of devices attached .刚开始以为USB线问题,跟朋友借了一根,未果. 更换其他的机子测试就可以显示设备,但是这部纽维 ...

  8. linux 强制刷新文件,vim 如何刷新或重载reload 已打开的文件

    Ref:vim 如何刷新或重载reload 已打开的文件 Just use :e to reload the file.  I believe, if you've made changes to t ...

  9. C# WinForm 在窗口菜单上显示已打开窗体的标题及其窗体的排列

    1. C# WinForm 在窗口菜单上显示已打开窗体的标题 设置窗体菜单的MdiList属性为 True 2.窗体的排列 Code // //  平铺 base.LayoutMdi(MdiLayou ...

最新文章

  1. NOI 2013 矩阵游戏
  2. 给指定服务器加路由,无线路由器如何给终端分配指定的IP地址?
  3. HDU 2234 IDA*
  4. perfdog 性能狗之Jank
  5. 高分选手讲解:如何突破思维圈限,从NLP角度挖掘新的解题思路
  6. 使用PowerDesigner进行面向对象分析与UML建模(转)
  7. ATP-EMTP中的LCC模块电缆线路阅读bergeron模型与JMarti模型数据卡
  8. mybatis-plus整合p6spy
  9. 网络参数配置与常用网络命令使用
  10. postgresql创建序列
  11. android studio实现视频聊天,实现视频通话
  12. 设备综合效率(OEE)的计算方法
  13. python 处理 Excel 表格
  14. 评四女作家的×龙戏凤 (原版)
  15. 变分法求解两点间直线距离最短
  16. 这届年轻人为什么不过618?
  17. linux 配置 ftp 服务器以及 ftp 客户端登录
  18. OpenGL: gluLookAt函数的含义
  19. 解决MySQL远程过程调用失败
  20. 【山外笔记-计算机网络·第7版】第13章:计算机网络名词缩写汇总

热门文章

  1. angular搭建项目步骤_建立健康的Angular项目应采取的步骤
  2. 将Spring Boot项目打包成jar包war包
  3. oracle anbob,Tag Archives: oracle安装 | ANBOB
  4. JavaScript有哪三部分组成?
  5. APP不同上线情况对应的测试流程
  6. Attach Volume 操作(Part II) - 每天5分钟玩转 OpenStack(54)
  7. mysql select * f
  8. php_mongo.dll下载(php操作mongoDB需要)
  9. VS2005字符串资源不能识别转义字符
  10. 基于java+jdbc+servlet+jsp实现图书商城