Sql Server中通过sql命令获取cpu占用及产生锁的sql

获取 Sql Server 中 CPU 占用及产生锁的 SQL 通常需要通过观察系统状态和运行 SQL 的表现来进行,下面将介绍通过 SQL 命令来实现这一目标的完整攻略。

查找 CPU 占用

查询系统进程

可以使用以下的 SQL 命令查询 Sql Server 的相关进程信息,从而获得 CPU 占用情况:

SELECT * FROM sys.sysprocesses WHERE spid > 50 ORDER BY CPU DESC

该命令中,sys.sysprocesses 是 SQL Server 中的系统表,其中包含有关运行在 SQL Server 实例上的用户和系统进程的信息。通过查看此表中的 CPU 列即可获得当前正在消耗 CPU 的运行进程。上述代码查询的是 spid 大于 50 的进程(因为小于或等于 50 的是系统进程),并按 CPU 占用降序排列。

查看 SQL 执行计划

另一个查找 CPU 占用的方式是使用 SQL Server Profiler 或 SQL Server Management Studio 的查询执行计划选项。执行计划可以显示各个 SQL 查询在执行过程中消耗 CPU 和 IO 的情况,从而帮助排查性能瓶颈。

例如,在 SQL Server Management Studio (SSMS) 中,可以打开查询窗口,输入需要分析的 SQL,然后在执行前选择“查询”菜单下的“执行选项”,在弹出窗口中勾选“显示实际执行计划”,执行 SQL 后即可查看到执行计划和相关性能数据。

查找产生锁的 SQL

查看锁等待信息

可以使用以下的 SQL 命令查看 Sql Server 上当前正在等待的锁的信息:

SELECT 
    L.request_session_id AS SPID, 
    DB_NAME(L.resource_database_id) AS DatabaseName, 
    NOTES.last_wait_type AS WaitType, 
    L.resource_type AS ResourceType, 
    L.resource_description AS ResourceDescription,   
    L.request_mode AS RequestMode, 
    L.request_status AS RequestStatus, 
    L.request_owner_type AS RequestOwnerType, 
    L.request_owner_id AS RequestOwnerID, 
    L.request_mode AS RequestMode, 
    L.request_time AS RequestTime,
    Q.text AS QueryText
FROM sys.dm_tran_locks L 
LEFT JOIN sys.dm_exec_sessions S ON L.request_session_id = S.session_id 
OUTER APPLY sys.dm_exec_sql_text(S.sql_handle) AS Q 
OUTER APPLY sys.dm_exec_input_buffer(S.session_id, NULL) AS NOTES     
WHERE L.request_status = 'WAIT' AND S.session_id > 50

该命令使用了 sys.dm_tran_locks 等锁定相关系统表,将正在等待的锁的信息和相关的查询语句一起输出,以便于进一步分析锁等待的具体原因。

查看被锁的资源信息

除了上述的锁等待查询命令外,还可以使用以下的 SQL 命令查看 Sql Server 上被某个进程所锁定的资源对象:

SELECT      SystemProcesses.spid, 
            SystemProcesses.program_name, 
            SystemProcesses.loginame, 
            SystemProcesses.waittype, 
            SystemProcesses.lastwaittype, 
            SystemLocks.ResourceType, 
            SystemLocks.ResourceDescription, 
            SystemLocks.Mode, 
            SystemLocks.Status   
FROM        MASTER.dbo.syslockinfo SystemLocks 
LEFT JOIN   MASTER.dbo.sysprocesses SystemProcesses ON SystemProcesses.spid = SystemLocks.req_spid 
WHERE       SystemProcesses.spid > 50 
ORDER BY    SystemProcesses.spid

该命令中,syslockinfo 是 Sql Server 的系统表,用于记录被锁住的资源信息。该命令通过连表输出了被锁住的资源和相关进程的信息。

通过上述两个 SQL 命令,造成 SQL Server 性能瓶颈的锁等待问题可以得到有效的排查。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Sql Server中通过sql命令获取cpu占用及产生锁的sql - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • Access与sql server的语法区别总结

    Access和SQL Server都是关系型数据库管理系统,二者在语法方面有些许不同。下面是Access和SQL Server语法区别的总结: 1. 创建表格的语法 Access中创建一个表格的语法如下: CREATE TABLE table_name ( column1 datatype, column2 datatype, … ); 而SQL Ser…

    database 2023年5月21日
    00
  • pymysql 插入数据 转义处理方式

    当使用pymysql向MySQL数据库中插入数据时,需要注意字符串中可能含有引号、单引号、反斜杠等特殊字符,这些字符可能导致SQL语句语法出现错误。为了避免这种情况,需要使用转义处理方式,将特殊字符转换为可以被SQL语句安全接收的形式。 以下是pymysql插入数据的转义处理方式: 使用pymysql.escape_string()函数 pymysql.es…

    database 2023年5月22日
    00
  • JAVA线上常见问题排查手段汇总

    JAVA线上常见问题排查手段汇总 为了保证Java应用程序的正常运行,我们需要及时地发现和解决线上出现的各种问题。本文将介绍一些Java线上常见问题排查的手段,供大家参考。 1. JVM监控 1.1 jstat jstat可以查看Java应用程序中主要运行数据区域的状态,包括堆、非堆、类、编译等信息。可以使用以下命令: jstat -gcutil [pid]…

    database 2023年5月22日
    00
  • mysql 5.7.20 win64 安装及配置方法

    MySQL 5.7.20 Win64 安装及配置方法 安装 首先,从MySQL官网下载MySQL 5.7.20的Windows 64位安装程序。下载完成后双击运行安装程序。 在安装向导的第一步中,选择“Custom”(自定义)安装选项。 在第二步中,可以选择你要安装的MySQL组件,选中你所需要的组件即可。在此我选中了“MySQL Server”、“MySQ…

    database 2023年5月22日
    00
  • Oracle查询表里的重复数据方法

    下面是详细讲解“Oracle查询表里的重复数据方法”的完整攻略。 方法一:使用COUNT函数 使用COUNT函数是Oracle查询表中重复数据的一种简单方法。COUNT函数可以用于查询有多少行具有相同的数据。可以在SELECT查询语句中使用GROUP BY和HAVING子句来实现此方法。具体操作步骤如下: 步骤一:使用GROUP BY和COUNT函数按列分组…

    database 2023年5月21日
    00
  • 如何使用Python在MySQL中修改表结构?

    要使用Python在MySQL中修改表结构,可以使用Python的内置模块sqlite3或第三方库mysql-connector-python。以下是使用mysql-connector-python在MySQL中修改表结构的完整攻略: 连接 要连接到MySQL,需要提供MySQL的主机、用户名、和密码。可以使用以下代码连接MySQL: mysql.conne…

    python 2023年5月12日
    00
  • Wampserver2.5配置虚拟主机出现403 Forbidden的处理方案

    标题:Wampserver2.5配置虚拟主机出现403 Forbidden的处理方案 在Wampserver2.5中配置虚拟主机(Virtual Host)时,可能会出现403 Forbidden错误,这是因为默认情况下Wampserver禁止了访问虚拟主机的文件夹权限。下面是解决该问题的步骤。 步骤一:打开httpd-vhosts.conf文件 首先打开W…

    database 2023年5月22日
    00
  • SQL 定位连续的值区间

    SQL定位连续的值区间的攻略通常使用窗口函数和自连接完成,具体步骤如下: 窗口函数生成行编号,按照要查询的列进行排序 在查询语句中使用ROW_NUMBER() OVER (ORDER BY column_name)来生成行编号,按照要查询的列进行排序,这个行编号将作为后面自连接表中的关联条件之一。 将原表自连接 将原表自连接,连接条件为行编号相差一,同时还需…

    database 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部