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存储过程查询缓慢锁表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SQLserver2019 Express安装及其一些问题解决
本文主要介绍了SQL server 2019 Express 安装及其一些问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-04-04
SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(下)
这篇文章主要介绍了SqlServer应用之sys.dm_os_waiting_tasks 引发的疑问(下) 的相关资料,需要的朋友可以参考下2015-12-12


最新评论