TechEd 2006: Trabalhando com DMV e DMF

51
SUP303 - Trabalhando com DMV e DMF Fabricio Catae – Premier Field Engineer Ioannis Xylaras – Premier Field Engineer Microsoft Corporate

Transcript of TechEd 2006: Trabalhando com DMV e DMF

Page 1: TechEd 2006: Trabalhando com DMV e DMF

SUP303 - Trabalhando com DMV e DMF

Fabricio Catae – Premier Field EngineerIoannis Xylaras – Premier Field Engineer

Microsoft Corporate

Page 2: TechEd 2006: Trabalhando com DMV e DMF

01.

02.

03.

04.

05.

•Introdução

•Arquitetura do SQL Server•Storage Engine

•Relational Engine

•Adicionais

Page 3: TechEd 2006: Trabalhando com DMV e DMF

PREMIER FIELD ENGINEER

•Suporte Global 24x7•Atendimento a contratos Premier Support•Especialista de produto

•Tipos de Serviços Resolução de problemas Análise proativa de ambientes críticos Workshops e Transferência de conhecimento

Page 4: TechEd 2006: Trabalhando com DMV e DMF

MOTIVAÇÃO

•Objetivo Utilizar DMV no dia a dia

•Vantagens Nova ferramenta disponível no SQL 2005 Revela detalhes sobre o funcionamento do servidor Executa tarefas que não são possíveis no SQL 2000

Page 5: TechEd 2006: Trabalhando com DMV e DMF

DYNAMIC MANAGEMENT OBJECTS

•Dynamic Management Objects Dynamic Management Views (DMV) Dynamic Management Functions (DMF)

•Características Somente para leitura Informação em memória Capturas instantâneas (snapshot)

Page 6: TechEd 2006: Trabalhando com DMV e DMF

CONSULTAS A DMV/DMF

•Informações internas do SQL Server

Page 7: TechEd 2006: Trabalhando com DMV e DMF

TRABALHANDO COM DMV E DMF

•Dynamic Management Objects Schema: sys Nome: dm_*

•Exemplos:SELECT * FROM sys.dm_exec_requestsSELECT * FROM sys.dm_exec_sessionsSELECT * FROM sys.dm_exec_connectionsSELECT * FROM sys.dm_exec_sql_text(@h)

Page 8: TechEd 2006: Trabalhando com DMV e DMF

GRUPOS FUNCIONAIS

•DMV/DMF estão organizados em categorias Common Language Runtime (CLR) Database Mirroring Database Execution Indexes I/O Operations Query Notifications Replication Service Broker SQL Server Operating System Transaction

Page 9: TechEd 2006: Trabalhando com DMV e DMF

DEMO

•Select * from sys.system_objectsWhere name like ‘dm_%’

•Books Online 2005 “Dynamic Management Objects” “sys.dm_exec_requests”

Page 10: TechEd 2006: Trabalhando com DMV e DMF

ARQUITETURA DO SQL SERVER•Storage Engine

Infra-estrutura do SQL Server Comunicação com o Sistema Operacional Exemplos:

Gerenciamento de Threads Gerenciamento de Memória Gerenciamento de I/O

Relational Engine Implementação da linguagem SQL Conceito de índices e estatísticas Exemplos:

Compilação Otimização Execução da query

Page 11: TechEd 2006: Trabalhando com DMV e DMF

STORAGE ENGINE

•Infra-estrutura do SQL Server Thread Memória I/O

Page 12: TechEd 2006: Trabalhando com DMV e DMF

THREADS

-Threads-Worker Threads-Tasks

Task

ThreadsWorker Threads

Page 13: TechEd 2006: Trabalhando com DMV e DMF

TASK / TAREFAS

•Running, Runnable, Suspended

TaskTaskTaskTaskTaskTask

RUNNINGRUNNABLE

SUSPENDED

Page 14: TechEd 2006: Trabalhando com DMV e DMF

100% CPU

•sys.dm_os_tasks task_state

RUNNING RUNNABLE

Worker Task

Worker Task

Worker Task

Worker Task

Page 15: TechEd 2006: Trabalhando com DMV e DMF

DEMOSNome: Título:

•Fabricio Catae•DMV’s

Page 16: TechEd 2006: Trabalhando com DMV e DMF

SUSPENDED

•Tarefas Bloqueadas Disco Rede Linked Server

•sys.dm_os_waiting_tasks session_id wait_type wait_duration_ms resource_description blocking_session_id

Page 17: TechEd 2006: Trabalhando com DMV e DMF

DISK I/O

•Tarefas Bloqueadas Data Files: PAGEIOLATCH Log Files: WRITELOG

•sys.dm_io_virtual_file_stats database_id file_id num_of_reads num_of_writes num_of_bytes_read num_of_bytes_written

NG

Auth

Sidep

AC

MM

Page 18: TechEd 2006: Trabalhando com DMV e DMF

DEMOSNome: Título:

•Fabricio Catae•DMV’s

Page 19: TechEd 2006: Trabalhando com DMV e DMF

GERENCIAMENTO DE MEMÓRIA

•Módulo Reescrito para SQL 2005 Memory Nodes Memory Clerks Cache e User Stores Page Allocators

Page 20: TechEd 2006: Trabalhando com DMV e DMF

DM_OS_MEMORY_*

•dm_os_memory_clerks•User e Cache Stores

dm_os_memory_cache_counters dm_os_memory_cache_hash_tables dm_os_memory_cache_clock dm_os_memory_cache_entries

•Object Stores dm_os_memory_pools

Page 21: TechEd 2006: Trabalhando com DMV e DMF

DEMOSNome: Título:

•Fabricio Catae•DMV’s

Page 22: TechEd 2006: Trabalhando com DMV e DMF

RELATIONAL ENGINE

•Execução de Query•Histórico de Execução•Utilização de Índices

Page 23: TechEd 2006: Trabalhando com DMV e DMF

EXECUÇÃO DE QUERY

-session_id- sql_handle- plan_handle- estatísticas - cpu - memória - i/o - duração

Session

Connection

RequestRequestRequest

Page 24: TechEd 2006: Trabalhando com DMV e DMF

REQUEST DMV

•DMV sys.dm_exec_connections sys.dm_exec_sessions sys.dm_exec_requests

•DMF sys.dm_exec_connections( sql_handle ) sys.dm_exec_connections( plan_handle )

Page 25: TechEd 2006: Trabalhando com DMV e DMF

DEMO

•Cenário: 100% CPU•Select * from sys.dm_exec_connections•Select * from sys.dm_exec_sessions•Select * from sys.dm_exec_requests

•Select * from sys.dm_exec_sql_text(@h)•Use substring

•Select * from sys.dm_exec_requests•CROSS APPLY operator

•Select * from sys.dm_exec_plan_handle(@h)•Save query plan to with sqlplan file extension

Page 26: TechEd 2006: Trabalhando com DMV e DMF

HISTÓRICO DE EXECUÇÃO

•Após cada execução, essa DMV é atualizada•Colunas

sql_handle plan_generation_num plan_handle last_execution execution_count total_worker_time total_physical_read/write total_logical_read/write total_elapsed_time

Page 27: TechEd 2006: Trabalhando com DMV e DMF

SQL_HANDLE

•sys.dm_exec_sql_text( @handle )

Page 28: TechEd 2006: Trabalhando com DMV e DMF

NÚMERO DE EXECUÇÕES

•Execution_count

Page 29: TechEd 2006: Trabalhando com DMV e DMF

TEMPO DE CPU UTILIZADO (MS)

•Total_worker_time

Page 30: TechEd 2006: Trabalhando com DMV e DMF

TEMPO TOTAL GASTO (MS)

•Total_elapsed_time

Page 31: TechEd 2006: Trabalhando com DMV e DMF

DM_EXEC_QUERY_STATS

•Algumas queries não aparecem Extended Stored Procedures .NET Stored Procedures Comandos T-SQL (IF, WHILE, etc) Queries triviais

•Existem situações que removem parte das estatísticas

DBCC FREEPROCCACHE Memory Pressure

Page 32: TechEd 2006: Trabalhando com DMV e DMF

DEMO

•Cenário: I/O intensive

•Verificar que não há problemas•SELECT * FROM sys.dm_exec_requests

•Listar todas as queries de sys.dm_exec_query_stats•Identificar os consumidores de CPU•Identificar os responsáveis pelos physical read•Calcular a média de leituras físicas

•Utilizar sql_handle e plan_handle

Page 33: TechEd 2006: Trabalhando com DMV e DMF

ÍNDICES

•Falta de índices adequados para queries sys.dm_db_missing_index_details

•Utilização de Índices sys.dm_db_index_usage_stats

Page 34: TechEd 2006: Trabalhando com DMV e DMF

DEMOSNome: Título:

•Ioannis Xylaras•DMV’s

Page 35: TechEd 2006: Trabalhando com DMV e DMF

ADICIONAIS

•Server level dm_exec_*

Execution of user code and associated connections dm_os_*

low level system (server-wide) info such as memory, locking & scheduling

dm_tran_* Transactions & isolation

dm_io_* Input/Output on network and disks

dm_db_* Databases and database objects

•GRUPO DE DMV’S

Page 36: TechEd 2006: Trabalhando com DMV e DMF

ADICIONAIS

•Component level dm_repl_*

Replication dm_broker_*

SQL Service Broker dm_fts_*

Full Text Search dm_qn_*

Query Notifications

•GRUPO DE DMV’S

Page 37: TechEd 2006: Trabalhando com DMV e DMF

ADICIONAIS

•MEMÓRIA ALOCADA•Você pode usar o sys.dm_os_memory_clerks DMV como exemplo a seguir para identificar quanta memória o SQL Server aloca através do mecanismo do AWE.•Select sum(awe_allocated_kb) / 1024 as [AWE allocated, Mb] from sys.dm_os_memory_clerks

•CENÁRIO DE PERFORMANCE

Page 38: TechEd 2006: Trabalhando com DMV e DMF

ADICIONAIS

•Query plan ineficiente•A query sys.dm_exec_query_stats é um eficiente caminho para determinar qual query está usando a maior CPU cumulativa.•Select • highest_cpu_queries.plan_handle, • highest_cpu_queries.total_worker_time,• q.dbid, q.objectid, q.number, q.encrypted, q.[text]•from • (select top 50 qs.plan_handle, qs.total_worker_time• from sys.dm_exec_query_statssys.dm_exec_query_stats qs• order by qs.total_worker_time desc) as highest_cpu_queries• cross apply sys.dm_exec_sql_text(plan_handle) as q•order by highest_cpu_queries.total_worker_time desc

• CENÁRIO DE PERFORMANCE

Page 39: TechEd 2006: Trabalhando com DMV e DMF

ADICIONAIS

•Top CPUs procs & batchesSelect top 50 •sum(qs.total_worker_time) as total_cpu_time, •sum(qs.execution_count) as total_execution_count,•count(*) as '#_statements',•qt.dbid, qt.objectid, qs.sql_handle,•qt.[text] from sys.dm_exec_query_stats as qs•cross apply sys.dm_exec_sql_text (qs.sql_handle) as qt•group by qt.dbid,qt.objectid, qs.sql_handle,qt.[text]•order by sum(qs.total_worker_time) desc,qs.sql_handle

•CENÁRIO DE PERFORMANCE

Page 40: TechEd 2006: Trabalhando com DMV e DMF

ADICIONAIS

•CPU – O que está executando em paralelo?•Paralelismo é bom para DW, não para OLTP

Select r.session_id,r.request_id,max(isnull(exec_context_id, 0)) as number_of_workers,r.sql_handle,r.statement_start_offset,r.statement_end_offset,r.plan_handle

from sys.dm_exec_requestssys.dm_exec_requests rjoin sys.dm_os_tasks t on r.session_id = t.session_idjoin sys.dm_exec_sessions s on r.session_id = s.session_id

where s.is_user_process = 0x1group by r.session_id, r.request_id, r.sql_handle, r.plan_handle,

r.statement_start_offset, r.statement_end_offsethaving max(isnull(exec_context_id, 0)) > 0

•CENÁRIO DE PERFORMANCE

Page 41: TechEd 2006: Trabalhando com DMV e DMF

ADICIONAIS

•Pressão CPU : Recompilação•Select top 25• sql_text.text,• sql_handle,• plan_generation_num,• execution_count,• dbid,• objectid •from sys.dm_exec_query_statssys.dm_exec_query_stats a• Cross apply sys.dm_exec_sql_text(sql_handle) as sql_text•where plan_generation_num >1•order by plan_generation_num desc

•CENÁRIO DE PERFORMANCE

Page 42: TechEd 2006: Trabalhando com DMV e DMF

ADICIONAIS•Memória: Top memory por objeto & índice•CENÁRIO DE PERFORMANCE

Select b.database_id,p.object_id

,object_name(p.object_id) as objname

,p.index_id

,buffer_count=count(*)from sys.allocation_units a,

sys.dm_os_buffer_descriptorssys.dm_os_buffer_descriptors b,sys.partitions p

where a.allocation_unit_id = b.allocation_unit_idand a.container_id = p.hobt_idgroup by b.database_id,p.object_id, p.index_idorder by buffer_count desc

Page 43: TechEd 2006: Trabalhando com DMV e DMF

ADICIONAIS•Top IOs por statement•SELECT TOP 50• (qs.total_logical_reads + qs.total_logical_writes) /qs.execution_count • as [Avg IO],• substring (qt.text,qs.statement_start_offset/2, (case when qs.statement_end_offset = -1 • then len(convert(nvarchar(max), qt.text)) * 2 • else qs.statement_end_offset end - qs.statement_start_offset)/2) • as query_text,• qt.dbid,• qt.objectid •FROM sys.dm_exec_query_statssys.dm_exec_query_stats qs•cross apply sys.dm_exec_sql_text (qs.sql_handle) as qt•ORDER BY • [Avg IO] DESC

•CENÁRIO DE PERFORMANCE

Page 44: TechEd 2006: Trabalhando com DMV e DMF

ADICIONAIS

•Visualizando a utilização dos índices das tabelas

•Select so.name AS 'Table Name', si.name AS 'index Name', si.type_desc AS 'Index Type', si.index_id AS 'Index ID',us.user_seeks, us.user_scans, us.system_seeks, us.system_scansFROM sys.dm_db_index_usage_statssys.dm_db_index_usage_stats usINNER JOIN sys.objects soON us.object_id = so.object_id INNER JOIN sys.indexes siON so.object_id = si.object_idWHERE so.type = 'U'

•CENÁRIO DE PERFORMANCE

Page 45: TechEd 2006: Trabalhando com DMV e DMF

ADICIONAIS

•Visualizando Índices não atualmente utilizadosSelect so.name AS 'Table Name', si.name AS 'index Name', si.type_desc AS 'Index Type', si.index_id AS 'Index ID',•us.user_seeks, us.user_scans, us.system_seeks, us.system_scans, us.user_lookups, us.system_lookups,us.user_updates,•us.system_updates•--other columns are available•FROM sys.dm_db_index_usage_statssys.dm_db_index_usage_stats us•INNER JOIN sys.objects so ON us.object_id = so.object_id •INNER JOIN sys.indexes si ON so.object_id = si.object_id•WHERE so.type = 'U' AND us.user_seeks = 0•AND us.user_scans = 0 AND us.system_seeks = 0•AND us.system_scans = 0

•CENÁRIO DE PERFORMANCE

Page 46: TechEd 2006: Trabalhando com DMV e DMF

PRÓXIMAS PALESTRAS

Page 47: TechEd 2006: Trabalhando com DMV e DMF

PRÓXIMAS PALESTRASPalestra 1:

Palestra 2:

Palestra 3:

•SUP304 Otimizando os Subsistemas de Discos para o Microsoft Exchange Server 30/11/2006 15:30 - 16:45

•SUP305 Processo de Migração para ISA Server 200630/11/2006 17:00 - 18:15

•Ask the Experts

Page 48: TechEd 2006: Trabalhando com DMV e DMF

LINKS ÚTEIS

SQL Server 2005 System Views Onlinehttp://download.microsoft.com/download/0/d/f/0dfe488e-a335-4480-8a8a-b405e32f4368/SQL2005_Sys_Views.pdf

Troubleshooting Performance Problems in SQL 2005http://www.microsoft.com/technet/prodtechnol/sql/2005/tsprfprb.mspx

SQL Server 2005 Books Online http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx

Dynamic Management Views and Functionshttp://msdn2.microsoft.com/en-us/library/ms188754.aspx

Page 49: TechEd 2006: Trabalhando com DMV e DMF

LINKS ÚTEIS

Technet Brasilhttp://www.microsoft.com/brasil/technet http://www.microsoft.com/brasil/technet/comunidade/default.mspxhttp://forums.microsoft.com/technet-br

Certificações Microsofthttp://www.microsoft.com/brasil/certifique http://www.microsoft.com/learning

Slava Oks Bloghttp://blogs.msdn.com/slavao

Microsoft Most Valuable Professionalhttp://mvp.support.microsoft.com/

Page 50: TechEd 2006: Trabalhando com DMV e DMF

PERGUNTAS E RESPOSTAS•Fabricio Catae Ioannis Xylaras•

•Microsoft Corporate

Page 51: TechEd 2006: Trabalhando com DMV e DMF