我正在寻找一个sql,它打印出当前持有的所有数据库锁,以及为ASE保留锁的持续时间。 我想定期运行该sql,以便我们可以监视数据库运行状况以查找锁定问题。
答案 0 :(得分:1)
请参阅master..monLocks表以获取已授予锁定和挂起(阻止)锁定请求的列表。
WaitTime
列将显示进程等待请求锁定的秒数。您应该能够使用该表中的其余列来构建所需的查询(注意:您可能需要与其他表联接...取决于您要查找的信息)。
答案 1 :(得分:0)
系统还存储了proc sp_object_stats。来自docs:
“显示表和索引的锁争用,锁等待时间和死锁统计信息”
单个对象的输出如下:
Object Name: pubtune..titles (dbid=7, objid=208003772,lockscheme=Datapages)
Page Locks SH_PAGE UP_PAGE EX_PAGE$
---------- ---------- ---------- ----------
Grants: 94488 4052 4828
Waits: 532 500 776
Deadlocks: 4 0 24
Wait-time: 20603764 ms 14265708 ms 2831556 ms
Contention: 0.56% 10.98% 13.79%
*** Consider altering pubtune..titles to Datarows locking.
默认显示前10个对象。