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.
Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.
LEAVE A COMMENT
6 COMMENTS
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?
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
Köszönöm!
Köszi Zoli, kicsit zsúfolt most az életem, lassan válaszolok a kérdésekre.