SQL Server 检查和处理死锁问题
来源:互联网 发布:kali linux 使用教程 编辑:程序博客网 时间:2024/05/25 01:36
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName
from sys.dm_tran_locks
where resource_type='OBJECT'
-- spid 锁表进程 tableName 被锁表名
--解锁:
declare @spid int Set @spid = 57 --锁表进程
declare @sql varchar(1000) set @sql='kill '+cast(@spid as varchar)exec(@sql)
找出什么被锁定了
系统的反应迟缓意味着你应该做一些调查了。你的查找最好从测定系统发生锁定的数量和频率开始。如果你的系统环境处理事务性很高的话,这样各个应用程序争夺资源就会很常见,从而引起锁定。解决这些问题的关键就在于能够确定被锁定的资源和争夺资源的进程。
sp_lock
sp_lock这个系统存储过程与SQL Server 2000 打包在一起,它将使你对在你系统中发生的锁定有深入的了解。这个程序会从主数据库中的syslockinfo中返回与锁定相关的大量信息,而主数据库是一个包括了所有允许、转换和等待锁定请求信息的系统工作台。
让我们来看一下运行 sp_lock 程序之后,它会为我们提供什么信息:
EXECUTE sp_lock在我的系统中,这是该存储过程返回的内容。sp_lock 返回的信息并不是一目了然的,要获得有用的数据,还需要做一些查找。但是,你也可以复制该存储过程的文本,然后创建一个新的,从而得到关于系统进程的更好的解释。(在这篇文章中,我们将集中讨论sp_lock返回的数据。)
从上面的结果我们可以看到spid、dbid、objid、indid、type、resource、mode和status字段。spid是进程标识号码,用于识别到SQL 服务器的连接。要发现哪些用户和该spid相连,你就要执行存储过程sp_who,并将spid作为一个参数传输给该程序。dbid是锁定发生的数据库,你可以在主数据库中的sysdatabases表格中找到它。字段objid用来显示在数据库中锁定发生所在的对象。要查看这个对象,你可以在主数据库中的sysobjects表格中查询指定的objid。
在以上的屏幕截图中产生的单一记录并不一定能显示正在你的工作环境中发生的真实情况。在运行这个程序时,你想要找到500到1000个甚至更多结果。每一次你执行sp_lock,都将有可能得到不同的结果,因为又发生了新的锁定,而部分旧的锁定已经被解除了。如果你发现sp_lock返回的结果中,大量的结果都有着相同的spid,很有可能该进程正在进行大型的处理,同时这些锁定可能开始阻止新事务的发生。
当你发现一个spid 获得了大量的数据库锁定时,这将有助于确定什么存储过程或语句正在运行。为了达到这个目的,运行以下 DBCC 命令:
检查死锁信息
DBCC INPUTBUFFER(spid)
这个DBCC命令将返回正在EventInfo字段中运行的语句的相关信息,可以显示正在执行的sql命令。
解除死锁
Kill spid
一个可靠的起点
系统运行缓慢可能说明你的表格上有大量的锁定。造成这些锁定的原因较多,如某个用户正在你的系统中运行一个相当长的查询,一个进程占用大量资源或者两个关键进程争夺同一资源,经常造成死锁。
一旦发现你认为正在减缓你系统速度的进程,应该怎么办?在大多数情况下,不能采取任何措施,只能监控系统。结束这个进程并不是明智之举,因为它包括了很多系统锁定,除非你完全肯定不会有其他的负面影响。不然的话,你就应该想办法自动分析锁定状况。还有一个解决办法就是想出一种方法,使得在一天的特定时间内,当系统锁数量达到极限时,发出通知。
你对自己的系统信息收集的越多,在解决问题时,你的优势就越大。
- SQL Server 检查和处理死锁问题
- SQL Server 检查死锁
- SQL Server 检查死锁
- 如何处理SQL Server死锁问题
- SQL Server 死锁处理和优化心得
- SQL Server 死锁处理
- 用 sys.sysprocesses 检查 Sql Server的阻塞和死锁
- SQL Server 数据库死锁状况检查
- 处理sql server的死锁
- SQL Server中处理死锁
- SQL Server中死锁的查询和处理
- sql server死锁的问题
- sql server死锁的问题
- SQL Server解决死锁问题
- 死锁 阻塞的sql server处理
- 性能调优(处理 sql server 死锁)
- 处理sql server的死锁 [kill spid]
- 处理sql server的死锁 [kill spid]
- iOS开发所有KeyboardType与图片对应展示
- @ResponseBody注解 and eval函数
- 《数据结构》实验一: VC编程工具的灵活使用
- Android MediaProvider数据库模式
- Babelfish (map 用法。<string, string>
- SQL Server 检查和处理死锁问题
- ubuntu Android Studio
- ubuntu12.04先编译android2.3.6源代码
- Android中HandlerThread
- IOS ----UIButton用法详解
- Cocos2d-X Box2D中部分方法的重点理解
- C语言中的运算符优先级
- LINUX学习[3]--shell脚本提取文件的文件名、扩展名
- ++i与i++的区别