SQL Server

Jednoduché testování výkonu dotazu

Při ladění dotazu v SQL Serveru máme mnoho pokročilých možností, nicméně v jednoduchosti je někdy síla. Pomocí jednoduchého triku si můžeme zobrazit základní informace a námi laděném dotazu a pravidelně tak ověřovat, zda jsme při jeho ladění úspěšní či nikoliv.

Ukážeme si jak na to s několika základními sloupci pro základní analýzu. Nebude zkoumat exekuční plány ani další detaily, zajímá nás opravdu jen to, jak si dotaz vede.

Základní kód vypadá takto:

SET NOCOUNT ON 

DECLARE @StartTime DATETIME 
DECLARE @CPU INT 
DECLARE @TotalElapsedTime INT 
DECLARE @QueryMemmory INT 
DECLARE @Reads INT 
DECLARE @Writes INT 
DECLARE @LogicalReads INT 
DECLARE @RowCount INT 
DECLARE @LastWaitType NVARCHAR(60) 
SELECT  @StartTime = start_time, @CPU = cpu_time, @TotalElapsedTime = total_elapsed_time, 
        @QueryMemmory = granted_query_memory, @Reads = reads, @Writes = writes, 
        @LogicalReads = logical_reads , @LastWaitType = last_wait_type, @RowCount = row_count 
FROM sys.dm_exec_requests 
WHERE session_id = @@SPID

-- QUERY TO TEST-- 

SELECT COUNT(*) NumOfCols FROM sys.columns 

--/QUERY -- 

SELECT CONVERT(NVARCHAR(20), @StartTime, 114) StartTime, 
       cpu_time - @CPU CPU, total_elapsed_time - @TotalElapsedTime TotalElapsedTime, 
       @QueryMemmory QueryMemmory, reads - @Reads Reads, 
       writes - @Writes Writes, logical_reads - @LogicalReads LogicalReads, 
       last_wait_type LastWaitType, row_count - @RowCount RowCnt 
FROM sys.dm_exec_requests 
WHERE session_id = @@SPID
GO

Vše je opravdu velmi jednoduché:

  1. Nejprve si před vykonáním samotného dotazu uložíme do proměnných stav klíčových sloupců s dynamického systémovou pohledu sys.dm_exec_requests. Pomocí podmínky WHERE session_id = @@SPID zajistíme, že si uložíme hodnoty pouze pro naše aktivní připojení.
  2. Vykonáme dotaz, který sledujeme.
  3. Znovu si načteme ze sys.dm_exec_requests hodnoty sloupců tak, jak vypadají po vykonání dotazu a odečteme od nich hodnoty před spuštěním dotazu uložené v proměnných.

Které sloupce ze systémového pohledu si přidáme, případně zda využijeme i další systémové pohledy a získáme komplexní přehled, je již jen na nás.

Leave a Reply

Your email address will not be published. Required fields are marked *