查看当前数据库正在运行的Session
2015-08-15 21:31
411 查看
当数据库运行比较缓慢时,我们需要实时查看当前有什么Session在运行,获得信息越完整,对于分析低性能的原因越有帮助。根据之前调优的经历,简单几步分析如下:
1.通过SQL Server内置的Sp_who查询
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/23/c406b9fe77ce3fc2eba4b242e7fc18dc.jpg)
2.更深入的可以通过Sp_who2查询
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/23/64c26f359a5c23b3120423f62bdf3dd8.jpg)
3.比第2点更丰富的,可以通过下面的语句,不但可以查询出当前executing_statement,还可以获取到当前语句的执行计划
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/23/4ac97375b948bddfdaf761b9ea0503b4.jpg)
--语句如下:
---------------------------------------------------------------------------------------------------------
SameZhao
1.通过SQL Server内置的Sp_who查询
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/23/c406b9fe77ce3fc2eba4b242e7fc18dc.jpg)
2.更深入的可以通过Sp_who2查询
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/23/64c26f359a5c23b3120423f62bdf3dd8.jpg)
3.比第2点更丰富的,可以通过下面的语句,不但可以查询出当前executing_statement,还可以获取到当前语句的执行计划
![](https://oscdn.geek-share.com/Uploads/Images/Content/202003/23/4ac97375b948bddfdaf761b9ea0503b4.jpg)
--语句如下:
SELECT des.session_id , des.status , des.login_name , des.[HOST_NAME] , der.blocking_session_id , DB_NAME(der.database_id) AS database_name , der.command , des.cpu_time , des.reads , des.writes , dec.last_write , des.[program_name] , der.wait_type , der.wait_time , der.last_wait_type , der.wait_resource , CASE des.transaction_isolation_level WHEN 0 THEN 'Unspecified' WHEN 1 THEN 'ReadUncommitted' WHEN 2 THEN 'ReadCommitted' WHEN 3 THEN 'Repeatable' WHEN 4 THEN 'Serializable' WHEN 5 THEN 'Snapshot' END AS transaction_isolation_level , OBJECT_NAME(dest.objectid, der.database_id) AS OBJECT_NAME , SUBSTRING(dest.text, der.statement_start_offset / 2, ( CASE WHEN der.statement_end_offset = -1 THEN DATALENGTH(dest.text) ELSE der.statement_end_offset END - der.statement_start_offset ) / 2) AS [executing statement] , deqp.query_plan FROM sys.dm_exec_sessions des LEFT JOIN sys.dm_exec_requests der ON des.session_id = der.session_id LEFT JOIN sys.dm_exec_connections dec ON des.session_id = dec.session_id CROSS APPLY sys.dm_exec_sql_text(der.sql_handle) dest CROSS APPLY sys.dm_exec_query_plan(der.plan_handle) deqp --WHERE des.session_id <> @@SPID ORDER BY des.session_id
---------------------------------------------------------------------------------------------------------
SameZhao
相关文章推荐
- 查看Oracle中是否有锁表的sql
- 页面化操作数据库
- MongoDB Helper的简单封装
- MongoDB的一些基本操作
- mysql 启动错误
- Oracle数据库基础
- oracle锁表解除
- MySQL与Oracle的语法区别详细对比
- 视图、存储过程
- Oracle数据库表被锁
- xorm使用pgsql的例子
- 【学习笔记】C++操作redis库
- Memcahce(MC)系列(两)Linux下一个Memcache安装
- 获取表SQLSERVER 的表结构信息(字段名,长度,精度,类型,NULL,ID,PRI)
- lnmp环境安装(3)-mysql源码编译安装
- db2 数据库的历史数据分离,提高业务系统的性能
- MySQL的完全卸载
- mongodb 的服务启动和基本操作命令
- 数据库范式详解
- Oracle学习笔记20150815多表查询