SUP303 - Trabalhando
com DMV e DMF
Fabricio Catae – Premier Field Engineer
Ioannis 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_requests
SELECT * FROM sys.dm_exec_sessions
SELECT * FROM sys.dm_exec_connections
SELECT * 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_objects
Where 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
Threads
Worker Threads
TASK / TAREFAS
•
Running, Runnable, Suspended
Task
Task
Task
Task
Task
Task
RUNNING
RUNNABLE
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
Request
Request
Request
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 & 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
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
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_id
and a.container_id = p.hobt_id
group by b.database_id,p.object_id,
p.index_id
order 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_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
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
PRÓXIMAS PALESTRAS
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
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
LINKS ÚTEIS
Technet Brasil
http://www.microsoft.com/brasil/technet
http://www.microsoft.com/brasil/technet/comunid
ade/default.mspx
http://forums.microsoft.com/technet-br
Certificações Microsoft
http://www.microsoft.com/brasil/certifique
http://www.microsoft.com/learning
Slava Oks Blog
http://blogs.msdn.com/slavao
Microsoft Most Valuable Professional
http://mvp.support.microsoft.com/
PERGUNTAS E RESPOSTAS
•
Fabricio Catae
Ioannis Xylaras
••
Microsoft Corporate
TechEd 2006: Trabalhando com DMV e DMF

TechEd 2006: Trabalhando com DMV e DMF

  • 1.
    SUP303 - Trabalhando comDMV e DMF Fabricio Catae – Premier Field Engineer Ioannis Xylaras – Premier Field Engineer Microsoft Corporate
  • 2.
    01. 02. 03. 04. 05. • Introdução • Arquitetura do SQLServer • Storage Engine • Relational Engine • Adicionais
  • 3.
    PREMIER FIELD ENGINEER • SuporteGlobal 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 DMVno 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
  • 5.
    DYNAMIC MANAGEMENT OBJECTS • DynamicManagement Objects  Dynamic Management Views (DMV)  Dynamic Management Functions (DMF) • Características  Somente para leitura  Informação em memória  Capturas instantâneas (snapshot)
  • 6.
  • 7.
    TRABALHANDO COM DMVE 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ãoorganizados 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 * fromsys.system_objects Where name like ‘dm_%’ • Books Online 2005  “Dynamic Management Objects”  “sys.dm_exec_requests”
  • 10.
    ARQUITETURA DO SQLSERVER • 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
  • 11.
    STORAGE ENGINE • Infra-estrutura doSQL Server  Thread  Memória  I/O
  • 12.
  • 13.
    TASK / TAREFAS • Running,Runnable, Suspended Task Task Task Task Task Task RUNNING RUNNABLE SUSPENDED
  • 14.
    100% CPU • sys.dm_os_tasks  task_state RUNNING  RUNNABLE Worker Task Worker Task Worker Task Worker Task
  • 15.
  • 16.
    SUSPENDED • Tarefas Bloqueadas  Disco Rede  Linked Server • sys.dm_os_waiting_tasks  session_id  wait_type  wait_duration_ms  resource_description  blocking_session_id
  • 17.
    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
  • 18.
  • 19.
    GERENCIAMENTO DE MEMÓRIA • MóduloReescrito para SQL 2005  Memory Nodes  Memory Clerks  Cache e User Stores  Page Allocators
  • 20.
    DM_OS_MEMORY_* • dm_os_memory_clerks • User e CacheStores  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
  • 21.
  • 22.
    RELATIONAL ENGINE • Execução deQuery • Histórico de Execução • Utilização de Índices
  • 23.
    EXECUÇÃO DE QUERY - session_id - sql_handle -plan_handle - estatísticas - cpu - memória - i/o - duração Session Connection Request Request Request
  • 24.
    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 )
  • 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óscada 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
  • 27.
  • 28.
  • 29.
    TEMPO DE CPUUTILIZADO (MS) • Total_worker_time
  • 30.
    TEMPO TOTAL GASTO(MS) • Total_elapsed_time
  • 31.
    DM_EXEC_QUERY_STATS • Algumas queries nãoaparecem  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 • Verificarque 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 índicesadequados para queries  sys.dm_db_missing_index_details • Utilização de Índices  sys.dm_db_index_usage_stats
  • 34.
  • 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ê podeusar 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 • Aquery 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 – Oque 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 memorypor 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 porstatement • 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çãodos í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ãoatualmente 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
  • 46.
  • 47.
    PRÓXIMAS PALESTRAS Palestra 1: Palestra 2: Palestra3: • 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 Server2005 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
  • 49.
    LINKS ÚTEIS Technet Brasil http://www.microsoft.com/brasil/technet http://www.microsoft.com/brasil/technet/comunid ade/default.mspx http://forums.microsoft.com/technet-br CertificaçõesMicrosoft http://www.microsoft.com/brasil/certifique http://www.microsoft.com/learning Slava Oks Blog http://blogs.msdn.com/slavao Microsoft Most Valuable Professional http://mvp.support.microsoft.com/
  • 50.
    PERGUNTAS E RESPOSTAS • FabricioCatae Ioannis Xylaras •• Microsoft Corporate