3. 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
4. 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
7. TRABALHANDO COM DMV E DMF
•
Dynamic Management Objects
Schema: sys
Nome: dm_*
•
Exemplos:
SELECT * FROM sys.dm_exec_requests
SELECT * FROM sys.dm_exec_sessions
SELECT * FROM sys.dm_exec_connections
SELECT * FROM sys.dm_exec_sql_text(@h)
8. 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
9. DEMO
•
Select * from sys.system_objects
Where name like ‘dm_%’
•
Books Online 2005
“Dynamic Management Objects”
“sys.dm_exec_requests”
10. 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
25. 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
26. 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
31. 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
32. 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
33. ÍNDICES
•
Falta de índices adequados para queries
sys.dm_db_missing_index_details
•
Utilização de Índices
sys.dm_db_index_usage_stats
35. 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
36. ADICIONAIS
•
Component level
dm_repl_*
Replication
dm_broker_*
SQL Service Broker
dm_fts_*
Full Text Search
dm_qn_*
Query Notifications
•
GRUPO DE DMV’S
37. 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
38. 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
39. ADICIONAIS
•
Top CPUs procs & batches
Select 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
40. 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 r
join sys.dm_os_tasks t on r.session_id = t.session_id
join sys.dm_exec_sessions s on r.session_id = s.session_id
where s.is_user_process = 0x1
group by r.session_id, r.request_id, r.sql_handle, r.plan_handle,
r.statement_start_offset, r.statement_end_offset
having max(isnull(exec_context_id, 0)) > 0
•
CENÁRIO DE PERFORMANCE
41. 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
42. 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_id
and a.container_id = p.hobt_id
group by b.database_id,p.object_id,
p.index_id
order by buffer_count desc
43. 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
44. 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_scans
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'
•
CENÁRIO DE PERFORMANCE
45. ADICIONAIS
•
Visualizando Índices não atualmente utilizados
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_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
47. PRÓXIMAS
PALESTRAS
Palestra 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 2006
30/11/2006 17:00 - 18:15
•
Ask the Experts
48. LINKS ÚTEIS
SQL Server 2005 System Views Online
http://download.microsoft.com/download/0/d/f/0df
e488e-a335-4480-8a8a-
b405e32f4368/SQL2005_Sys_Views.pdf
Troubleshooting Performance
Problems in SQL 2005
http://www.microsoft.com/technet/prodtechn
ol/sql/2005/tsprfprb.mspx
SQL Server 2005 Books Online
http://www.microsoft.com/technet/prodtechn
ol/sql/2005/downloads/books.mspx
Dynamic Management Views and
Functions
http://msdn2.microsoft.com/en-
us/library/ms188754.aspx