在一些性能测试中,性能瓶颈有时会出现在数据库端,这是我们往往想了解有哪些客户端连接到DB server.
可以通过SPID查看。
1. 利用如下代码找出SPID column坐在的表,这个表应该是sysprocesses。
select T.name,* from sys.system_columns C 。
join sys.all_objects T on C.object_id=T.object_id
where C.name like '%spid%'
补充:如何利用查出column所在的表的名称?
————利用sys.columns 表和sys.tables表 查出column所在的表名,但是有时候0 record is returned,原因有可能是没有一个表包含你所查询的column,另外一个原因,可能是column是个系统表的column,这是你就需要用另外的脚本区查询。
select T.name,* from sys.columns C
join sys.tables T on C.object_id=T.object_id
where C.name like '%spid%'
————利用sys.system_columns 表和sys.all_objects表 查出column所在的表名
select T.name,* from sys.system_columns C 。
join sys.all_objects T on C.object_id=T.object_id
where C.name like '%spid%'
2. 获得哪些访问DB server的机器列表和相关登陆账号信息:
Background | SPID 正在执行后台任务。 |
Sleeping | SPID 当前没有执行任务。 通常,这表示 SPID 正在等待应用程序的命令。 |
Runnable | SPID 当前正在执行任务。 |
Dormant | 与 Sleeping 相同,但 Dormant 还表示在完成 RPC 事件后 SPID 已被重置。 重置将清除 RPC 事件期间所使用的资源。 这是个正常状态,并且 SPID 可用,正在等待执行后续命令。 |
Rollback | SPID 在事务的回滚过程中。 |
Defwakeup | 表示 SPID 正在等待处于释放过程中的资源。 wait resource 字段应当表示提到的资源。 |
Spinloop | 在试图获得用于 SMP 系统并发控制的旋转锁定 (spinlock) 时进程正处于等待中。 |