## Kedy použiť Keď vieš, že úzke hrdlo je v procedúrach, alebo po release konkrétnej aplikácie. ## Ako čítať výsledok `total_cpu_ms` ukazuje celkovú záťaž, `avg_cpu_ms` a `avg_elapsed_ms` cenu jedného volania. Často volaná lacná procedúra môže byť drahšia než zriedkavá ťažká. > [!WARNING] > Nie všetok T-SQL beží v procedúrach (ad-hoc, ORM). Údaje sa strácajú pri recompile alebo vyhodení plánu z cache. **Oprávnenia:** `VIEW SERVER STATE` (na SQL Server 2022 stačí aj `VIEW SERVER PERFORMANCE STATE`). **Režim:** READ ONLY · **Verzia:** SQL Server 2016 – 2022 ## Súvisiace recepty - [Top 20 dotazov podľa CPU](script.php?id=5&s=top-20-dotazov-podla-cpu)
Skript
Najdrahšie stored procedures (plan cache)
Procedúry z plan cache podľa celkového CPU, s priemerným CPU a trvaním na jedno spustenie.
Parametre skriptu doplň a kopíruj hotový skript
/* DeadlockCafe | Najdrahšie stored procedures (plan cache)
Účel: Procedúry z plan cache podľa celkového CPU, s priemerným CPU a trvaním na jedno spustenie.
Režim: READ ONLY | SQL Server 2016 – 2022, on-premises
*/
SET NOCOUNT ON;
SELECT TOP (30) DB_NAME(database_id) AS database_name,
OBJECT_SCHEMA_NAME(object_id,database_id) AS schema_name,
OBJECT_NAME(object_id,database_id) AS procedure_name,
execution_count, cached_time, last_execution_time,
CAST(total_worker_time/1000.0 AS decimal(18,1)) AS total_cpu_ms,
CAST(total_worker_time/1000.0/NULLIF(execution_count,0) AS decimal(18,2)) AS avg_cpu_ms,
CAST(total_elapsed_time/1000.0/NULLIF(execution_count,0) AS decimal(18,2)) AS avg_elapsed_ms,
total_logical_reads
FROM sys.dm_exec_procedure_stats
ORDER BY total_worker_time DESC;