teched 2010: sql server com foco em diagnóstico de desempenho

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

Upload: fabricio-catae

Post on 21-Feb-2017

145 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

Fabio GentilePremier Field EngineerMicrosoft

Fabricio CataePremier Field EngineerMicrosoft

SQL Server com Foco em Diagnóstico de Desempenho

CÓDIGO DA SESSÃO: SUP-403

Page 2: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

4

Premier Field Engineering

Premier Field

Engineering

Serviços Proativos

ServiçosReativos

WorkshopPlus

Health Checks &

Risk Assessment

Programs

Situações Críticas

Page 3: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

5

Agenda

100% CPUWaits Statistics

Page 4: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

6

Definindo Performance

Performance (Desempenho)Tempo de Resposta ao Usuário

Sintomas de Baixo DesempenhoAlta Utilização de Recursos

Page 5: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

7

Cenário: Alto Consumo de CPU

Utilizar o Task ManagerIdentificar o processoUsar DMV para identificar a causa do problema

Custo em CPUQuery rodandoPlano de execução

Page 6: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

8

Alto Consumo de CPU

Page 7: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

9

Metodologia: Alto consumo de CPU

Confirmar alto consumo de CPUTask ManagerPerformance 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

Page 8: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

10

Desafio: Como Otimizar?

set @str = CAST(@i as CHAR(10))

insert tbInfo (info) values ( @str )

Page 9: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

11

Redefinindo Performance

Performance (Desempenho)Tempo de Resposta ao UsuárioTamanho da Fila de ProcessamentoUtilização de Recursos

Sintomas de Baixo DesempenhoAlta Utilização de Recursos

Presença constante de 100% CPUAlto consumo de MemóriaBloqueios e Locks entre Queries

Page 10: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

12

Análise do Consumo de CPU

Baseia-se no fato de que a THREAD possui dois estados:

RodandoSuspensa (Em Espera) CPU

CPUWait

Page 11: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

13

Metodologia: ?

Recursos

CPUDiscoRedeMemoria

CPU

CPUWait

Page 12: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

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

Page 13: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

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

Page 14: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

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)

Page 15: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

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

Page 16: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

18

Wait Statistics sys.dm_os_wait_stats

Page 17: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

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:

DiscoCPUMemóriaLockingRede

Page 18: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

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_WAITREQUEST_FOR_DEADLOCK_SEARCHSQLTRACE_BUFFER_FLUSHLAZYWRITER_SLEEPXE_TIMER_EVENTCHECKPOINT_QUEUEBROKER_TO_FLUSHLOGMGR_QUEUE

Page 19: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

21

Inserção de DadosProcInsertInfo

Page 20: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

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 DMVsys.dm_exec_requestssys.dm_os_taskssys.dm_os_waiting_tasks

Page 21: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

23

WRITELOG

Gravação do LOG: 1msEscrita sequencial

Commit Transaction = 1 escrita em LOG

Limite de Transações/sec

Page 22: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

24

Recomendação

Garantir o tempo de acesso ao disco adequadoIdeal: < 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

Page 23: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

25

Otimizando: Inserção de Dados

Page 24: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

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_statssys.dm_exec_requestssys.dm_os_tasks / sys.dm_os_waiting_taskssys.dm_io_pending_io_requests

Page 25: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

27

Monitoração de I/O pendentes

sys.dm_io_pending_io_requests

Page 26: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

28

Latência no Acesso aos Discos

Page 27: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

29

RecomendaçãoGarantir tempos de acesso adequados aos discos (Physical Disk, Avg. Disk sec/Read e Avg. Disk sec/Write)

Ideal: < 10 msBom: < 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

Page 28: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

30

Outros Wait Types

Page 29: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

31

Breve Resumo

Wait Type Possível significadoPAGELATCH 2:*:* Contenção no TEMPDB em memóriaPAGELATCH dbid:*:* Hot-spot em memória (page-split)PAGEIOLATCH Leitura excessiva de discoWRITELOG Escrita em disco de logNETWORKIO Esperando recebimento de pacotes do clienteSOS_SCHEDULER_YIELD Alto consumo de CPURESOURCE_SEMAPHORE Esperando por memória para WorkspaceLCK_M_* Bloqueios

Page 30: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

32

Problema de Travamento

Page 31: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

33

Cenário: Locks

Tipos de LockLCK_M_X = Exclusive (Escrita)LCK_M_S = Shared (Leitura)LCK_M_U = UpdateLCK_M_IX = Intent-ExclusiveLCK_M_IS = Intent-Shared

Diferentes RecursosTabelaPáginaLinha

IdentificadorLCK_M_X sobre o recurso 5:1234567 (dbid=5, objid=1234567)

Page 32: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

34

Matriz de Compatiblidade (COMPLETA)

Conflitos = (C)

Page 33: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

35

Compatibilidade de Lock

S = Shared/Leitura ( múltiplas leituras )X = Exclusivo ( bloqueia TODOS )

Intent Lock (IS, IX) – Compatíveis entre si

Page 34: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

36

Hierarquia de Locks

Escrita de Linha

TABLE LOCK IXPAGE LOCK IX

ROW LOCK X

Escrita de Linha

TABLE LOCK IXPAGE LOCK IX

ROW LOCK X

Page 35: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

37

Hierarquia de Locks (2)

Escrita de Linha

TABLE LOCK IXPAGE LOCK IX

ROW LOCK X

Leitura da Tabela Inteira

TABLE LOCK SPAGE LOCK -

ROW LOCK -

Page 36: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

38

Hierarquia de Locks (3)

Escrita de Linha

TABLE LOCK IXPAGE LOCK IX

ROW LOCK X

Leitura de Linha

TABLE LOCK ISPAGE LOCK IS

ROW LOCK S

Page 37: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

39

Recomendação

Matriz de CompatibilidadeRange Locks (LCK_M_R*)

Transação em Serializable

Utilize o NOLOCK se necessárioMelhor alternativa: Read Committed Snapshot

SQL tem lock de linha? (ROWLOCK)Como usar um lock de linha se a query faz TABLE SCAN?

Page 38: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

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 2005http://technet.microsoft.com/en-us/library/cc966540.aspx

Troubleshooting Performance Problems in SQL Server 2008http://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/822101The SQL Server Wait Type Repository

http://blogs.msdn.com/b/psssql/archive/2009/11/03/the-sql-server-wait-type-repository.aspx

Page 39: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

41

Page 40: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

42

Contatos

Fabricio [email protected]

Fabio [email protected]

Blog / Twitterhttp://blogs.msdn.com/fcataeTwitter: @fcatae

Page 41: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

© 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.

Page 42: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

Por favor preencha a avaliação

Page 43: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

45

Query Plan

Page 44: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

46

Monitorando Deadlock

Habilitar o Trace Flag 1222 no Startup

Utilize o Profiler para obter uma versão gráfica

Page 45: TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho

47

Evite Table Scan