• Nenhum resultado encontrado

ESTUDODECASO

N/A
N/A
Protected

Academic year: 2021

Share "ESTUDODECASO"

Copied!
63
0
0

Texto

(1)

ESTUDO DE CASO

(2)

Objetivo

(3)

Objetivo

Encontrar as consultas de um grupo de

trabalho através do SQL Profiler.

Identificar as consultas e/ou

procedimentos que tenham o maior

impacto.

Analisar o plano de execução e as

(4)

Objetivo

Identificar consultas que necessitam de

ajustes

Identificar índices que devem ser criados.

Verificar os efeitos obtidos.

Repetir os processos anteriores para

(5)

O Artigo

(6)

Artigo

 Publicado em 9 de março de 2009.  Autor, Gail Shaw

 Título Original - Finding the Causes of Poor Performance in SQL Server

 Motivação – Dificuldade em solucionar um problema de desempenho no SQL Server. Propósito de responder

perguntas do tipo.

◦Por onde começar ?

◦O que fazer ?

(7)

Cenário

(8)

Cenário

Hipotético banco de dados que tem um

mal desempenho.

Procura por procedimentos e consultas

problemáticas.

Utilização da ferramenta SQL Profiler.

Análise do plano de execução, das

estatísticas das consultas e proposição de

ajustes.

(9)

O Problema

(10)

O Problema

 Manter um fórum de internet ativo.

 Inicialmente o desempenho era satisfatório.

 Com o volume de dados crescendo e o aumento

de carga no servidor as consultas começaram a ficar lentas.

 Deadlocks começaram a ser frequentes.

 Análise revelou que no banco de dados não foram

(11)

O Plano

(12)

O Plano

Muito provavelmente a criação de índices

úteis resolveria o problema.

Identificar dentre as consultas que são

executadas as tabelas e colunas mais

usadas, para então criar os índices.

O seguinte plano foi montado para

identificar os índices a serem criados e

outras alterações a serem realizadas:

(13)

O Plano

1. Capturar os traços (trace) de um

intervalo enquanto o servidor está ativo.

◦Identificará as consultas que constituem a carga

de trabalho do servidor.

2. Importar os resultados dos traços para

uma tabela do banco de dados.

◦Analisá-los para identificar as consultas ou

procedimentos que estão tendo o maior impacto sobre o servidor.

(14)

O Plano

3. Executar os procedimentos armazenados no

Management Studio em um banco de dados

de teste.

◦Analisar o plano de execução e as estatísticas das consultas.

4. Usar o plano de execução e as estatísticas

para identificar consultas que necessitam de

ajustes e índices que necessitam ser criados.

5.Implementar as mudanças e rever os efeitos.

(15)

A Execução do Plano

(16)

A Execução do Plano

◦Identificar os procedimentos com:

A maior duração e/ou

O maior valor de CPU e/ou

(17)

A Execução do Plano

◦A interface gráfica do Profiler degrada a performance de servidores.

◦Com utilização do script o processo pode ser automatizado.

◦Foi utilizado o conjunto de procedimentos da sp_trace para capturar o arquivo de trace.

(18)

A Execução do Plano

◦A definição da Trace descreve:

Os eventos (events) necessário para análise.

As colunas de dados (data columns) necessárias

para análise de cada evento.

Qualquer filtro (filters) necessário para omitir

(19)

A Execução do Plano

◦Importantes eventos capturados

RPC:Completed e

TSQL:BatchCompleted

◦Importantes colunas de dados a serem exibidas

TextData, CPU,

Reads, Writes e Duration.

(20)

A Execução do Plano

◦O endereço do Script foi armazenado em um diretório diferente do que armazena os

arquivos de dados e logs.

◦O tempo de trace foi agendado para executar durante 30 minutos após o seu início.

◦Foi configurado o tamanho dos arquivos a fim de gerá-los em pequena quantidade.

(21)

A Execução do Plano

(22)

A Execução do Plano

◦Os dados do Trace foram carregados para uma tabela, dedicada, para uma melhor análise.

◦Foi utilizado a função proprietária do SQL Server para carregar os dados do Trace na tabela criada fn_trace_gettable.

◦A duração foi armazenada em milisegundos e não em microsegundos conforme padrão do SQL Server.

(23)

A Execução do Plano

◦Ordenando em forma decrescente da duração, leitura ou CPU foi focado somente as consultas que apareceram no topo.

◦A primeira linha trata-se de um processo executado uma única vez no dia e por este motivo não foi avaliado.

(24)

A Execução do Plano

◦Uma vez que o aplicativo utiliza somente stored procedures criou-se uma consulta específica para demonstrar o nome das

(25)

A Execução do Plano

◦Inicialmente foram tratadas somente os dois primeiros procedimentos por acreditar que

seriam suficiente para melhorar o desempenho da aplicação.

◦Caso não seja suficiente uma nova análise seria realizada.

(26)

A Execução dos Procedimentos

(27)

A Execução dos Procedimentos

(28)

A Execução dos Procedimentos

◦Procedimento ViewThread

Atualiza a visualização das estatísticas da Thread.Atualiza o status do usuário.

Lista os comentários da discussão juntamente

(29)

A Execução dos Procedimentos

Código Completo da ViewThread

(30)

A Execução dos Procedimentos

Procedimento ViewThread

Com a estatística ativada analisamos os planos de

(31)

A Execução dos Procedimentos

Procedimento ViewThread

Resultado da primeira consulta.

(32)

A Execução dos Procedimentos

Procedimento ViewThread

Resultado da terceira consulta.

(33)

A Execução dos Procedimentos

(34)

A Execução dos Procedimentos

◦Procedimento ViewForum

Atualiza o status do usuário.

Lista os detalhes da discussão de uma página

requerida, no máximo 20 detalhes por página, de um fórum selecionado.

(35)

A Execução dos Procedimentos

Código Completo da ViewForum

(36)

A Execução dos Procedimentos

Procedimento ViewForum

Com a estatística ativada analisamos os planos de

(37)

A Execução dos Procedimentos

Procedimento ViewForum

(38)

A Execução dos Procedimentos

Procedimento ViewForum

(39)

Aplicação das Mudanças

(40)

Aplicação das Mudanças

(41)

Aplicação das Mudanças

Solução para Terceira Consulta

Primeiro ponto analisou-se junto ao desenvolvedor

a real necessidade comando SELECT *.

Alterou-se o comando para recuperar somente os

cinco atributos necessários, porém as estatística de execução não modificaram.

Foi identificado pelo plano de execução que o

(42)

Criação do Índice

O predicado sinalizado foi o atributo ThreadID. Criou-se um índice por este campo.

(43)

Aplicação das Mudanças

Resultado da Solução Terceira Consulta

Anterior

(44)

Aplicação das Mudanças

Resultado da Solução Terceira Consulta

(45)

Aplicação das Mudanças

(46)
(47)

Aplicação das Mudanças

Solução para Segunda Consulta

Não foi identificado necessidade de melhoria nos

códigos.

Foi identificado pelo plano de execução que o

(48)

Criação do Índice

O predicado sinalizado foi o atributo ForumID. Criou-se um índice por este campo.

(49)

Aplicação das Mudanças

Solução para Segunda Consulta

Não foi obtido sucesso, pois o plano não se

modificou.

O índice não foi utilizado.

Foi analisado os demais itens do plano.

(50)

Criação do Índice

Existe uma junção com a tabela Users, pelo atributo

CreatedBy.

E uma outra junção novamente com a tabela Users, pelo atributo LastPoster. Um novo índice foi criado com os atributos ForumID, CreatedBy e

(51)

Aplicação das Mudanças

Solução para Segunda Consulta

Não foi obtido sucesso, pois o plano não se

modificou.

O índice não foi utilizado.

Uma nova análise do plano foi realizada.

(52)

Criação do Índice

Existe um outro predicado na consulta que é demonstrado na cláusula ORDER BY, o atributo LastModified.

Um novo índice foi criado com os

atributos ForumID e LastModified.

(53)

Resultado da Solução Segunda Consulta

Aplicação das Mudanças

Anterior

(54)

Aplicação das Mudanças

Resultado da Solução Segunda Consulta

(55)

Aplicação das Mudanças

Aperfeiçoamento da Solução

A quantidade de leituras na tabela Threads foi

diminuído.

A quantidade de leituras na tabela Users foi

aumentada.

Foi alterado o índice para incluir as colunas, Title, CreatedOn, TotalReplies, TotalViews, Locked, CreatedBy, LastPoster, na propriedade INCLUDE no índice.

(56)

Resultado da Solução Segunda Consulta

Aplicação das Mudanças

Anterior

(57)

Aplicação das Mudanças

Resultado da Solução Segunda Consulta

(58)

O Resultado

(59)

O Resultado

◦Uma nova captura do Trace foi realizado no novo ambiente com os índices criados.

◦Processos repetidos:

Carga do resultado do Trace para a tabela.Verificação dos Top 3.

(60)
(61)

Conclusão

◦Foi encontrada as consultas que constituiam a

carga de trabalho do servidor.

◦Foi agregado as estatísticas dos procedimentos

para identificar os procedimentos com maiores impactos.

◦Foi utilizado o plano de execução e as estatísticas

das consultas para apontar os problemas.

◦Foi identificado os índices que melhor resolveriam

(62)

Conclusão

◦A otimização requer experiência, tentativas, conhecimento.

◦E paciência para analisar cada item, criar as soluções e verificar a eficácia1 e eficiência2 da solução.

1 Eficácia, o que fazer: fazendo as coisas certas. 2 Eficiência, como fazer: fazendo certo as coisas.

(63)

Dúvidas ?

 Faculdade INED de Tecnologia  Curso de Banco de Dados  Disciplina de Otimização de Banco de Dados  Professor Rogério Morais Rocha  Autor Rogério Morais Rocha

Referências

Documentos relacionados

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for

Mesmo com suas ativas participações na luta política, as mulheres militantes carregavam consigo o signo do preconceito existente para com elas por parte não somente dos militares,

As mulheres travam uma história de luta por reconhecimento no decorrer do tempo sistematicamente o gênero masculino dominava o feminino, onde prevalecia a hierarquização do sexo

Atualmente o predomínio dessas linguagens verbais e não verbais, ancorados nos gêneros, faz necessário introduzir o gênero capa de revista nas aulas de Língua Portuguesa, pois,

Identificar a produção do conhecimento em enfermagem no período pós-parto imediato período Greenberg, nos últimos 5 anos, de 2005 a 2009;Demonstrar os resultados da

Diante dos resultados encontrados nesta pesquisa, verificou-se que o espaço articular coxofemoral, assim como a dor articular do quadril não sofrem influência direta

The DCF model using the Free Cash Flow to the Firm (FCFF) method, estimates in the first place the Enterprise Value of the company, that represents the value of all future cash

Nota: Visto que o atraso de enfileiramento e o componente variável do atraso de rede já são incluídos nos cálculos do buffer de controle de variação de sinal, o atraso total é,