有时遇到数据库的一些性能问题,特别是连接池不够用的情况。
需要定位具体哪个程序,或哪个连接状态,或哪个SQL执行问题,通过下面方法来排查。
-- 按CPU耗费情况倒序查询某个数据库当前连接状态
select *,(select text from sys.dm_exec_sql_text (sysprocesses.sql_handle)) from sysprocesses where dbid= db_id('BetaLeads_DB')
order by cpu desc
-- 根据sql handle查询对应的SQL命令,注意有时效性
select * from sys.dm_exec_sql_text (0x01000D00EFDD5F3610A3AB431402000000000000)
SQL连接状态中的waittype释义
https://docs.microsoft.com/zh-cn/archive/blogs/psssql/the-sql-server-wait-type-repository