关闭

Loadrunner学习笔记_锁

907人阅读 评论(0) 收藏 举报
Sql server 上设置的锁的粒度不同,消耗的资源也不同。行锁提高了并发性却要求更多的资源来维护,意向锁可以在一定程度上提高性能(如表级意向锁,SQL Server 仅在表级检查意向锁来确定事务是否可以安全地获取该表上的锁。而无须检查表中的每行或每页上的锁以确定事务是否可以锁定整个表。)
Sql server使用动态锁定策略确定最经济的锁。执行查询时,SQL Server 基于架构和查询的特性自动确定最合适的锁。默认获取锁的连接没有时间限制,但最好自己设置超时的最大时间,以免无限期等待。
[对于锁的详细知识参见sql server 联机从书]
 
 
设置获取锁超时时间:
SET LOCK_TIMEOUT 1800   //设置时间为1800毫秒
SELECT @@LOCK_TIMEOUT // 查看锁超时时间
――
得到的结果是:1800
 
如果没有设置锁超时时间,SELECT @@LOCK_TIMEOUT返回的值为-1。
 
注意:
当语句等待的时间大于 LOCK_TIMEOUT 设置时,系统将自动取消阻塞的语句,并给应用程序返回"已超过了锁请求超时时段"的 1222 号错误信息。
但是,SQL Server 不回滚或取消任何包含该语句的事务。因此,应用程序必须有捕获 1222 号错误信息的错误处理程序。如果应用程序没有捕获错误,则会继续运行,并未意识到事务中的个别语句已取消,从而当事务中的后续语句可能依赖于那条从未执行的语句时,导致应用程序出错。
 
尽管如此,不管因为什么原因,还是会有锁冲突的发生。
对锁的监视:
 
Latches(用于监视称为闩锁的内部 SQL Server 资源锁。监视闩锁以明确用户活动和资源使用情况,有助于查明性能瓶颈。

. Average Latch Wait Ti m e ( m s ) (
平均闩等待时间(毫秒)) 一个SQL Server线程必须等待一个闩的平均时间,以毫秒为单位。如果这个值很高,你可能正经历严重的竞争问题。

. Latch Waits/sec (
闩等待/在闩上每秒的等待数量。如果这个值很高,表明你正经历对资源的大量竞争。

Locks(
提供有关个别资源类型上的 SQL Server 锁的信息。锁加在 SQL Server 资源上(如在一个事务中进行的行读取或修改),以防止多个事务并发使用资源。例如,如果一个排它 (X) 锁被一个事务加在某一表的某一行上,在这个锁被释放前,其它事务都不可以修改这一行。尽可能少使用锁可提高并发性,从而改善性能。可以同时监视 Locks 对象的多个实例,每个实例代表一个资源类型上的一个锁。

Number of Deadlocks/sec(
死锁的数量/导致死锁的锁请求的数量

. Average Wait Time(ms) (
平均等待时间(毫秒)) 线程等待某种类型的锁的平均等待时间

Lock Requests/sec(
锁请求/每秒钟某种类型的锁请求的数量。

Lock blocks:
服务器上锁定块的数量,锁是在页、行或者表这样的资源上。不希望看到一个增长的值。
 
 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:287641次
    • 积分:5175
    • 等级:
    • 排名:第5289名
    • 原创:227篇
    • 转载:4篇
    • 译文:0篇
    • 评论:89条
    最新评论