iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >sql server查询语句阻塞优化性能问题怎么解决
  • 574
分享到

sql server查询语句阻塞优化性能问题怎么解决

2023-06-29 22:06:38 574人浏览 安东尼
摘要

这篇文章主要介绍“sql server查询语句阻塞优化性能问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“sql server查询语句阻塞优化性能问题怎么解决”文章能帮

这篇文章主要介绍“sql server查询语句阻塞优化性能问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“sql server查询语句阻塞优化性能问题怎么解决”文章能帮助大家解决问题。

 在生产环境下,有时公司客服反映网页半天打不到,除了在浏览器按F12的Network响应来排查,确定WEB服务器无故障后。就需要检查数据库是否有出现阻塞

当时数据库的生产环境中主表数据量超过2000w,子表数据量超过1亿,且更新和新增频繁。再加上做了同步镜像,很消耗资源。

这时就要新建一个会话,大概需要了解以下几点:

  • 当前活动会话量有多少?

  • 会话运行时间?

  • 会话之间有没有阻塞?

  • 阻塞时间 ?

查询阻塞的方法有很多。有sql 2000 的sp_lock, 有sql 2005及以上的dmv

一. 阻塞查询 sp_lock

执行 exec sp_lock  下面列下关键字段

spid 是指进程ID,这个过滤掉了系统进程,只展示了用户进程spid>50。

dbid 指当前实例下的哪个数据库 , 使用DB_NAME() 函数来标识数据库

type 请求住的模式

mode 锁的请求状态

  • GRANT:已获取锁。

  • CNVRT:锁正在从另一种模式进行转换,但是转换被另一个持有锁(模式相冲突)的进程阻塞。

  • WaiT:锁被另一个持有锁(模式相冲突)的进程阻塞。

总结:当mode 不为GRANT状态时, 需要了解当前锁的模式,以及通过进程ID查找当前sql 语句 

例如当前进程ID是416,且mode状态为WAIT 时,查看方式 DBCC INPUTBUFFER(416)

用sp_lock查询显示的信息量很少,也很难看出谁被谁阻塞。所以当数据库版本为2005及以上时不建议使用。

 二.阻塞查询  dm_tran_locks 

SELECT t1.resource_type,t1.resource_database_id,t1.resource_associated_entity_id,t1.request_mode,t1.request_session_id,t2.blocking_session_idFROM sys.dm_tran_locks as t1INNER JOIN sys.dm_os_waiting_tasks as t2ON t1.lock_owner_address = t2.resource_address;

上面查询只显示有阻塞的会话, 关注blocking_session_id 也就是被阻塞的会话ID,同样使用DBCC INPUTBUFFER来查询sql语句

三.阻塞查询 sys.sysprocesses

SELECT  spid, kpid, blocked, waittime AS 'waitms',  lastwaittype,  DB_NAME(dbid)AS DB,   waitresource,  open_tran, hostname,[program_name], hostprocess,loginame, [status] FROM sys.sysprocesses WITH(NOLOCK)  WHERE    kpid>0  AND  [status]<>'sleeping'  AND spid>50 AND spid<>@@SPID

sys.sysprocesses  能显示会话进程有多少, 等待时间, open_tran有多少事务, 阻塞会话是多少. 整体内容更为详细。
关键字段说明:

  • spid 会话ID(进程ID),SQL内部对一个连接的编号,一般来讲小于50

  • kipid 线程ID

  • blocked: 阻塞的进程ID, 值大于0表示阻塞, 值为本身进程ID表示io操作

  • waittime:当前等待时间(以毫秒为单位)。

  • open_tran: 进程的打开事务数

  • hostname:建立连接的客户端工作站的名称

  • program_name 应用程序的名称。

  • hostprocess 工作站进程 ID 号。

  • loginame 登录名。

    • [status]

    • running = 会话正在运行一个或多个批

    • background = 会话正在运行一个后台任务,例如死锁检测

    • rollback = 会话具有正在处理的事务回滚

    • pending = 会话正在等待工作线程变为可用

    • runnable = 会话中的任务在等待,由scheduler来运行的可执行队列中。(重要)

    • spinloop = 会话中的任务正在等待调节锁变为可用。

    • suspended = 会话正在等待事件(如 I/O)完成。(重要)

    • sleeping = 连接空闲

    • wait resource 格式为 fileid:pagenumber:rid 如(5:1:8235440)

    • kpid=0, waittime=0 空闲连接

    • kpid>0, waittime=0 运行状态

    • kpid>0, waittime>0 需要等待某个资源,才能继续执行,一般会是suspended(等待io)

    • kpid=0, waittime=0 但它还是阻塞的源头,查看open_tran>0 事务没有及时提交。

如果blocked>0,但waittime时间很短,说明阻塞时间不长,不严重
如果status 上有好几个runnable状态任务,需要认真对待。 cpu负荷过重没有及时处理用户的并发请求

关于“sql server查询语句阻塞优化性能问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: sql server查询语句阻塞优化性能问题怎么解决

本文链接: https://www.lsjlt.com/news/326688.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • sql server查询语句阻塞优化性能问题怎么解决
    这篇文章主要介绍“sql server查询语句阻塞优化性能问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“sql server查询语句阻塞优化性能问题怎么解决”文章能帮...
    99+
    2023-06-29
  • sqlserver查询语句阻塞优化性能
     在生产环境下,有时公司客服反映网页半天打不到,除了在浏览器按F12的Network响应来排查,确定web服务器无故障后。就需要检查数据库是否有出现阻塞 当时数据库的生产环...
    99+
    2024-04-02
  • 怎么优化SQL查询语句
    这篇文章主要讲解了“怎么优化SQL查询语句”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么优化SQL查询语句”吧!1、 首先要搞明白什么叫执行计划执行计划...
    99+
    2024-04-02
  • MySQL中怎么优化SQL查询语句
    这期内容当中小编将会给大家带来有关MySQL中怎么优化SQL查询语句,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、应尽量避免在 where 子句中使用!=或...
    99+
    2024-04-02
  • JavaScript 文件加载与阻塞问题之性能优化案例详解
    上来先给一个问题:在书写html页面时,当你要从外部引入js文件时,script标签会放置在哪个位置呢,放置位置不同对页面加载有影响吗? 默认情况下,浏览器是同步加载 JavaScr...
    99+
    2024-04-02
  • sql server怎么排查死锁优化性能
    本篇内容主要讲解“sql server怎么排查死锁优化性能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“sql server怎么排查死锁优化性能”吧!一.概述记得以前客户在使...
    99+
    2023-06-29
  • 模糊查询如何解决sql语句注入问题
    模糊查询解决sql语句注入问题的示例:使用mysql中concat函数可以解决sql注入又能够在位置文件中写%,代码如下:<select id = "selectByName"...
    99+
    2024-04-02
  • php如何解决sql查询语句中中文的问题
    本文小编为大家详细介绍“php如何解决sql查询语句中中文的问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何解决sql查询语句中中文的问题”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、中文字符的...
    99+
    2023-07-05
  • victoriaMetrics代理性能优化问题怎么解决
    这篇文章主要介绍了victoriaMetrics代理性能优化问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇victoriaMetrics代理性能优化问题怎么解决文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-06-29
  • 怎么解决php查询sql乱码问题
    这篇文章给大家分享的是有关怎么解决php查询sql乱码问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php查询sql乱码的解决办法:1、打开相应的代码文件;2、将eval函数里的“return”字符串添加一个...
    99+
    2023-06-22
  • 怎么写出高质量高性能的SQL查询语句
    这篇文章主要讲解了“怎么写出高质量高性能的SQL查询语句”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么写出高质量高性能的SQL查询语句”吧!一、首先要搞明白什么叫执行计划?执行计划是数据...
    99+
    2023-06-05
  • MySQL调优之SQL查询深度分页问题怎么解决
    这篇文章主要讲解了“MySQL调优之SQL查询深度分页问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL调优之SQL查询深度分页问题怎么解决”吧!一、问题引入例如当前存在一...
    99+
    2023-07-05
  • mybatis-plus的sql语句打印问题怎么解决
    本篇内容介绍了“mybatis-plus的sql语句打印问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一种方式:mybatis...
    99+
    2023-06-30
  • 数据库的嵌套查询的性能问题怎么解决
    本文小编为大家详细介绍“数据库的嵌套查询的性能问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“数据库的嵌套查询的性能问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新...
    99+
    2023-03-20
    数据库
  • Go语言中如何解决并发数据库查询优化问题?
    Go语言中如何解决并发数据库查询优化问题?在日常的开发过程中,我们经常会遇到需要从数据库中查询大量数据的场景。而在并发环境下,数据库查询的性能往往会成为瓶颈。本文将介绍一些在Go语言中解决并发数据库查询优化问题的方法,并提供一些具体的代码示...
    99+
    2023-10-22
    优化 数据库 并发
  • 一条sql语句所引发的问题怎么解决
    这篇文章主要介绍“一条sql语句所引发的问题怎么解决”,在日常操作中,相信很多人在一条sql语句所引发的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”一条sql语...
    99+
    2023-01-31
    sql
  • Mybatis对sql表的一对多查询问题怎么解决
    这篇“Mybatis对sql表的一对多查询问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mybatis对sql表...
    99+
    2023-07-02
  • 怎么解决PLSQL连接服务器与执行SQL语句非常慢问题
    本篇内容主要讲解“怎么解决PLSQL连接服务器与执行SQL语句非常慢问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决PLSQL连接服务器与执行SQL语...
    99+
    2024-04-02
  • SQL一些语句执行后出现异常不会回滚的问题怎么解决
    本篇内容主要讲解“SQL一些语句执行后出现异常不会回滚的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL一些语句执行后出现异常不会回滚的问题怎么解决”吧!SQL一些语句执行后出现...
    99+
    2023-07-06
  • 【IDEA优化】:解决MyBatis Mapper 的XML文件SQL语句无法自动提示问题(独家方案,亲测可用)
    一、问题 1.问题场景 IDEA中MyBatis编写mapper的SQL语句的时候无法提示SQL和数据库 2.问题描述 无法正常方便的使用IDEA的提示功能,更准确无误的编写代码 3.本解决方案优势 亲测可用,一劳永逸(IDEA版本 Int...
    99+
    2023-09-01
    mybatis intellij-idea sql java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作