Soci (Soczó Zsolt) szakmai blogja

2009.03.25.

Vigyázni a profilerrel!

Filed under: Adatbázisok,SQL Server 2005,SQL Server 2008,Szakmai élet — Soczó Zsolt @ 13:43

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 Comments

  1. 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?

    Comment by Icebob — 2009.03.27. @ 09:10

  2. 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

    Comment by Hangyál Zoltán — 2009.03.30. @ 10:32

  3. Köszönöm!

    Comment by Icebob — 2009.03.30. @ 11:05

  4. Köszi Zoli, kicsit zsúfolt most az életem, lassan válaszolok a kérdésekre.

    Comment by Soczó Zsolt — 2009.03.30. @ 11:10

  5. […] a szerver ezt az áteresztő képességet (de gáz ez a szó, nem egy intim betétről írok). A lassú lekérdezések listájában volt egy gyanúsan egyszerű, de rengetegszer meghívott lekérdezés. Ez nem volt indokolt, ezért […]

    Pingback by Soci blog » Blog Archive » SQL Server magas CPU használat nyomozás és megoldás — 2014.03.19. @ 19:46

  6. […] a szerver ezt az áteresztő képességet (de gáz ez a szó, nem egy intim betétről írok). A lassú lekérdezések listájában volt egy gyanúsan egyszerű, de rengetegszer meghívott lekérdezés. Ez nem volt indokolt, ezért […]

    Pingback by SQL Server magas CPU használat nyomozás és megoldás - Soczó Zsolt Szakmai blogja - devPortal — 2014.03.19. @ 19:48

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress