TechEd 2006: Trabalhando com DMV e DMF
-
Upload
fabricio-catae -
Category
Technology
-
view
83 -
download
3
Transcript of TechEd 2006: Trabalhando com DMV e DMF
SUP303 - Trabalhando com DMV e DMF
Fabricio Catae – Premier Field EngineerIoannis Xylaras – Premier Field Engineer
Microsoft Corporate
01.
02.
03.
04.
05.
•Introdução
•Arquitetura do SQL Server•Storage Engine
•Relational Engine
•Adicionais
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
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
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)
CONSULTAS A DMV/DMF
•Informações internas do SQL Server
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)
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
DEMO
•Select * from sys.system_objectsWhere name like ‘dm_%’
•Books Online 2005 “Dynamic Management Objects” “sys.dm_exec_requests”
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
STORAGE ENGINE
•Infra-estrutura do SQL Server Thread Memória I/O
THREADS
-Threads-Worker Threads-Tasks
Task
ThreadsWorker Threads
TASK / TAREFAS
•Running, Runnable, Suspended
TaskTaskTaskTaskTaskTask
RUNNINGRUNNABLE
SUSPENDED
100% CPU
•sys.dm_os_tasks task_state
RUNNING RUNNABLE
Worker Task
Worker Task
Worker Task
Worker Task
DEMOSNome: Título:
•Fabricio Catae•DMV’s
SUSPENDED
•Tarefas Bloqueadas Disco Rede Linked Server
•sys.dm_os_waiting_tasks session_id wait_type wait_duration_ms resource_description blocking_session_id
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
DEMOSNome: Título:
•Fabricio Catae•DMV’s
GERENCIAMENTO DE MEMÓRIA
•Módulo Reescrito para SQL 2005 Memory Nodes Memory Clerks Cache e User Stores Page Allocators
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
DEMOSNome: Título:
•Fabricio Catae•DMV’s
RELATIONAL ENGINE
•Execução de Query•Histórico de Execução•Utilização de Índices
EXECUÇÃO DE QUERY
-session_id- sql_handle- plan_handle- estatísticas - cpu - memória - i/o - duração
Session
Connection
RequestRequestRequest
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 )
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
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
SQL_HANDLE
•sys.dm_exec_sql_text( @handle )
NÚMERO DE EXECUÇÕES
•Execution_count
TEMPO DE CPU UTILIZADO (MS)
•Total_worker_time
TEMPO TOTAL GASTO (MS)
•Total_elapsed_time
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
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
ÍNDICES
•Falta de índices adequados para queries sys.dm_db_missing_index_details
•Utilização de Índices sys.dm_db_index_usage_stats
DEMOSNome: Título:
•Ioannis Xylaras•DMV’s
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
ADICIONAIS
•Component level dm_repl_*
Replication dm_broker_*
SQL Service Broker dm_fts_*
Full Text Search dm_qn_*
Query Notifications
•GRUPO DE DMV’S
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
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
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
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
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
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
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
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
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
PRÓXIMAS PALESTRAS
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
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
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/
PERGUNTAS E RESPOSTAS•Fabricio Catae Ioannis Xylaras•
•Microsoft Corporate