最近敲代码,突然发现数据库访问特别慢,而且尤其是访问到某一个特定的数据库的时候,特别慢,这种情况下就要仔细检查一下自己的代码咯,可能是自己的sql语句导致了数据库访问过慢,下面是如何查找出来到底是哪一个sql语句导致数据库访问过慢!
我用的数据库是SqlServer
sp_lock
select * from master.dbo.sysdatabases
DBCC INPUTBUFFER(71)
1.
sp_lock查看数据库的锁级别,查看哪一个数据库发生死锁
Mode的值有以下几种:
Mode:锁模式(S:共享锁、U:修改锁、X:排它锁、IS共享意图锁、IX排它意图锁)
来自 http://www.51testing.com/html/05/71305-96791.html
若数据库发生死锁,那么可以根据Mode的值进行判断,找到死锁的数据库id即dbid字段!
2.
select * from master.dbo.sysdatabases
根据dbid字段获取到数据库的名字,这样子就可以定位到数据库了。
(模糊掉了数据库的名字~)
3.
DBCC INPUTBUFFER(71)
根据1步骤中获取到的spid为进程ID号,将进程ID号填入4的sql语句中则可以获取到当前死锁的sql语句了!
番外:
select * from master.dbo.sysobjects 这个语句可以查询数据库中所有的表,与解决问题无意义。