|
原帖由 1038345 于 2010-8-10 15:56 发表 ![]()
数据库版本是15.0.3
select * from master.dbo.syslocks,我在系统不忙时查到只有几条记录,在系统忙时这个表的数据太多了,数据库响应不过来了.
有个笨办法:做个脚本,每5分钟连到数据库里面把sp_lock或者syslocks输出,如果输出文件的尺寸开始增大,则打开输出文件找到持锁最多的进程spid,然后赶快连进去,dbcc traceon(3604) dbcc sqltext(spid),观察个一天两天也就知道是什么业务产生大量的锁了。
自动一点呢,就写个循环执行的程序:开始select spid,max(count(spid)) from syslocks(大概就就这意思),然后dbcc traceon(3604) dbcc sqltext(spid)输出到一张表或者其他地方去,晚了order by一下这张表就完了呗。
还有一个可能性,就是你的业务用了很多临时表,因为ASE 15的系统表开始用行锁了,所以临时表消耗了很多锁资源,这种情况的话可能就要稍麻烦一点,要在创建临时表的时候指定用allpage而不是用缺省的allrows。 |
|