SQL Saturday #512 - Rio Passo a Passo para realizar uma Consultoria de Tuning em um Cliente Fabrício Lima | FabricioLima Soluções em BD Site: #SqlSatRJ
Patrocinadores
Como cheguei até aqui? Grupo Dadalto (10 anos): Estagiário (3 meses) Analista de Banco de Dados (2 anos) DBA (Júnior/Pleno/Senior – 6 anos) Coordenador de infra e DBA (2 anos) Fabricio Lima Soluções em BD - Consultorias e Treinamentos Desde Junho de 2015 até hoje Palestrante em eventos Blog sobre SQL Server
Consultoria de Tuning – Cenários Reais Clientes que já atendi em consultorias: 77 Clientes Clientes que pediram um Tuning: 55 Clientes Preciso te dar mais motivos para aprender sobre Tuning???
Consultoria de Tuning – Cenários Reais Clientes Grandes com Ambientes Complexos: Tem um DBA
Consultoria de Tuning – Cenários Reais Clientes de Pequeno e Médio Porte: OPA!!! Estamos aí!!! Normalmente não Tem um DBA
Agenda - Passo a Passo de Tuning 1.Conhecer o ambiente do Cliente 2.Criação de rotinas de Log (Baseline) i.Log da Whoisactive ii.Log Queries Demoradas 3.Atualização de Estatísticas 4.Desfragmentação de Índices 5.WaitsStats 6.Análise de queries (Parte Principal do Tuning) 7.DMV de Utilização de Índices 8.DEMO 9.Relatório de Melhorias
1 - Conhecer o ambiente do Cliente Validar com o cliente como a empresa funciona O que a empresa faz (qual a criticidade do ambiente) Qual o horário de funcionamento (horário de pico) Conferir a versão do SQL e as Maiores Bases e Tabelas Analisar os recursos do Servidor Analisar a quantidade de memória disponível e o limite do SQL Server
2 - Log de histórico da sp_whoisactive Link para Download do código dessa procedure: /03/22/released-who-is-active-v11-11.aspx São quase 5 mil linhas de código Adam Machanic Rotina para criar um histórico com o resultado dessa procedure a cada 1 min: um-log-de-historico-da-sp_whoisactive/
História Real do Dia a Dia Usuário: Meu relatório esta Lento!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! DBA: Eu conferi no meu log, vi que você rodou ele às 13h45min, da máquina FIN01 e ele demorou 1min27s. Mas pode deixar que vou tentar melhorar esse tempo. DBA: Lento Quanto? Usuário: Está demorando uns 15 minutos... Uma Jaca!!! Poucos segundos depois...
História Real do Dia a Dia Usuário: É rapaz... É isso mesmo. Não são 15 minutos não... me confundi... Mas está lento!!! Poucos minutos depois... DBA: Pronto. Agora está rodando em 1 segundo! Usuário: COMO?? Macumba?? Milagre!!!! Como que esse miserável da TI sabe disso???
História Real do Dia a Dia DBA Comemorando: Que Log é esse que tem o poder de desmascarar um usuário? Server Side Trace (Profile) ou Extended Events
Passo a passo para a criação de um Trace de queries demoradas no BD: demoradas-do-banco-de-dados-parte-1/ do-banco-de-dados-parte-2/ 2 - Log de queries Lentas Se usado de forma errada, o profile e até mesmo o XEvents pode parar seu banco de dados.
Até esse momento criamos duas rotinas para ficar coletando informações do ambiente do cliente: Foto da whoisactive (a cada 1 minuto) Queries mais demoradas do ambiente Deixo esses jobs rodando por 2 ou 3 dias no ambiente do cliente e não faço nenhuma intervenção No final da consultoria vamos validar se o número de queries lentas diminuiu Passado 2 ou 3 dias de coleta... Agora sim podemos começar a realizar nossas melhorias de Tuning Onde estamos?
3 - Atualização de estatísticas Algoritmo de atualização de estatísticas no SQL Server: % do tamanho da tabela Pode acontecer a qualquer momento (inclusive durante o dia) Atualização do tipo SAMPLE (SQL escolhe o % de dados que será analisado) Criar uma rotina diária de atualização de estatísticas: seu-banco-de-dados/ Melhorias do SQL Server Já vem nativo (T2371) Em números de linhas: – 25% – 10% – 3.2% – 0,5% – 0,31% rver/2011/09/07/changes-to-automatic- update-statistics-in-sql-server-traceflag-2371/
4 - Desfragmentação de Índices Criar uma rotina diária de Desfragmentação de índices REBUILD x REORGANIZE Scripts ola hallengren maintenance.html
5 - WaitStats DMV: dm_os_wait_stats DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR) SQL Server Wait Types Library (Paul Randal):
6 – Análise de queries Hora de separar os Homens dos Meninos!!! É aqui que você tem o maior ganho no seu Tuning É a parte que demanda mais horas, mas é o que vai deixar o cliente satisfeito
Análise das queries da tabela Traces..Traces: Queries com maiores Leituras select * from Traces..Traces order by reads desc Queries que mais se repetem no trace order by textdata desc Queries que mais consomem CPU order by CPU desc Queries que mais demoram order by Duration desc 6 – Análise de queries
Conhecimento necessário para melhorar essas queries: Índices T-SQL Plano de Execução Ctrl+L visualizamos o plano estimado para essa query Ctrl+M e execute a query: é mostrado o plano real da execução 6 – Análise de queries
Dicas para analisar uma query: 1.SET STATISTICS IO ON Consumo Antes: Table 'NOMETABELA'. Scan count 1, logical reads Olhar o plano de execução i.Ctrl+M e execute a query ii.Analise se o SQL te sugeriu um índice iii.Se sugeriu, valide se realmente vale a pena iv.Se não sugeriu, valide se pode ser criado um índice melhor que o utilizado pela query 3.Analise se a query tem filtros suficientes 4.Analise a query e vê se ela pode ser feita de outra forma (sub- queries, conversão implícita, funções na cláusula WHERE e etc) Consumo Depois: Table 'NOMETABELA'. Scan count 1, logical reads – Análise de queries
Que tal analisar esse execution Plan?
dm_db_index_usage_stats – Essa dmv informa quantas vezes um índice foi utilizado desde quando o SQL Server foi reiniciado. Obs.: A query está nas anotações do Slide BUG no SQL 2012 e 2014 (reinicia com REBUILD): indexes-still-broken/ O que faço com ela? Roda nas maiores tabelas para validar se os índices existentes estão realmente sendo utilizados Se não tiverem, monitora por um mês no mínimo para excluir Rotina pronta para guardar um histórico dessa informação: utilizacao-de-indices/ utilizacao-de-indices/ Além de índices não utilizados, também fique de olho em índices duplicados! DMVs de índices - Utilização de Índices
Relatório Final de Consultoria Documentação: Coloque muitos prints das rotinas que você implementou Explique as melhorias. Não deixe passar nada Inclua todas as queries que melhorou Mostre o ANTES e o DEPOIS do “SET STATISTICS IO ON” em Vermelho, Negrito e com fonte maior Consumo Antes: Table 'NOMETABELA'. Scan count 1, logical reads Consumo Depois: Table 'NOMETABELA'. Scan count 1, logical reads 1153
Relatório Final de Consultoria ANTES DEPOIS 80% de Redução das queries que demoram mais de 3 segundos
Final da Consultoria Cliente Feliz Consultor Feliz Fazendo um trabalho bom em um cliente, você ganha esse cliente para sempre!!! Seu melhor marketing é um cliente satisfeito indicando seus serviços para novos clientes do networking dele
Entendemos como o ambiente funciona Criamos um monitoramento de queries lentas Criamos um job de Atual Estatísticas e Desfrag. de Índices Melhoramos as queries que mais demoram Evidenciamos as melhorias alcançadas Resumo do passo a passo para a consultoria de Tuning
Conclusão Em alguns momentos você vai precisar de outras técnicas mais avançadas de Tuning, mas com esse passo a passo, você já consegue resolver muitos casos de lentidão Vai aprender um pouco mais a cada Tuning (Muito legal isso!) Se você quer trabalhar com consultoria, Tuning é a parte do SQL que você precisa aprender bem
Referências Estatísticas: (Livro gratuito) Índices: PAGE Split: Execution Plan: Livro: Livro Grátis: 2?utm_term=executionplans&utm_content=buffer4a0ec&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer SQL Server Performance Tuning Using Wait Statistics: A Beginner’s Guide: Estatísticas: (Livro gratuito) de-dados/ Índices: transaction-log-edition.aspx Livro: PAGE Split: happens-why-does-it-happen-why-worry.aspx Execution Plan: Livro Grátis: 2?utm_term=executionplans&utm_content=buffer4a0ec&utm_medium=social&utm_source=twitt er.com&utm_campaign=buffer WAITS STATS: what-do-they-mean.aspx SQL Server Performance Tuning Using Wait Statistics: A Beginner’s Guide: Download White Paper WaitStats: CCQQFjAB&url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2F4%2F7%2Fa%2F4 7a548b9-249e-484c-abd7-29f31282b04d%2FPerformance_Tuning_Waits_Queues.doc&ei=L- zEVM3uPPaHsQT75oBg&usg=AFQjCNFRIebSlMLnry8gH99CQklhdmokJw&sig2=KjKuBRKVN WjcUv9Q8PG7uQ&bvm=bv ,d.cWc
Dicas de Materiais Grátis Livros: dba?utm_source=simpletalk&utm_medium=weblink&utm_content=st_bradbook200907&utm_campaign=sqlbac kupbundle&__hstc= bdbc59f5f888a85d2c87a85f9b4a38d &__hssc= &__hsfp= Vídeo Aulas: Whitepaper SQL Blogs
Para quem é do Rio de Janeiro SQL Server Discovery Day 25 de junho de 2016, das 08:30 às 19:00 tickets tickets
Contatos br.linkedin.com/in/FabricioLimaSolucoesEmBD fabriciolima.net
OBRIGADO PESSOAL!!!