Just nu i M3-nätverket
Gå till innehåll

(Slumpmässigt) Långsam stored procedure


Benk3

Rekommendera Poster

Tjena!

 

Sitter med ett lite större projekt som bland annat innehåller ett par större Stored Procedures i SQL Server 2008 R2 (Express). Mitt problem är att ibland så tar dessa runt 15s (eller mer) att utföra, jämfört med runt 200ms i vanliga fall. Denna ökning i tid sker oftast när man utför den för första gången efter att inte använt den på en längre tid (runt 30 min, ibland mer och ibland mindre).

 

I varje Stored Procedure utförs flera querys, så de returnerar alltså flera Record Sets, och jag har testat att köra dessa separat, query för query, men då stöter jag inte på detta problem. Det kan också tilläggas att dessa Stored Procedures är långa då de innehåller många olika cases (beroende på vilka variabler som skickas in).

 

Jag har också använt mig av "SET STATISTICS TIME ON" för att mäta tiderna för de olika delarna. Det konstiga med denna är att för de olika queries som körs så har jag en normal tid (några millisekunder) men i slutet av av denna output får jag alltså denna långa tid, och jag vet inte vad det är som tar så lång tid att utföra. Här är en mätning för en av dessa Stored Procedures som returnerar 4 record sets:

 

-----------------------------------------------------------------------------

 

SQL Server parse and compile time:

CPU time = 0 ms, elapsed time = 0 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

SQL Server parse and compile time:

CPU time = 0 ms, elapsed time = 0 ms.

SQL Server parse and compile time:

CPU time = 17301 ms, elapsed time = 17778 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

(22 row(s) affected)

 

SQL Server Execution Times:

CPU time = 109 ms, elapsed time = 109 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

(25 row(s) affected)

 

SQL Server Execution Times:

CPU time = 62 ms, elapsed time = 59 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

(10 row(s) affected)

 

SQL Server Execution Times:

CPU time = 16 ms, elapsed time = 22 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

(20 row(s) affected)

 

SQL Server Execution Times:

CPU time = 234 ms, elapsed time = 234 ms.

 

SQL Server Execution Times:

CPU time = 17722 ms, elapsed time = 18204 ms. <-----

 

(1 row(s) affected)

 

SQL Server Execution Times:

CPU time = 0 ms, elapsed time = 0 ms.

 

-----------------------------------------------------------------------------

 

Finns det någon annan slags mätning jag kan utföra för att ta reda på vad som tar de resterande ~18 sekunderna att utföra (efter att man adderat de olika CPU-tiderna för de olika queries). Min tanke är att det kan ha något att göra med cachning, eller att filerna är så stora och innehåller en hel del IF:ar.

 

Tacksam för hjälp! Säg bara till om ni behöver någon mer information.

 

Benk3

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...