sqlserver存储过程查询缓慢锁表问题分析步骤

 更新时间:2026年05月15日 10:10:36   作者:菜鸟上路_lbz  
这篇文章给大家介绍sqlserver存储过程查询缓慢锁表问题分析步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

背景

生产环境用户查询项目文件夹报错:

org.springframework.dao.DataAccessResourceFailureException: 
### Error querying database.  Cause: com.microsoft.sqlserver.jdbc.SQLServerException: Read timed out
### The error may exist in com/ht/dp/doc/query/dao/DocQueryDao.xml
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: EXEC Sp_GetCadFolderPriviAll ?, ?, ?,         ?, ?, ?, ?
### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: Read timed out
; Read timed out; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Read timed out

数据库执行存储过程发生了超时,根据用户反馈非必现

分析步骤

将存储过程解析为sql语句,打开sqlsever的执行计划:

可以看到16行 扫描行数达到了298w行,拿到该行:
OBJECT:(.[dbo].[PrjFolder].[ix_PrjFolder_8] AS [a]), SEEK:([a].[PrjID]=[@c_PrjID]) ORDERED FORWARD
可以发现使用了项目id的关联:

这里添加了项目id,导致检索了全项目文件夹;通过分析业务,用户在查询父子级文件夹, JOIN Folder b ON a.ParentID = b.FolderID,已经满足了获取所有的父子级文件夹,无需增加项目id,按需关联条件。

到此这篇关于sqlserver存储过程查询缓慢锁表问题分析步骤的文章就介绍到这了,更多相关sqlserver存储过程查询缓慢锁表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SqlLoader怎么使用

    SqlLoader怎么使用

    SQL*Loader(SQLLDR)是Oracle的高速批量数据加载工具。这是一个非常有用的工具,可用于多种平面文件格式向Oralce数据库中加载数据,本文给大家分享sqlloader怎么使用的相关资料,感兴趣的朋友一起学习吧
    2015-12-12
  • sqlserver下将数据库记录的列记录转换成行记录的方法

    sqlserver下将数据库记录的列记录转换成行记录的方法

    sqlserver下将数据库记录的列记录转换成行记录的方法分享,需要的朋友可以参考下。
    2011-07-07
  • SQLserver2019 Express安装及其一些问题解决

    SQLserver2019 Express安装及其一些问题解决

    本文主要介绍了SQL server 2019 Express 安装及其一些问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • SQL SERVER中的流程控制语句

    SQL SERVER中的流程控制语句

    这篇文章介绍了SQL SERVER中的流程控制语句,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • SQL Server中获取指定范围分页取数的两种方式

    SQL Server中获取指定范围分页取数的两种方式

    在SQL Server中获取指定范围的记录(分页/分批取数),核心依赖 OFFSET/FETCH(SQL Server 2012+ 推荐)和 ROW_NUMBER() 函数(兼容低版本),以下是两种主流方式的详细实现,需要的朋友可以参考下
    2025-12-12
  • SQL中如何添加数据(常见方法及示例)

    SQL中如何添加数据(常见方法及示例)

    SQL全称为Structured Query Language,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧
    2025-07-07
  • 详解SQLServer和Oracle的分页查询

    详解SQLServer和Oracle的分页查询

    分页功能是我们的基本功,必须要牢固掌握。通过对分页算法的整理,希望对实现分页功能更得心应手了,需要的朋友可以参考下
    2015-09-09
  • SqlServer备份数据库的4种方式介绍

    SqlServer备份数据库的4种方式介绍

    这篇文章主要介绍了SqlServer备份数据库的4种方式介绍,本文讲解了用sqlserver的维护计划、通过脚本+作业的方式备份数据库(非xp_cmdshell和xp_cmdshell)、用powershell调用sqlcmd来执行备份命令几种方式,需要的朋友可以参考下
    2015-02-02
  • SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(下)

    SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(下)

    这篇文章主要介绍了SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(下) 的相关资料,需要的朋友可以参考下
    2015-12-12
  • 如何创建SQL Server 2000故障转移群集

    如何创建SQL Server 2000故障转移群集

    如何创建SQL Server 2000故障转移群集...
    2007-01-01

最新评论