Vigyázni a profilerrel!

Az egyik folyó munkámban profilerrel szerettünk volna szétnézni egy szerveren, hogy lássuk, kik a lassú lekérdezések. Eddig ez minden cégnél zökkenőmentesen ment, mondjuk egy min. 5000-es read filter mellett szépen jött a lista. Esetünkben azonban a profiler bekapcsolása után gyakorlatilag elérhetetlenné vált az sql server, de olyannyira, hogy még be se tudtunk rá lépni, újra kellett indítani. Először azzal ideologizáltuk meg a dolgot, hogy lassú volt a kapcsolat a profilert futtató gép és az sql server között, de ugyanígy lefagyott akkor is, ha egy azonos LAN-on levő gépről futott a kliens.
Esetünkben nem egy sima terhelési minta kellett, hanem kellettek az XML Planek is, gondolom ez feküdte meg a gyomrát, ezek előállítása.
Kevésbé megterhelő módja a valódi planek kinyerésének a management view-k használata. A következő lekérdezés visszaadja a hangoláshoz számomra fontos infókat:

SELECT top 500
OBJECT_NAME(st.objectid) object_name, 

SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,
((CASE statement_end_offset 
WHEN -1 THEN DATALENGTH(st.text)
ELSE QS.statement_end_offset END 
- QS.statement_start_offset)/2) + 1) statement_text,

qs.last_execution_time, 
qs.execution_count, 

qs.total_worker_time, 
qs.total_worker_time / qs.execution_count agv_worker_time,
qs.last_worker_time,

qs.total_logical_reads,
qs.total_logical_reads / qs.execution_count avg_logical_reads,
qs.last_logical_reads,
qp.query_plan as query_plan_text,
xp.query_plan
--into tempdb.dbo.Plans
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(sql_handle) as st
CROSS APPLY sys.dm_exec_text_query_plan(qs.plan_handle, 
qs.statement_start_offset, qs.statement_end_offset) AS qp
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) xp
order by total_worker_time desc

Az utolsó oszlop az xml plan, csak rá kell kattintani, és máris látszik grafikusan a terv. Szenzációsan kényelmes.

6 thoughts on “Vigyázni a profilerrel!

  1. Icebob

    Nagyon hasznos ez a kis script szerintem. Viszont nálam (2005-ös Management Expressben) hiába kattintok utolsó oszlopon a datára…csak xmlben nyitja meg. Miben tudom újra grafikus plan-ben megtekinteni?

  2. Hangyál Zoltán

    Szia!

    Le kellene mentened .sqlplan kiterjesztésű fájlba az xml-t, majd a fájlon kettőt kattintva a Management Studioban megjeleníti grafikusan.

    Zoli

  3. Pingback: Soci blog » Blog Archive » SQL Server magas CPU használat nyomozás és megoldás

  4. Pingback: SQL Server magas CPU használat nyomozás és megoldás - Soczó Zsolt Szakmai blogja - devPortal

Comments are closed.