文本描述
用spJock诊断SQL Sever的性能问題
【雇务器学院】在IT专家中有一种普遍的误解.就是认为“锁定是不好的东西”, 你必须尽一切吋能保证数据库锁定不会使得进程无法正常运行。为了能够确保一个一致的数 据库环境,在对资源进行修改时,数据库引擎必须利用一种机制来获得对资源的独占权.
SQL Server中也用锁定,它们是指为了达到这种一致性,数据库引擎用来保证每一次 只有一个线程同时访问同一个资源的对象■■如果不用锁定的话,各个进程同时进行数据修改 就nf能发生,这躭会使数据库处于一种不一致的状态《这样看来,锁定就成了好东西:但是, 你应该以特定的方式来计划你的应用程序,让涉及的锁定的数S降到最少。在这篇文章中, 我将讨论一个让你能够分析数据库锁定HS的存储过程.
找出什么被镇定了
系统的反应迟缓意味宥你应该做一些调査了。你的査找最好从测定系统发生锁定的数 受和频串开始.如果你的系统环境处理事务性很高的话,这样各个应用程序争夺资源就会很 常见,从而引起锁定。解决这些问题的关键就在于能够确定被锁定的资源和争夺资源的进程。
sp_lock
sp_lock这个系统存储过程与SQL Server 2000打包在一起,它将使你对在你系统中 发生的锁定有深入的了解。这个程序会从上数据库中的syslockinfo中返回与锁定相关的大 S信息,而主数据库是一个包括了所有允许、转换和等待锁定谙求信息的系统工作台。
让我们来看一下运行sp_lock程序之后.它会为我们提供什么信息:
spid dbid C%)jld Indld Type ResourceModeStatus
53 1 05575343 0 TABISGRANT
EXECUTE sp_lock
在我的系统中.这是该存储过程返回的内容。sp_lock返回的信息并不是一目了然的. 要获得有用的数据,还浠要做一些査找,但是.你也n丨以复制该存储过程的文本,然后创建 一个新的.从而得到关丁系统进程的更好的解杼。(在这篇文章中,我们将集中讨论sp_lock 返回的数据。〉