SlideShare uma empresa Scribd logo
1 de 45
Fabio Gentile
Premier Field Engineer
Microsoft
Fabricio Catae
Premier Field Engineer
Microsoft
SQL Server com Foco em
Diagnóstico de Desempenho
CÓDIGO DA SESSÃO: SUP-403
4
Premier Field Engineering
Premier
Field
Engineering
Serviços
Proativos
Serviços
Reativos
Workshop
Plus
Health
Checks &
Risk
Assessment
Programs
Situações
Críticas
5
Agenda
100% CPU
Waits Statistics
6
Definindo Performance
Performance (Desempenho)
Tempo de Resposta ao Usuário
Sintomas de Baixo Desempenho
Alta Utilização de Recursos
7
Cenário: Alto Consumo de CPU
Utilizar o Task Manager
Identificar o processo
Usar DMV para identificar a causa do problema
Custo em CPU
Query rodando
Plano de execução
8
Alto Consumo de CPU
9
Metodologia: Alto consumo de CPU
Confirmar alto consumo de CPU
Task Manager
Performance Monitor
Rodar a query sys.dm_exec_requests
Ordenar o resultado de acordo com cpu_time
Consultar o SQL Text usando o (sql) handle
Consultar o Query Plan usando o (plan) handle
10
Desafio: Como Otimizar?
set @str = CAST(@i as CHAR(10))
insert tbInfo (info) values ( @str )
11
Redefinindo Performance
Performance (Desempenho)
Tempo de Resposta ao Usuário
Tamanho da Fila de Processamento
Utilização de Recursos
Sintomas de Baixo Desempenho
Alta Utilização de Recursos
Presença constante de 100% CPU
Alto consumo de Memória
Bloqueios e Locks entre Queries
12
Análise do Consumo de CPU
Baseia-se no fato de que a THREAD possui dois
estados:
Rodando
Suspensa (Em Espera) CPU
CPU
Wait
13
Metodologia: ?
Recursos
CPU
Disco
Rede
Memoria
CPU
CPU
Wait
14
Wait Statistics
O que são Wait Statistics?
Sempre que uma query inicia a espera por algum
recurso (Disco, Locks, Rede), o SQL Server registra o
tipo e a duração desta espera
Estas informações sobre esperas são retidas e
permitem determinar porque a execução das queries é
mais lenta do que o esperado
15
Wait Statistics
Por que usar Wait Statistics?
Abordagem inicial antes de aprofundar a análise de
performance usando outras ferramentas
Permite encontrar gargalos de performance que não
são óbvios e evita tentativas de eliminação de falsos
gargalos de performance
Permite identificar o maior retorno para os esforços de
ajuste de performance
16
Wait Statistics
Onde encontrar Wait Statistics?
SQL Server DMV:
sys.dm_os_wait_stats
Wait Statistics são acumuladas desde o último restart
da instância do SQL Server, ou do último reset:
DBCC SQLPERF (‘sys.dm_os_wait_stats’, CLEAR)
17
Wait Statistics
sys.dm_os_wait_stats
wait_type:
Tipo da espera
waiting_tasks_count:
Número de esperas deste tipo
wait_time_ms:
Tempo total de espera para este tipo em milissegundos
max_wait_time_ms:
Tempo máximo de espera para este tipo
signal_wait_time:
Diferença entre o tempo em que a espera teminou e o início da execução
18
Wait Statistics
sys.dm_os_wait_stats
19
Wait Statistics
Interpretando Wait Types
Nem todos os wait types indicam problemas ou exigem
ações para serem corrigidos (como esperas associadas
a tarefas em background)
Concentre a análise em esperas por recursos que
podem indicar gargalos:
Disco
CPU
Memória
Locking
Rede
20
Tarefas em Background e Esperas
Determinadas esperas (Wait Types) estão
relacionadas com tarefas que rodam em
background
Exemplo de tarefas de sistema:
FT_IFTS_SCHEDULER_IDLE_WAIT
REQUEST_FOR_DEADLOCK_SEARCH
SQLTRACE_BUFFER_FLUSH
LAZYWRITER_SLEEP
XE_TIMER_EVENT
CHECKPOINT_QUEUE
BROKER_TO_FLUSH
LOGMGR_QUEUE
21
Inserção de Dados
ProcInsertInfo
22
Cenário: Latência na Gravação do Log
Quando a thread espera por uma escrita no
arquivo de LOG, ela fica no modo de espera
Wait type: WRITELOG
Essa espera pode ser observada Online nas DMV
sys.dm_exec_requests
sys.dm_os_tasks
sys.dm_os_waiting_tasks
23
WRITELOG
Gravação do LOG: 1ms
Escrita sequencial
Commit Transaction = 1 escrita em LOG
Limite de Transações/sec
24
Recomendação
Garantir o tempo de acesso ao disco adequado
Ideal: < 1 ms (cache)
Bom: < 5 ms (normal)
...
Desastre Total: > 100 ms
Agrupar as transações excessivamente curtas
dentro de um contexto transacional
BEGIN TRANSACTION / COMMIT
25
Otimizando: Inserção de Dados
26
Cenário: Latência no Acesso aos Discos
Ocorre quando uma thread aguarda por uma
requisição de I/O num arquivo de dados
Wait type: PAGEIOLATCH_*
Esta espera pode ser observada nas DMVs:
sys.dm_os_wait_stats
sys.dm_exec_requests
sys.dm_os_tasks / sys.dm_os_waiting_tasks
sys.dm_io_pending_io_requests
27
Monitoração de I/O pendentes
sys.dm_io_pending_io_requests
28
Latência no Acesso aos Discos
29
Recomendação
Garantir tempos de acesso adequados aos discos
(Physical Disk, Avg. Disk sec/Read e Avg. Disk
sec/Write)
Ideal: < 10 ms
Bom: < 20 ms
...
Ruim: > 100 ms
Diminuir a quantidade de leituras lógicas,
melhorando a estratégia de indexação
Database Engine Tuning Advisor (DTA)
sys.dm_db_missing_index_*
Plano de execução: Missing Index Details
30
Outros Wait Types
31
Breve Resumo
Wait Type Possível significado
PAGELATCH 2:*:* Contenção no TEMPDB em memória
PAGELATCH dbid:*:* Hot-spot em memória (page-split)
PAGEIOLATCH Leitura excessiva de disco
WRITELOG Escrita em disco de log
NETWORKIO Esperando recebimento de pacotes do cliente
SOS_SCHEDULER_YIELD Alto consumo de CPU
RESOURCE_SEMAPHORE Esperando por memória para Workspace
LCK_M_* Bloqueios
32
Problema de Travamento
33
Cenário: Locks
Tipos de Lock
LCK_M_X = Exclusive (Escrita)
LCK_M_S = Shared (Leitura)
LCK_M_U = Update
LCK_M_IX = Intent-Exclusive
LCK_M_IS = Intent-Shared
Diferentes Recursos
Tabela
Página
Linha
Identificador
LCK_M_X sobre o recurso 5:1234567 (dbid=5, objid=1234567)
34
Matriz de Compatiblidade (COMPLETA)
Conflitos = (C)
35
Compatibilidade de Lock
S = Shared/Leitura ( múltiplas leituras )
X = Exclusivo ( bloqueia TODOS )
Intent Lock (IS, IX) – Compatíveis entre si
36
Hierarquia de Locks
Escrita de Linha
TABLE LOCK IX
PAGE LOCK IX
ROW LOCK X
Escrita de Linha
TABLE LOCK IX
PAGE LOCK IX
ROW LOCK X
37
Hierarquia de Locks (2)
Escrita de Linha
TABLE LOCK IX
PAGE LOCK IX
ROW LOCK X
Leitura da Tabela Inteira
TABLE LOCK S
PAGE LOCK -
ROW LOCK -
38
Hierarquia de Locks (3)
Escrita de Linha
TABLE LOCK IX
PAGE LOCK IX
ROW LOCK X
Leitura de Linha
TABLE LOCK IS
PAGE LOCK IS
ROW LOCK S
39
Recomendação
Matriz de Compatibilidade
Range Locks (LCK_M_R*)
Transação em Serializable
Utilize o NOLOCK se necessário
Melhor alternativa: Read Committed Snapshot
SQL tem lock de linha? (ROWLOCK)
Como usar um lock de linha se a query faz TABLE
SCAN?
40
Referências – Wait Stats
SQL Server 2005 Waits and Queues:
http://technet.microsoft.com/en-us/library/cc966413.aspx
Troubleshooting Performance Problems in SQL Server 2005
http://technet.microsoft.com/en-us/library/cc966540.aspx
Troubleshooting Performance Problems in SQL Server 2008
http://technet.microsoft.com/en-us/library/dd672789(SQL.100).aspx
Description of the waittype and lastwaittype columns in the
master.dbo.sysprocesses table in SQL Server 2000 and SQL
Server 2005
http://support.microsoft.com/kb/822101
The SQL Server Wait Type Repository
http://blogs.msdn.com/b/psssql/archive/2009/11/03/the-sql-server-
wait-type-repository.aspx
41
42
Contatos
Fabricio Catae
fcatae@microsoft.com
Fabio Gentile
fgentile@microsoft.com
Blog / Twitter
http://blogs.msdn.com/fcatae
Twitter: @fcatae
© 2008 Microsoft Corporation. Todos os direitos reservados. Microsoft, Windows, Windows Vista e outros nomes de produtos são ou podem ser marcas registradas e/ou marcas comerciais nos EUA e/ou outros países.
Este documento é meramente informativo e representa a visão atual da Microsoft Corporation a partir da data desta apresentação. Como a Microsoft deve atender a condições de mercado em constante alteração, este
documento não deve ser interpretado como um compromisso por parte da Microsoft, e a Microsoft não pode garantir a precisão de qualquer informação fornecida após a data desta apresentação. A MICROSOFT NÃO DÁ
QUALQUER GARANTIA, SEJA ELA EXPRESSA, IMPLÍCITA OU ESTATUTÁRIA, REFERENTE ÀS INFORMAÇÕES DESTA APRESENTAÇÃO.
Por favor preencha a
avaliação
45
Query Plan
46
Monitorando Deadlock
Habilitar o Trace Flag 1222 no Startup
Utilize o Profiler para obter uma versão gráfica
47
Evite Table Scan

Mais conteúdo relacionado

Mais procurados

Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaHenrique Lima
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoelliando dias
 
Oracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & DatabaseOracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & DatabaseDouglas Paiva de Sousa
 
Sistemas operacionais de rede exercicio de sala
Sistemas operacionais de rede exercicio de salaSistemas operacionais de rede exercicio de sala
Sistemas operacionais de rede exercicio de salaCarlos Melo
 
ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?Rodrigo Almeida
 
Estratégia de backup - RMAN
Estratégia de backup - RMANEstratégia de backup - RMAN
Estratégia de backup - RMANEduardo Legatti
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)Dirceu Resende
 
Oracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dadosOracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dadosRodrigo Almeida
 
Indo para o proximo nivel: MCSM e MCA em SQL Server 2012
Indo para o proximo nivel:  MCSM e MCA em SQL Server 2012Indo para o proximo nivel:  MCSM e MCA em SQL Server 2012
Indo para o proximo nivel: MCSM e MCA em SQL Server 2012Fabrício Catae
 
Banco de dados oracle
Banco de dados oracleBanco de dados oracle
Banco de dados oracleEduardo Lopes
 
Sistemas operacionais de rede exercicio de sala-shellscript
Sistemas operacionais de rede exercicio de sala-shellscriptSistemas operacionais de rede exercicio de sala-shellscript
Sistemas operacionais de rede exercicio de sala-shellscriptCarlos Melo
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlHelder Lopes
 
Apresentação Oracle SGBD
Apresentação Oracle SGBDApresentação Oracle SGBD
Apresentação Oracle SGBDDenis Vieira
 
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVOMANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVOLuciano Moreira
 

Mais procurados (20)

Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinada
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
Oracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & DatabaseOracle 18c Instalação Grid Infrastructure & Database
Oracle 18c Instalação Grid Infrastructure & Database
 
Apostila oracle
Apostila oracleApostila oracle
Apostila oracle
 
Sistemas operacionais de rede exercicio de sala
Sistemas operacionais de rede exercicio de salaSistemas operacionais de rede exercicio de sala
Sistemas operacionais de rede exercicio de sala
 
ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?
 
Apresentacao Aula03 So
Apresentacao Aula03 SoApresentacao Aula03 So
Apresentacao Aula03 So
 
Estratégia de backup - RMAN
Estratégia de backup - RMANEstratégia de backup - RMAN
Estratégia de backup - RMAN
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
 
Apostila Oracle 10g
Apostila Oracle 10gApostila Oracle 10g
Apostila Oracle 10g
 
Oracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dadosOracle Day - Produtos de banco de dados
Oracle Day - Produtos de banco de dados
 
Indo para o proximo nivel: MCSM e MCA em SQL Server 2012
Indo para o proximo nivel:  MCSM e MCA em SQL Server 2012Indo para o proximo nivel:  MCSM e MCA em SQL Server 2012
Indo para o proximo nivel: MCSM e MCA em SQL Server 2012
 
Banco de dados oracle
Banco de dados oracleBanco de dados oracle
Banco de dados oracle
 
PostgreSQL Conceitos e aplicações
PostgreSQL  Conceitos e aplicaçõesPostgreSQL  Conceitos e aplicações
PostgreSQL Conceitos e aplicações
 
Sistemas operacionais de rede exercicio de sala-shellscript
Sistemas operacionais de rede exercicio de sala-shellscriptSistemas operacionais de rede exercicio de sala-shellscript
Sistemas operacionais de rede exercicio de sala-shellscript
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySql
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
 
Apresentação Oracle SGBD
Apresentação Oracle SGBDApresentação Oracle SGBD
Apresentação Oracle SGBD
 
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVOMANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
MANUTENÇÃO DE ÍNDICES: O GUIA DEFINITIVO
 

Destaque

California Commercial Recycling AB 341 IFMA San Diego Presentation
California Commercial Recycling AB 341 IFMA San Diego PresentationCalifornia Commercial Recycling AB 341 IFMA San Diego Presentation
California Commercial Recycling AB 341 IFMA San Diego PresentationAvritek
 
Paleoshoreline Posters
Paleoshoreline PostersPaleoshoreline Posters
Paleoshoreline PostersLLGYeo
 
роман пысин+пуховик+идея
роман пысин+пуховик+идеяроман пысин+пуховик+идея
роман пысин+пуховик+идеяПысин Роман
 
Outlook for the coke market in 2010 & onward [Met Coke 2009]
Outlook for the coke market in 2010 & onward [Met Coke 2009]Outlook for the coke market in 2010 & onward [Met Coke 2009]
Outlook for the coke market in 2010 & onward [Met Coke 2009]Smithers Apex
 
роман пысин+удачники+клиенты
роман пысин+удачники+клиентыроман пысин+удачники+клиенты
роман пысин+удачники+клиентыПысин Роман
 
Mercedes concept iaa press release
Mercedes concept iaa press releaseMercedes concept iaa press release
Mercedes concept iaa press releasesteeringnews
 
5. factores series uniformes (p a) (a p) (f a) y (af)
5. factores series uniformes (p a) (a p) (f a) y (af)5. factores series uniformes (p a) (a p) (f a) y (af)
5. factores series uniformes (p a) (a p) (f a) y (af)tatyanasaltos
 
Explore career possibilities webinar v.10 21 lmk lf
Explore career possibilities webinar v.10 21 lmk lfExplore career possibilities webinar v.10 21 lmk lf
Explore career possibilities webinar v.10 21 lmk lfLinda Morris Kelley
 
High School Form Photography Lesson
High School Form Photography LessonHigh School Form Photography Lesson
High School Form Photography LessonMeredith Hudson
 
JavaScript Basic 02 jQuery
JavaScript Basic 02 jQueryJavaScript Basic 02 jQuery
JavaScript Basic 02 jQueryYossy Taka
 
Різноманітність тварин у природі
Різноманітність тварин у природіРізноманітність тварин у природі
Різноманітність тварин у природіКовпитська ЗОШ
 

Destaque (15)

California Commercial Recycling AB 341 IFMA San Diego Presentation
California Commercial Recycling AB 341 IFMA San Diego PresentationCalifornia Commercial Recycling AB 341 IFMA San Diego Presentation
California Commercial Recycling AB 341 IFMA San Diego Presentation
 
Los dioses-griegos
Los dioses-griegosLos dioses-griegos
Los dioses-griegos
 
PortfolioAdelPino_101016
PortfolioAdelPino_101016PortfolioAdelPino_101016
PortfolioAdelPino_101016
 
OSU_labfinal
OSU_labfinalOSU_labfinal
OSU_labfinal
 
Paleoshoreline Posters
Paleoshoreline PostersPaleoshoreline Posters
Paleoshoreline Posters
 
роман пысин+пуховик+идея
роман пысин+пуховик+идеяроман пысин+пуховик+идея
роман пысин+пуховик+идея
 
Outlook for the coke market in 2010 & onward [Met Coke 2009]
Outlook for the coke market in 2010 & onward [Met Coke 2009]Outlook for the coke market in 2010 & onward [Met Coke 2009]
Outlook for the coke market in 2010 & onward [Met Coke 2009]
 
House for sale
House for saleHouse for sale
House for sale
 
роман пысин+удачники+клиенты
роман пысин+удачники+клиентыроман пысин+удачники+клиенты
роман пысин+удачники+клиенты
 
Mercedes concept iaa press release
Mercedes concept iaa press releaseMercedes concept iaa press release
Mercedes concept iaa press release
 
5. factores series uniformes (p a) (a p) (f a) y (af)
5. factores series uniformes (p a) (a p) (f a) y (af)5. factores series uniformes (p a) (a p) (f a) y (af)
5. factores series uniformes (p a) (a p) (f a) y (af)
 
Explore career possibilities webinar v.10 21 lmk lf
Explore career possibilities webinar v.10 21 lmk lfExplore career possibilities webinar v.10 21 lmk lf
Explore career possibilities webinar v.10 21 lmk lf
 
High School Form Photography Lesson
High School Form Photography LessonHigh School Form Photography Lesson
High School Form Photography Lesson
 
JavaScript Basic 02 jQuery
JavaScript Basic 02 jQueryJavaScript Basic 02 jQuery
JavaScript Basic 02 jQuery
 
Різноманітність тварин у природі
Різноманітність тварин у природіРізноманітність тварин у природі
Різноманітність тварин у природі
 

Semelhante a SQL Server com Foco em Diagnóstico de Desempenho

Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasLeonardo Pedroso Costa
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...iMasters
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvccLocaweb
 
Como funciona um banco de dados? (Worldwide Online TechDay 2010)
Como funciona um banco de dados? (Worldwide Online TechDay 2010)Como funciona um banco de dados? (Worldwide Online TechDay 2010)
Como funciona um banco de dados? (Worldwide Online TechDay 2010)Fabrício Catae
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctoolse-Setorial
 
Alta disponibilidade com bancos de dados relacionais no Azure
Alta disponibilidade com bancos de dados relacionais no AzureAlta disponibilidade com bancos de dados relacionais no Azure
Alta disponibilidade com bancos de dados relacionais no AzureRubens Guimarães - MTAC MVP
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Claudio Miranda
 
Aula_TuningProf.Celinia_Equipe_Amós Lhips
Aula_TuningProf.Celinia_Equipe_Amós LhipsAula_TuningProf.Celinia_Equipe_Amós Lhips
Aula_TuningProf.Celinia_Equipe_Amós LhipsAmós Lhips
 
TimesTen In-Memory Database
TimesTen In-Memory DatabaseTimesTen In-Memory Database
TimesTen In-Memory DatabaseAndre Danelon
 
Aplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQLAplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQLpichiliani
 
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Rodrigo Immaginario
 
Descobrindo os limites de um Sip Proxy
Descobrindo os limites de um Sip ProxyDescobrindo os limites de um Sip Proxy
Descobrindo os limites de um Sip ProxyAntonio Anderson Souza
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoFabio Telles Rodriguez
 
[24HOP] SQL Server em maquinas virtuais do Windows Azure
[24HOP] SQL Server em maquinas virtuais do Windows Azure[24HOP] SQL Server em maquinas virtuais do Windows Azure
[24HOP] SQL Server em maquinas virtuais do Windows AzureVitor Tomaz
 
Os 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPOs 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPIssac Nolis Ohasi
 

Semelhante a SQL Server com Foco em Diagnóstico de Desempenho (20)

Oracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferençasOracle e SQL Server na prática mitos, semelhanças e diferenças
Oracle e SQL Server na prática mitos, semelhanças e diferenças
 
DB2 Express-C
DB2 Express-CDB2 Express-C
DB2 Express-C
 
Treinamento Data Guard
Treinamento Data GuardTreinamento Data Guard
Treinamento Data Guard
 
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
Datawarehouse - Obtenha insights consistentes para o seu negócio: conheça o n...
 
Mainframe Performance Review
Mainframe Performance ReviewMainframe Performance Review
Mainframe Performance Review
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvcc
 
Como funciona um banco de dados? (Worldwide Online TechDay 2010)
Como funciona um banco de dados? (Worldwide Online TechDay 2010)Como funciona um banco de dados? (Worldwide Online TechDay 2010)
Como funciona um banco de dados? (Worldwide Online TechDay 2010)
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
Alta disponibilidade com bancos de dados relacionais no Azure
Alta disponibilidade com bancos de dados relacionais no AzureAlta disponibilidade com bancos de dados relacionais no Azure
Alta disponibilidade com bancos de dados relacionais no Azure
 
Receitas XE
Receitas XEReceitas XE
Receitas XE
 
Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7Dicas para Turbinar o servidor de Aplicações JBoss 7
Dicas para Turbinar o servidor de Aplicações JBoss 7
 
Aula_TuningProf.Celinia_Equipe_Amós Lhips
Aula_TuningProf.Celinia_Equipe_Amós LhipsAula_TuningProf.Celinia_Equipe_Amós Lhips
Aula_TuningProf.Celinia_Equipe_Amós Lhips
 
TimesTen In-Memory Database
TimesTen In-Memory DatabaseTimesTen In-Memory Database
TimesTen In-Memory Database
 
Aplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQLAplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQL
 
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
Dicas e Truques de Performance: Como obter o maximo do Windows Server 2008 R2...
 
Descobrindo os limites de um Sip Proxy
Descobrindo os limites de um Sip ProxyDescobrindo os limites de um Sip Proxy
Descobrindo os limites de um Sip Proxy
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
J Boss Drools
J Boss DroolsJ Boss Drools
J Boss Drools
 
[24HOP] SQL Server em maquinas virtuais do Windows Azure
[24HOP] SQL Server em maquinas virtuais do Windows Azure[24HOP] SQL Server em maquinas virtuais do Windows Azure
[24HOP] SQL Server em maquinas virtuais do Windows Azure
 
Os 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPOs 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAP
 

Mais de Fabrício Catae

Meetup Mule SP: Kafka (Edgar)
Meetup Mule SP: Kafka (Edgar)Meetup Mule SP: Kafka (Edgar)
Meetup Mule SP: Kafka (Edgar)Fabrício Catae
 
Build smarter and scalable applications using Microsoft Azure Database Services
Build smarter and scalable applications using Microsoft Azure Database ServicesBuild smarter and scalable applications using Microsoft Azure Database Services
Build smarter and scalable applications using Microsoft Azure Database ServicesFabrício Catae
 
Fora Hackers! Proteção em camadas do SQL Server
Fora Hackers! Proteção em camadas do SQL ServerFora Hackers! Proteção em camadas do SQL Server
Fora Hackers! Proteção em camadas do SQL ServerFabrício Catae
 
Migrando o Parse para Azure: Lições Aprendidas
Migrando o Parse para Azure: Lições AprendidasMigrando o Parse para Azure: Lições Aprendidas
Migrando o Parse para Azure: Lições AprendidasFabrício Catae
 
TechEd 2015: Diagnosticando problemas em sites ASP.NET
TechEd 2015: Diagnosticando problemas em sites ASP.NETTechEd 2015: Diagnosticando problemas em sites ASP.NET
TechEd 2015: Diagnosticando problemas em sites ASP.NETFabrício Catae
 
Estratégias de Backup e Restore
Estratégias de Backup e RestoreEstratégias de Backup e Restore
Estratégias de Backup e RestoreFabrício Catae
 
CLR Fundamentals: Memory Management
CLR Fundamentals: Memory ManagementCLR Fundamentals: Memory Management
CLR Fundamentals: Memory ManagementFabrício Catae
 
TechEd 2009: Planejamento e Operação de Ambientes SharePoint Multi-Terabyte
TechEd 2009: Planejamento e Operação de Ambientes SharePoint Multi-TerabyteTechEd 2009: Planejamento e Operação de Ambientes SharePoint Multi-Terabyte
TechEd 2009: Planejamento e Operação de Ambientes SharePoint Multi-TerabyteFabrício Catae
 
TechEd 2010: Escalando aplicações OLTP:Design de aplicação e considerações pa...
TechEd 2010: Escalando aplicações OLTP:Design de aplicação e considerações pa...TechEd 2010: Escalando aplicações OLTP:Design de aplicação e considerações pa...
TechEd 2010: Escalando aplicações OLTP:Design de aplicação e considerações pa...Fabrício Catae
 
Advanced SQL Memory Management (GeekReady 2012)
Advanced SQL Memory Management (GeekReady 2012)Advanced SQL Memory Management (GeekReady 2012)
Advanced SQL Memory Management (GeekReady 2012)Fabrício Catae
 
Como funciona um banco de dados? (Prudente TechDay 2010)
Como funciona um banco de dados? (Prudente TechDay 2010)Como funciona um banco de dados? (Prudente TechDay 2010)
Como funciona um banco de dados? (Prudente TechDay 2010)Fabrício Catae
 
Busca de Documentos (Marilia TechDay 2011)
Busca de Documentos (Marilia TechDay 2011)Busca de Documentos (Marilia TechDay 2011)
Busca de Documentos (Marilia TechDay 2011)Fabrício Catae
 
Microsoft Certified Master (Comunidade MCM)
Microsoft Certified Master (Comunidade MCM)Microsoft Certified Master (Comunidade MCM)
Microsoft Certified Master (Comunidade MCM)Fabrício Catae
 
TechEd 2006: Trabalhando com DMV e DMF
TechEd 2006: Trabalhando com DMV e DMFTechEd 2006: Trabalhando com DMV e DMF
TechEd 2006: Trabalhando com DMV e DMFFabrício Catae
 
TechEd 2005: Novos Recursos T-SQL (SQL 2005)
TechEd 2005: Novos Recursos T-SQL (SQL 2005)TechEd 2005: Novos Recursos T-SQL (SQL 2005)
TechEd 2005: Novos Recursos T-SQL (SQL 2005)Fabrício Catae
 

Mais de Fabrício Catae (20)

Mule Meetup Cache Redis
Mule Meetup Cache RedisMule Meetup Cache Redis
Mule Meetup Cache Redis
 
Meetup Mule SP: Kafka (Edgar)
Meetup Mule SP: Kafka (Edgar)Meetup Mule SP: Kafka (Edgar)
Meetup Mule SP: Kafka (Edgar)
 
SQL Server on Linux
SQL Server on LinuxSQL Server on Linux
SQL Server on Linux
 
Build smarter and scalable applications using Microsoft Azure Database Services
Build smarter and scalable applications using Microsoft Azure Database ServicesBuild smarter and scalable applications using Microsoft Azure Database Services
Build smarter and scalable applications using Microsoft Azure Database Services
 
Fora Hackers! Proteção em camadas do SQL Server
Fora Hackers! Proteção em camadas do SQL ServerFora Hackers! Proteção em camadas do SQL Server
Fora Hackers! Proteção em camadas do SQL Server
 
Migrando o Parse para Azure: Lições Aprendidas
Migrando o Parse para Azure: Lições AprendidasMigrando o Parse para Azure: Lições Aprendidas
Migrando o Parse para Azure: Lições Aprendidas
 
TechEd 2015: Diagnosticando problemas em sites ASP.NET
TechEd 2015: Diagnosticando problemas em sites ASP.NETTechEd 2015: Diagnosticando problemas em sites ASP.NET
TechEd 2015: Diagnosticando problemas em sites ASP.NET
 
Estratégias de Backup e Restore
Estratégias de Backup e RestoreEstratégias de Backup e Restore
Estratégias de Backup e Restore
 
CLR Fundamentals: Memory Management
CLR Fundamentals: Memory ManagementCLR Fundamentals: Memory Management
CLR Fundamentals: Memory Management
 
Learn how to debug
Learn how to debugLearn how to debug
Learn how to debug
 
TechEd 2009: Planejamento e Operação de Ambientes SharePoint Multi-Terabyte
TechEd 2009: Planejamento e Operação de Ambientes SharePoint Multi-TerabyteTechEd 2009: Planejamento e Operação de Ambientes SharePoint Multi-Terabyte
TechEd 2009: Planejamento e Operação de Ambientes SharePoint Multi-Terabyte
 
TechEd 2010: Escalando aplicações OLTP:Design de aplicação e considerações pa...
TechEd 2010: Escalando aplicações OLTP:Design de aplicação e considerações pa...TechEd 2010: Escalando aplicações OLTP:Design de aplicação e considerações pa...
TechEd 2010: Escalando aplicações OLTP:Design de aplicação e considerações pa...
 
Advanced SQL Memory Management (GeekReady 2012)
Advanced SQL Memory Management (GeekReady 2012)Advanced SQL Memory Management (GeekReady 2012)
Advanced SQL Memory Management (GeekReady 2012)
 
Como funciona um banco de dados? (Prudente TechDay 2010)
Como funciona um banco de dados? (Prudente TechDay 2010)Como funciona um banco de dados? (Prudente TechDay 2010)
Como funciona um banco de dados? (Prudente TechDay 2010)
 
Busca de Documentos (Marilia TechDay 2011)
Busca de Documentos (Marilia TechDay 2011)Busca de Documentos (Marilia TechDay 2011)
Busca de Documentos (Marilia TechDay 2011)
 
Microsoft Certified Master (Comunidade MCM)
Microsoft Certified Master (Comunidade MCM)Microsoft Certified Master (Comunidade MCM)
Microsoft Certified Master (Comunidade MCM)
 
TechEd 2006: Trabalhando com DMV e DMF
TechEd 2006: Trabalhando com DMV e DMFTechEd 2006: Trabalhando com DMV e DMF
TechEd 2006: Trabalhando com DMV e DMF
 
SQL 2005 Memory Module
SQL 2005 Memory ModuleSQL 2005 Memory Module
SQL 2005 Memory Module
 
TechEd 2005: Novos Recursos T-SQL (SQL 2005)
TechEd 2005: Novos Recursos T-SQL (SQL 2005)TechEd 2005: Novos Recursos T-SQL (SQL 2005)
TechEd 2005: Novos Recursos T-SQL (SQL 2005)
 
VorlonJS
VorlonJSVorlonJS
VorlonJS
 

SQL Server com Foco em Diagnóstico de Desempenho

  • 1. Fabio Gentile Premier Field Engineer Microsoft Fabricio Catae Premier Field Engineer Microsoft SQL Server com Foco em Diagnóstico de Desempenho CÓDIGO DA SESSÃO: SUP-403
  • 4. 6 Definindo Performance Performance (Desempenho) Tempo de Resposta ao Usuário Sintomas de Baixo Desempenho Alta Utilização de Recursos
  • 5. 7 Cenário: Alto Consumo de CPU Utilizar o Task Manager Identificar o processo Usar DMV para identificar a causa do problema Custo em CPU Query rodando Plano de execução
  • 7. 9 Metodologia: Alto consumo de CPU Confirmar alto consumo de CPU Task Manager Performance Monitor Rodar a query sys.dm_exec_requests Ordenar o resultado de acordo com cpu_time Consultar o SQL Text usando o (sql) handle Consultar o Query Plan usando o (plan) handle
  • 8. 10 Desafio: Como Otimizar? set @str = CAST(@i as CHAR(10)) insert tbInfo (info) values ( @str )
  • 9. 11 Redefinindo Performance Performance (Desempenho) Tempo de Resposta ao Usuário Tamanho da Fila de Processamento Utilização de Recursos Sintomas de Baixo Desempenho Alta Utilização de Recursos Presença constante de 100% CPU Alto consumo de Memória Bloqueios e Locks entre Queries
  • 10. 12 Análise do Consumo de CPU Baseia-se no fato de que a THREAD possui dois estados: Rodando Suspensa (Em Espera) CPU CPU Wait
  • 12. 14 Wait Statistics O que são Wait Statistics? Sempre que uma query inicia a espera por algum recurso (Disco, Locks, Rede), o SQL Server registra o tipo e a duração desta espera Estas informações sobre esperas são retidas e permitem determinar porque a execução das queries é mais lenta do que o esperado
  • 13. 15 Wait Statistics Por que usar Wait Statistics? Abordagem inicial antes de aprofundar a análise de performance usando outras ferramentas Permite encontrar gargalos de performance que não são óbvios e evita tentativas de eliminação de falsos gargalos de performance Permite identificar o maior retorno para os esforços de ajuste de performance
  • 14. 16 Wait Statistics Onde encontrar Wait Statistics? SQL Server DMV: sys.dm_os_wait_stats Wait Statistics são acumuladas desde o último restart da instância do SQL Server, ou do último reset: DBCC SQLPERF (‘sys.dm_os_wait_stats’, CLEAR)
  • 15. 17 Wait Statistics sys.dm_os_wait_stats wait_type: Tipo da espera waiting_tasks_count: Número de esperas deste tipo wait_time_ms: Tempo total de espera para este tipo em milissegundos max_wait_time_ms: Tempo máximo de espera para este tipo signal_wait_time: Diferença entre o tempo em que a espera teminou e o início da execução
  • 17. 19 Wait Statistics Interpretando Wait Types Nem todos os wait types indicam problemas ou exigem ações para serem corrigidos (como esperas associadas a tarefas em background) Concentre a análise em esperas por recursos que podem indicar gargalos: Disco CPU Memória Locking Rede
  • 18. 20 Tarefas em Background e Esperas Determinadas esperas (Wait Types) estão relacionadas com tarefas que rodam em background Exemplo de tarefas de sistema: FT_IFTS_SCHEDULER_IDLE_WAIT REQUEST_FOR_DEADLOCK_SEARCH SQLTRACE_BUFFER_FLUSH LAZYWRITER_SLEEP XE_TIMER_EVENT CHECKPOINT_QUEUE BROKER_TO_FLUSH LOGMGR_QUEUE
  • 20. 22 Cenário: Latência na Gravação do Log Quando a thread espera por uma escrita no arquivo de LOG, ela fica no modo de espera Wait type: WRITELOG Essa espera pode ser observada Online nas DMV sys.dm_exec_requests sys.dm_os_tasks sys.dm_os_waiting_tasks
  • 21. 23 WRITELOG Gravação do LOG: 1ms Escrita sequencial Commit Transaction = 1 escrita em LOG Limite de Transações/sec
  • 22. 24 Recomendação Garantir o tempo de acesso ao disco adequado Ideal: < 1 ms (cache) Bom: < 5 ms (normal) ... Desastre Total: > 100 ms Agrupar as transações excessivamente curtas dentro de um contexto transacional BEGIN TRANSACTION / COMMIT
  • 24. 26 Cenário: Latência no Acesso aos Discos Ocorre quando uma thread aguarda por uma requisição de I/O num arquivo de dados Wait type: PAGEIOLATCH_* Esta espera pode ser observada nas DMVs: sys.dm_os_wait_stats sys.dm_exec_requests sys.dm_os_tasks / sys.dm_os_waiting_tasks sys.dm_io_pending_io_requests
  • 25. 27 Monitoração de I/O pendentes sys.dm_io_pending_io_requests
  • 27. 29 Recomendação Garantir tempos de acesso adequados aos discos (Physical Disk, Avg. Disk sec/Read e Avg. Disk sec/Write) Ideal: < 10 ms Bom: < 20 ms ... Ruim: > 100 ms Diminuir a quantidade de leituras lógicas, melhorando a estratégia de indexação Database Engine Tuning Advisor (DTA) sys.dm_db_missing_index_* Plano de execução: Missing Index Details
  • 29. 31 Breve Resumo Wait Type Possível significado PAGELATCH 2:*:* Contenção no TEMPDB em memória PAGELATCH dbid:*:* Hot-spot em memória (page-split) PAGEIOLATCH Leitura excessiva de disco WRITELOG Escrita em disco de log NETWORKIO Esperando recebimento de pacotes do cliente SOS_SCHEDULER_YIELD Alto consumo de CPU RESOURCE_SEMAPHORE Esperando por memória para Workspace LCK_M_* Bloqueios
  • 31. 33 Cenário: Locks Tipos de Lock LCK_M_X = Exclusive (Escrita) LCK_M_S = Shared (Leitura) LCK_M_U = Update LCK_M_IX = Intent-Exclusive LCK_M_IS = Intent-Shared Diferentes Recursos Tabela Página Linha Identificador LCK_M_X sobre o recurso 5:1234567 (dbid=5, objid=1234567)
  • 32. 34 Matriz de Compatiblidade (COMPLETA) Conflitos = (C)
  • 33. 35 Compatibilidade de Lock S = Shared/Leitura ( múltiplas leituras ) X = Exclusivo ( bloqueia TODOS ) Intent Lock (IS, IX) – Compatíveis entre si
  • 34. 36 Hierarquia de Locks Escrita de Linha TABLE LOCK IX PAGE LOCK IX ROW LOCK X Escrita de Linha TABLE LOCK IX PAGE LOCK IX ROW LOCK X
  • 35. 37 Hierarquia de Locks (2) Escrita de Linha TABLE LOCK IX PAGE LOCK IX ROW LOCK X Leitura da Tabela Inteira TABLE LOCK S PAGE LOCK - ROW LOCK -
  • 36. 38 Hierarquia de Locks (3) Escrita de Linha TABLE LOCK IX PAGE LOCK IX ROW LOCK X Leitura de Linha TABLE LOCK IS PAGE LOCK IS ROW LOCK S
  • 37. 39 Recomendação Matriz de Compatibilidade Range Locks (LCK_M_R*) Transação em Serializable Utilize o NOLOCK se necessário Melhor alternativa: Read Committed Snapshot SQL tem lock de linha? (ROWLOCK) Como usar um lock de linha se a query faz TABLE SCAN?
  • 38. 40 Referências – Wait Stats SQL Server 2005 Waits and Queues: http://technet.microsoft.com/en-us/library/cc966413.aspx Troubleshooting Performance Problems in SQL Server 2005 http://technet.microsoft.com/en-us/library/cc966540.aspx Troubleshooting Performance Problems in SQL Server 2008 http://technet.microsoft.com/en-us/library/dd672789(SQL.100).aspx Description of the waittype and lastwaittype columns in the master.dbo.sysprocesses table in SQL Server 2000 and SQL Server 2005 http://support.microsoft.com/kb/822101 The SQL Server Wait Type Repository http://blogs.msdn.com/b/psssql/archive/2009/11/03/the-sql-server- wait-type-repository.aspx
  • 39. 41
  • 40. 42 Contatos Fabricio Catae fcatae@microsoft.com Fabio Gentile fgentile@microsoft.com Blog / Twitter http://blogs.msdn.com/fcatae Twitter: @fcatae
  • 41. © 2008 Microsoft Corporation. Todos os direitos reservados. Microsoft, Windows, Windows Vista e outros nomes de produtos são ou podem ser marcas registradas e/ou marcas comerciais nos EUA e/ou outros países. Este documento é meramente informativo e representa a visão atual da Microsoft Corporation a partir da data desta apresentação. Como a Microsoft deve atender a condições de mercado em constante alteração, este documento não deve ser interpretado como um compromisso por parte da Microsoft, e a Microsoft não pode garantir a precisão de qualquer informação fornecida após a data desta apresentação. A MICROSOFT NÃO DÁ QUALQUER GARANTIA, SEJA ELA EXPRESSA, IMPLÍCITA OU ESTATUTÁRIA, REFERENTE ÀS INFORMAÇÕES DESTA APRESENTAÇÃO.
  • 42. Por favor preencha a avaliação
  • 44. 46 Monitorando Deadlock Habilitar o Trace Flag 1222 no Startup Utilize o Profiler para obter uma versão gráfica

Notas do Editor

  1. 14/07/2010 4:47 PM
  2. 14/07/2010 4:47 PM
  3. 14/07/2010 4:47 PM
  4. select cpu = cpu_time, * from sys.dm_exec_requests where group_id > 1 order by cpu_time desc select text from sys.dm_exec_sql_text(0x02000000D328C61BD9377ECCC7A5C6E40A461B64C26643F2) select * from sys.dm_exec_query_plan(0x06000D00D328C61B40C16D0F010000000000000000000000) create index idxId on tbInfoRelation (id) create index idxNextId on tbInfoRelation (nextid)
  5. 14/07/2010 4:47 PM
  6. 14/07/2010 4:47 PM
  7. 14/07/2010 4:47 PM
  8. 14/07/2010 4:47 PM
  9. 14/07/2010 4:47 PM
  10. CREATE PROCEDURE procInsertInfo AS set nocount on declare @i int = 0 declare @str char(10) while @i<100000 begin set @str = CAST(@i as CHAR(10)) insert tbInfo (info) values ( @str ) set @i = @i + 1 end
  11. 14/07/2010 4:47 PM
  12. 14/07/2010 4:47 PM
  13. Analisar ConsultProximoIdRecentes select * from ( select c1=t1.id, c2=t2.id from tbInfoRelation t1 inner join tbInfoRelation t2 on (t1.id = t2.nextid) ) tab where c1+c2<10