Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouElza Stachinski Affonso Alterado mais de 7 anos atrás
1
Passo a Passo para realizar uma Consultoria de Tuning em um Cliente Fabrício Lima | FabricioLima Soluções em BD Site: http://www.fabriciolima.net/ SQL Saturday #570 - SP #SqlSatSP
2
PATROCINADORES
3
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 http://www.fabriciolima.net/blog
4
Consultoria de Tuning – Cenários Reais Clientes que já atendi em consultorias: 84 Clientes Clientes que pediram um Tuning: 63 Clientes Preciso te dar mais motivos para aprender sobre Tuning???
5
Consultoria de Tuning – Cenários Reais Clientes Grandes com Ambientes Complexos: Tem um DBA Esses clientes nós perdemos igual essa criança perdeu esse avião:
6
Consultoria de Tuning – Cenários Reais Clientes de Pequeno e Médio Porte: OPA!!! Estamos aí!!! Normalmente não Tem um DBA
7
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
8
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.Rotinas de Manutenção 4.Análise de queries (Parte Principal do Tuning) 5.DMV de Utilização de Índices 6.DEMO 7.Relatório de Melhorias
9
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
10
Log de histórico da sp_whoisactive Link para Download do código dessa procedure: http://sqlblog.com/blogs/adam_machanic/archive/ 2012/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: http://www.fabriciolima.net/blog/2016/03/17/queries-do-dia-a-dia-criando- um-log-de-historico-da-sp_whoisactive/
11
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...
12
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???
13
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
14
Passo a passo para a criação de um Trace de queries demoradas no BD: http://www.fabriciolima.net/blog/2010/06/05/passo-a-passo-para-encontrar-as-querys-mais- demoradas-do-banco-de-dados-parte-1/ http://fabriciolima.net/blog/2010/06/05/passo-a-passo-para-encontrar-as-querys-mais-demoradas- do-banco-de-dados-parte-2/ Log de queries Lentas Se usado de forma errada, o profile e até mesmo o XEvents pode parar seu banco de dados.
15
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?
16
3 - Atualização de estatísticas Algoritmo de atualização de estatísticas no SQL Server: 500 + 20% 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: https://ola.hallengren.com/sql-server-index-and-statistics-maintenance.html Melhorias do SQL Server 2016. Já vem nativo (T2371) Em números de linhas: 25.000 – 25% 100.000 – 10% 1.000.000 – 3.2% 50.000.000 – 0,5% 100.000.000 – 0,31% https://blogs.msdn.microsoft.com/saponsqlse rver/2011/09/07/changes-to-automatic- update-statistics-in-sql-server-traceflag-2371/
17
Rotinas de manutenção Criar uma rotina diária de Desfragmentação de índices REBUILD x REORGANIZE Criar uma rotina diária de atualização de estatísticas Scripts ola hallengren https://ola.hallengren.com/sql-server-index-and-statistics-maintenance.html
18
WaitStats DMV: dm_os_wait_stats DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR) SQL Server Wait Types Library (Paul Randal): https://www.sqlskills.com/help/waits/
19
Análise de queries Hora de separar o DBA TESTKING do DBA EXPERIÊNTE É aqui que você tem o maior ganho no seu Tuning É a parte que demanda mais horas, mas é o que vai deixar o cliente satisfeito DBA TESTKING ATIRA PARA TODOS OS LADOS ________________ DBA EXPERIÊNTE TÊM ALVOS CERTOS DBA TESTKING DÃO DESCULPAS ________________ DBA EXPERIÊNTE DÃO UM JEITO DBA TESTKING SÃO ESPERTOS ________________ DBA EXPERIÊNTE SÃO INTELIGENTES
20
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 Análise de queries
21
Conhecimento necessário para melhorar essas queries: Índices Saiba tudo sobre índices que eles podem te transformar em um herói na empresa 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 Análise de queries
22
PosConference – 09/10 - SP Local Microsoft Brasil – SP Inscrições http://tinyurl.com/SQLSat570
23
Dicas para analisar uma query: 1.SET STATISTICS IO ON Consumo Antes: Table 'NOMETABELA'. Scan count 1, logical reads 532078 2.Olhar o plano de execução i.Ctrl+M e execute a query ii.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 1153 Análise de queries
24
Que tal analisar esse execution Plan?
25
dm_db_index_usage_stats – Essa dmv informa quantas vezes um índice foi utilizado desde quando o SQL Server foi reiniciado. BUG no SQL 2012 e 2014 (reinicia com REBUILD): http://www.littlekendra.com/2016/03/07/sql-server-2016-rc0-fixes-index-usage-stats-bug-missing- indexes-still-broken/http://www.littlekendra.com/2016/03/07/sql-server-2016-rc0-fixes-index-usage-stats-bug-missing- 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: http://www.fabriciolima.net/blog/2016/06/07/queries-do-dia-a-dia-rotina-para-criar-um-historico-de- utilizacao-de-indices/http://www.fabriciolima.net/blog/2016/06/07/queries-do-dia-a-dia-rotina-para-criar-um-historico-de- utilizacao-de-indices/ Além de índices não utilizados, também fique de olho em índices duplicados! DMV de índices - Utilização de Índices
27
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 532078 Consumo Depois: Table 'NOMETABELA'. Scan count 1, logical reads 1153
28
Relatório Final de Consultoria ANTES DEPOIS 80% de Redução das queries que demoram mais de 3 segundos
29
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
30
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
31
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
32
Referências Estatísticas: http://www.pythian.com/blog/sql-server-statistics-maintenance-and-best-practices/ http://www.red-gate.com/community/books/sql-server-statistics (Livro gratuito) http://www.fabriciolima.net/blog/2011/06/29/rotina-para-atualizar-as-estatisticas-do-seu-banco-de-dados/ Índices: https://www.simple-talk.com/sql/learn-sql-server/sql-server-index-basics/ http://www.sql-server-performance.com/2007/clustered-indexes/ http://www.mssqltips.com/sqlservertip/1206/understanding-sql-server-indexing/ http://www.mssqltips.com/sql-server-tip-category/38/indexing/ http://blogs.msdn.com/b/timchapman/archive/2012/09/28/index-rebuild-vs-reorganize-the-transaction-log-edition.aspx https://www.youtube.com/watch?v=p9FlnOPltA8 http://blogs.msdn.com/b/bartd/archive/2007/07/19/are-you-using-sql-s-missing-index-dmvs.aspx http://www.sql-server-performance.com/2009/identify-missing-indexes-using-sql-server-dmvs/ http://www.mssqltips.com/sqlservertip/1634/using-sql-server-dmvs-to-identify-missing-indexes/ PAGE Split: http://www.sqlskills.com/blogs/paul/tracking-page-splits-using-the-transaction-log/ http://sqlblogcasts.com/blogs/tonyrogerson/archive/2007/06/28/what-is-a-page-split-what-happens-why-does-it-happen-why-worry.aspx Execution Plan: http://www.brentozar.com/archive/2012/01/art-of-execution-plan/ Livro: http://www.amazon.com/Expert-Performance-Indexing-Server-2012/dp/1430237414 http://www.amazon.com/Server-Query-Performance-Tuning-Experts/dp/1430242035 Livro Grátis: http://www.red-gate.com/community/books/sql-server-execution-plans-ed- 2?utm_term=executionplans&utm_content=buffer4a0ec&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer https://www.simple-talk.com/books/sql-books/complete-showplan-operators/ SQL Server Performance Tuning Using Wait Statistics: A Beginner’s Guide: https://www.sqlskills.com/help/sql-server-performance-tuning-using-wait-statistics/ Estatísticas: http://www.pythian.com/blog/sql-server-statistics-maintenance-and-best-practices/ http://www.red-gate.com/community/books/sql-server-statistics (Livro gratuito) http://www.fabriciolima.net/blog/2011/06/29/rotina-para-atualizar-as-estatisticas-do-seu-banco- de-dados/ Índices: https://www.simple-talk.com/sql/learn-sql-server/sql-server-index-basics/ http://www.sql-server-performance.com/2007/clustered-indexes/ http://www.mssqltips.com/sqlservertip/1206/understanding-sql-server-indexing/ http://www.mssqltips.com/sql-server-tip-category/38/indexing/ http://blogs.msdn.com/b/timchapman/archive/2012/09/28/index-rebuild-vs-reorganize-the- transaction-log-edition.aspx https://www.youtube.com/watch?v=p9FlnOPltA8 http://blogs.msdn.com/b/bartd/archive/2007/07/19/are-you-using-sql-s-missing-index-dmvs.aspx http://www.sql-server-performance.com/2009/identify-missing-indexes-using-sql-server-dmvs/ http://www.mssqltips.com/sqlservertip/1634/using-sql-server-dmvs-to-identify-missing-indexes/ Livro: http://www.amazon.com/Expert-Performance-Indexing-Server-2012/dp/1430237414 PAGE Split: http://www.sqlskills.com/blogs/paul/tracking-page-splits-using-the-transaction-log/ http://sqlblogcasts.com/blogs/tonyrogerson/archive/2007/06/28/what-is-a-page-split-what- happens-why-does-it-happen-why-worry.aspx Execution Plan: http://www.brentozar.com/archive/2012/01/art-of-execution-plan/ Livro Grátis: http://www.red-gate.com/community/books/sql-server-execution-plans-ed- 2?utm_term=executionplans&utm_content=buffer4a0ec&utm_medium=social&utm_source=twitt er.com&utm_campaign=buffer https://www.simple-talk.com/books/sql-books/complete-showplan-operators/ WAITS STATS: http://www.sqlskills.com/blogs/paul/wait-statistics-or-please-tell-me-where-it-hurts/ http://blogs.msdn.com/b/sqlsakthi/archive/2011/02/08/different-status-of-a-spid-in-sql-server-and- what-do-they-mean.aspx SQL Server Performance Tuning Using Wait Statistics: A Beginner’s Guide: https://www.sqlskills.com/help/sql-server-performance-tuning-using-wait-statistics/ Download White Paper WaitStats: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=0 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.84349003,d.cWc
33
Dicas de Materiais Grátis Livros: http://www.microsoftvirtualacademy.com/ebooks http://www.fabriciolima.net/blog/2010/12/03/free-ebooks-sobre-sql-server-para-download/ http://www.johnsansom.com/dba-jumpstart/ http://www.red-gate.com/products/dba/dba-bundle/entrypage/2012-how-to-become-an-exceptional- dba?utm_source=simpletalk&utm_medium=weblink&utm_content=st_bradbook200907&utm_campaign=sqlbac kupbundle&__hstc=81186632.bdbc59f5f888a85d2c87a85f9b4a38d9.1441479079284.1441479079284.1441479 079284.1&__hssc=81186632.1.1441479079284&__hsfp=2767783758 http://www.red-gate.com/community/books/accidental-dba Vídeo Aulas: http://www.microsoftvirtualacademy.com/product-training/sql-server http://www.microsoftvirtualacademy.com/product-training/product-sql-server-pt https://technet.microsoft.com/en-us/dn912438 Whitepaper SQL https://technet.microsoft.com/en-us/sqlserver/bb671430 Blogs http://sqlmag.com/blog/sql-server-basics http://www.sqlservercentral.com/ https://www.mssqltips.com/index.asp http://blog.sqlauthority.com/ http://www.brentozar.com/sql/becoming-a-dba/ https://www.sqlskills.com/help/accidental-dba/ https://technet.microsoft.com/en-us/dn912438 http://fundamentals.sqlpass.org/MeetingArchive.aspx http://www.virtualpass.com.br/
34
Contatos contato@fabriciolima.net www.facebook.com/pages/Fabricio-Lima-Consultoria- SQL-Server/239658476126229 @Fabriciodba br.linkedin.com/in/FabricioLimaSolucoesEmBD fabriciolima.net http://www.fabriciolima.net/blog/
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.