sqlserver存儲過程查詢緩慢鎖表問題分析步驟
背景
生產(chǎn)環(huán)境用戶查詢項目文件夾報錯:
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
數(shù)據(jù)庫執(zhí)行存儲過程發(fā)生了超時,根據(jù)用戶反饋非必現(xiàn)
分析步驟
將存儲過程解析為sql語句,打開sqlsever的執(zhí)行計劃:

可以看到16行 掃描行數(shù)達(dá)到了298w行,拿到該行:
OBJECT:(.[dbo].[PrjFolder].[ix_PrjFolder_8] AS [a]), SEEK:([a].[PrjID]=[@c_PrjID]) ORDERED FORWARD
可以發(fā)現(xiàn)使用了項目id的關(guān)聯(lián):

這里添加了項目id,導(dǎo)致檢索了全項目文件夾;通過分析業(yè)務(wù),用戶在查詢父子級文件夾, JOIN Folder b ON a.ParentID = b.FolderID,已經(jīng)滿足了獲取所有的父子級文件夾,無需增加項目id,按需關(guān)聯(lián)條件。
到此這篇關(guān)于sqlserver存儲過程查詢緩慢鎖表問題分析步驟的文章就介紹到這了,更多相關(guān)sqlserver存儲過程查詢緩慢鎖表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
將表數(shù)據(jù)生成Insert腳本 比較好用的生成插入語句的SQL腳本
比較好用的生成插入語句的SQL腳本 將表數(shù)據(jù)生成Insert腳本2010-05-05
在SQL?Server中使用?Try?Catch?處理異常的示例詳解
這篇文章主要介紹了如何在?SQL?Server?中使用?Try?Catch?處理異常,通過實例代碼了解 SQL Server 中的 Try-Catch 實現(xiàn),本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
SQLServer數(shù)據(jù)庫游標(biāo)的具體使用
本文主要介紹了SQLServer數(shù)據(jù)庫游標(biāo)的具體使用,游標(biāo)通常用于需要逐行處理數(shù)據(jù)的情況,例如對每一行數(shù)據(jù)進(jìn)行特定的計算或更新操作,下面就一起來了解一下2024-08-08
Spark SQL 2.4.8 操作 Dataframe的兩種方式
這篇文章主要介紹了Spark SQL 2.4.8 操作 Dataframe的兩種方式,方式一是通過dsl操作,方式二是利用sql方式操作,每種方式通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-10-10
sql更新語句中update set from用法實現(xiàn)
本文主要介紹了sql更新語句中update set from用法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02

