Archiv pro měsíc: Říjen 2017

dm_exec pohledy a funkce

Handle

Plan_handle
Je hash odvozený z kompilovaného plánu celé dávky, dá se považovat za jednoznačný identifikátor plánu.

Sql_handle
MD5 hash textu celé dávky, tedy včetně komentářů. Je identifikátorem textu dávky. K 1 Sql_handle může existovat více plan_handle, například kvůli různým set options.

Query_hash
Identifikuje podobné statementy lišící se pouze konstantama

Query_plan_hash
Pro jeden query_hash můžeme dostat vice query_plan_hash, protože pro různé parametry můžeme kvůli rozložení dat dostat různé plány.

Pohledy

dm_exec_background_job_queue

  • asynchronní query procesor joby, asynchronní update statistik

dm_exec_background_job_queue_stats

  • agregované statistiky pro asynchronní query processor joby

dm_exec_cached_plans

  • všechny nakešované plány
  • zabraná paměť plánem, počet použití plánu
  • plan_handle
  • dm_exec_connections
  • informace o připojení
  • session_id
  • connection_time
  • last_read – datetime
  • most_recent_sql_handle

dm_exec_query_memory_grants

  • informace o dotazech, které potřebovaly další paměť

dm_exec_query_profiles

  • monitoruje postup ve vykonávání plánu běžícího dotazu

dm_exec_query_optimizer_info

  • informace o optimalizátoru

dm_exec_requests

  • spuštěné requesty

dm_exec_sessions

  • last_request_time, reads, writes, logical_reads, set options

dm_exec_procedure_stats

  • database_id
  • object_id
  • sql_handle
  • plan_handle
  • last_execution_time
  • execution_count
  • max, min, last, total time of physical reads, worker, logical reads, logical writes, elapsed

dm_exec_trigger_stats

  • obdobné jak pro procedury výše

dm_exec_query_stats

  • obdobné jak pro procedury výše
  • navíc:
  • statement_start_offset a statement_end_offset – urcuje statement v ramci davky (nebo v ramci procedury, triggeru)
  • query_hash
  • query_plan_hash
  • statement_sql_handle
  • statement_context_id
  • total, last, min, max rows, dop, grant_kb, used_grant_kb, ideal_grant_kb, reserved_threads, used_threads

dm_exec_query_resource_semaphores

  • má systém dost paměti?
  • dva řádky, jeden pro regular resource semaphore (id 0) a druhý pro small-query resource semaphore (id 1)

Funkce

dm_exec_cached_plan_dependent_objects(plan_handle)

  • řádek pro každý tsql plán, clr plán, cursor asociovaný s plánem

dm_exec_cursors(session_id)

  • informace o otevřených kurzorech
  • sql_handle, statement_start_offset, statement_end_offset

dm_exec_xml_handles(session_id|0)

  • informace o aktivních handlech z sp_xml_preparedocument

dm_exec_query_plan(plan_handle)

  • vrací XML s plánem
  • omezení na 128 úrovní v XML, pokud víc, tak vyhodí chybu

dm_exec_text_query_plan(plan_handle, {statement_start_offset|0|DEFAULT} ,  statement_end_offset|0|DEFAULT})

  • vrací řetězec s XML plánem dotazu
  • je možné zacílit statement
  • výstup není limitován velikostí

dm_exec_input_buffer(session_id, request_id)

  • statement dle session_id a request_id

dm_exec_describe_first_result_set(@tsql, @params, @include_browse_information)

  • informace o prvním vráceném result setu, název sloupce, datový typ, …

dm_exec_describe_first_result_set_for_object(@object_id, @include_browse_information )

  • obdobné, jen pro procedury a triggery zadané skrz @object_id

dm_exec_sql_text(sql_handle | plan_handle)

  • vrací text dotazu, procedury

dm_exec_plan_attributes(plan_handle)

  • vrací tabulku atributů(attribute, value, is_cache_key)
  • zajímavý atribut set_options, kde se dá vyčíst set option připojeni, které mohou ovlivnit výběr exekučního plánu, typicky arith_abort z .net vs. z ssms