A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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:

Apresentações semelhantes


Apresentação em tema: "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:"— Transcrição da apresentação:

1 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: http://www.fabriciolima.net/ #SqlSatRJ

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: 77 Clientes Clientes que pediram um Tuning: 55 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

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

9 2 - 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/

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

11 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???

12 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

13  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/ 2 - Log de queries Lentas  Se usado de forma errada, o profile e até mesmo o XEvents pode parar seu banco de dados.

14  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?

15 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: http://www.fabriciolima.net/blog/2011/06/29/rotina-para-atualizar-as-estatisticas-do- seu-banco-de-dados/ 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/

16 4 - Desfragmentação de Índices Criar uma rotina diária de Desfragmentação de índices REBUILD x REORGANIZE Scripts ola hallengren https://ola.hallengren.com/sql-server-index-and-statistics- maintenance.html

17 5 - 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/

18 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

19 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

20 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

21 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.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 1153 6 – Análise de queries

22 Que tal analisar esse execution Plan?

23 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): 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! DMVs de índices - Utilização de Índices

24

25 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

26 Relatório Final de Consultoria ANTES DEPOIS 80% de Redução das queries que demoram mais de 3 segundos

27 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

28 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

29 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

30 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

31 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/

32 Para quem é do Rio de Janeiro  http://facebook.com/devSQL http://facebook.com/devSQL  devsql-subscribe@yahoogrupos.com.br devsql-subscribe@yahoogrupos.com.br  SQL Server Discovery Day  25 de junho de 2016, das 08:30 às 19:00  http://www.eventbrite.com/e/sql-discovery-day- tickets-25185568714 http://www.eventbrite.com/e/sql-discovery-day- tickets-25185568714

33 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/

34 OBRIGADO PESSOAL!!!


Carregar ppt "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:"

Apresentações semelhantes


Anúncios Google