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

yizhihongxing

获取 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日

相关文章

  • Javascript new Date().valueOf()的作用与时间戳由来详解

    JavaScript中的new Date().valueOf()用于获取当前时间的时间戳。时间戳指的是自1970年1月1日00:00:00 UTC(世界标准时间)起至当前时间的毫秒数。JavaScript使用时间戳来表示日期和时间,这个时间戳也称为Epoch时间。 JavaScript中的new Date().valueOf()返回的是一个数值,该数值表示1…

    database 2023年5月21日
    00
  • Python实现批量读取图片并存入mongodb数据库的方法示例

    下面是Python实现批量读取图片并存入MongoDB数据库的方法示例的完整攻略。 1. 安装MongoDB数据库和Python驱动 首先需要安装MongoDB数据库和Python驱动。可以从MongoDB官网下载并安装MongoDB数据库。Python驱动我们可以使用pymongo,可以使用pip进行安装: pip install pymongo 2. 连…

    database 2023年5月22日
    00
  • 解决SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法

    当我们在SQL SERVER中备份数据库时,有时会遇到错误提示“操作系统错误5:拒绝访问”。这种情况下,我们无法对数据库进行备份。造成这种错误的原因可能是我们没有足够的权限或者备份路径不正确。 下面是解决“操作系统错误5:拒绝访问”错误的完整攻略: 一、检查数据库备份路径及权限 1.检查备份路径 首先要确认备份文件夹所在路径是否正确,同时可在电脑上新建一个文…

    database 2023年5月21日
    00
  • Redis25:redis的其它模块:队列、位图、HyperLogLog、布隆过滤器、GeoHash

    延时队列 实现队列的一种简单的方式:用zset,其中的score就是剩余时间。 还有一种实现简单队列的方式就是用redis中的list,可以用阻塞读命令blpop、brpop,这样在读不到数据时就会立即进入休眠状态,然后一旦有数据就会醒过来,降低延迟。如果用普通的命令rpush、lpush、lpop、rpop,取不到数据时应该手动设置休眠。注意如果一个读线程…

    Redis 2023年4月11日
    00
  • 织梦DEDECMS建立模型、简单分表、索引优化操作方法

    下面是“织梦DEDECMS建立模型、简单分表、索引优化操作方法”的完整攻略: 建立模型 在织梦CMS中,模型是用来定义文章的属性、字段、分类等信息的。如果需要自定义模型,可以按照以下步骤进行操作: 登录网站管理后台,在左侧菜单中找到“模型管理”,点击进入。 点击“添加新模型”,输入模型名称、模型表名等信息,并设置需要的字段和属性。 完成模型设置后,可以在“模…

    database 2023年5月19日
    00
  • oracle—SQL技巧之(一)连续记录查询sql案例测试

    下面是详细讲解“oracle—SQL技巧之(一)连续记录查询sql案例测试”的完整攻略。 标题 文章标题是“oracle—SQL技巧之(一)连续记录查询sql案例测试”,它表明这篇文章是介绍我们如何使用SQL技巧在oracle数据库中查询连续记录的。 简介 在SQL查询中,有时我们需要查询连续的记录,例如查询某个时间范围内的销售记录等。本篇文章将会介绍如何使…

    database 2023年5月21日
    00
  • MySQL Administrator 登录报错的解决方法

    MySQL Administrator 是一个常用的 MySQL 数据库管理工具,但是在使用过程中,会遇到登录时报错的情况。本文将详细讲解 MySQL Administrator 登录报错的解决方法,并提供示例说明。 问题背景 在使用 MySQL Administrator 登录时,可能会遇到以下报错信息: Could not connect to the …

    database 2023年5月18日
    00
  • php mssql扩展SQL查询中文字段名解决方法

    首先我们来详细讲解一下”php mssql扩展SQL查询中文字段名解决方法”的完整攻略。 问题分析 在使用php扩展的mssql进行SQL查询时,如果查询语句中包含中文字段名,可能会出现乱码或者无法查询到数据的情况。这是因为mssql扩展在处理中文字段名时,会将中文转换成UTF-16编码,导致数据库无法正确识别。 解决方法 解决这个问题的方法比较简单。我们可…

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