sqlserver存储过程查询缓慢锁表分析

背景

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

bash 复制代码
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,按需关联条件。

相关推荐
x***r1519 小时前
Redis Desktop Manager 0.8.8 安装教程(Windows redis-desktop-manager-0.8.8.384详细步骤)
数据库·windows·redis
initialize13069 小时前
Postgresql(Oracle兼容) 到Oracle19.9字符语义
数据库·oracle
稷下元歌10 小时前
七天学会plc 加机器视觉完整笔记:S7-1200 数据类型、存储区与寻址方式(I/Q/M/DB 详解)。
网络·数据库·笔记
潮起鲸落入海10 小时前
mysql 5.x源码安装
数据库·mysql
睡不醒男孩03082310 小时前
第一篇:多云与多模态时代的企业级数据库云管理平台(DBaaS)选型指南
数据库·clup·中启乘数
小二·11 小时前
向量数据库实战
数据库
炘爚11 小时前
Phase 5:MySQL 连接池
数据库·mysql
j_xxx404_11 小时前
MySQL库操作硬核解析:字符集、校验规则、大小写比较、备份恢复与连接排查
运维·服务器·数据库·人工智能·mysql·ai·oracle
minji...12 小时前
MySQL数据库 (五) MySQL表的约束(上),非空约束,默认值约束,零填充约束,主键约束,符合主键
数据库·mysql·表的约束·主键约束·非空约束·复合主键·零填充约束
拾贰_C12 小时前
【python | installation 】python 安装 | Windows | 命令使用
linux·数据库·ubuntu