Você está na página 1de 19

Dez dicas para otimizar o

desempenho do SQL Server

Escrito por Patrick O’Keefe e Richard Douglas

Resumo Introdução
A otimização de desempenho no SQL Server pode ser um Considere suas metas de ajuste.
desafio. Uma vasta gama de informações está disponível sobre Todos nós queremos obter o valor máximo de nossas
a forma de abordar os problemas de desempenho em geral. No implementações do SQL Server. Aumentar a eficiência de seus
entanto, não há muita informação detalhada sobre problemas servidores de banco de dados libera recursos do sistema para
específicos e ainda menos informações sobre como aplicar esse outras tarefas, tais como relatórios de negócios ou consultas ad
conhecimento específico ao seu próprio ambiente. hoc. Para obter o máximo do investimento em hardware de sua
organização, você precisa garantir que a carga de trabalho do
Este artigo oferece 10 dicas para otimizar o desempenho do SQL ou aplicação executada nos servidores do banco de dados
SQL Server, com SQL Server 2008 e 2012 em mente. Não há esteja em execução da forma mais rápida e eficiente possível.
listas definitivas das dicas mais importantes, mas você não
errará começando por aqui. Mas o seu ajuste depende de suas metas. Você pode estar se
perguntando: "Será que estou obtendo a melhor eficiência da
Como um DBA, você, sem dúvida, tem seu próprio ponto minha implantação do SQL Server?". Mas alguém pode estar
de vista, assim como suas próprias dicas, truques e scripts se perguntando: "Minha aplicação se ajustará à escala?". Aqui
favoritos de otimização. Por que não se juntar à discussão sobre estão as principais formas de ajustar um sistema:
SQLServerPedia? •  Ajustar para atender às metas do contrato de nível de serviço (SLA)
ou dos indicadores chave de desempenho (KPI)
•  Ajustar para aumentar a eficiência, liberando assim os recursos
para outras finalidades
•  Ajustar para garantir a escalabilidade, ajudando assim a manter
SLAs ou KPIs no futuro
Lembre-se de que o ajuste é um processo Dica nº 10. A metodologia de criação
contínuo, não uma correção única. de linha de base e referência de
A otimização de desempenho é um desempenho ajuda você a detectar
processo contínuo. Por exemplo, ao os problemas.
ajustar para metas de SLA, será possível ter Visão geral do processo de criação
"concluído". No entanto, se você estiver de linha de base e referência de
ajustando para aumentar a eficiência ou desempenho A Figura 1 ilustra as
garantir a escalabilidade, seu trabalho etapas no processo de criação de linha
nunca será realmente concluído; esse tipo de base. As seções a seguir explicarão
de ajuste deve ser continuado até que o as principais etapas no processo.
desempenho esteja "bom o suficiente".
No futuro, quando o desempenho da
aplicação não for mais bom o suficiente,
Trabalhe para o ciclo de ajuste deverá ser executado
novamente.
aumentar a
"Boa o suficiente" geralmente tem a ver
escalabilidade e com os imperativos de negócios, como
a eficiência de SLAs ou requisitos de taxa de transferência
do sistema. Além desses requisitos, você
todos os servidores deve estar motivado para aumentar a
escalabilidade e a eficiência de todos os
de banco de servidores do banco de dados, mesmo
dados, mesmo se que os requisitos de negócios estejam
sendo cumpridos.
os requisitos de
Sobre este documento
negócios estiverem A otimização do desempenho no SQL
sendo cumpridos. Server é um desafio. Há uma variedade
de informações generalizadas sobre
vários pontos de dados, por exemplo,
contadores de desempenho e objetos de
gerenciamento dinâmico (DMOs), mas há
muito pouca informação sobre o que fazer
com esses dados e como interpretá-los.
Este artigo descreve 10 dicas importantes
que serão úteis nas trincheiras, permitindo
que você transforme alguns desses dados
em informações acionáveis.

Figura 1. O
 processo de criação de
linha de base

2
Antes de começar a fazer alterações, crie Estabeleça a norma.
um registro do desempenho atual do Depois de determinar o que deseja
sistema. Ao ajustar e otimizar, a maioria alcançar, então você precisa decidir
de nós ficará tentada a ir diretamente como vai medir o sucesso. Quais são
para os ajustes. Alguma vez você já pegou os contadores de sistema operacional,
seu carro no mecânico e pensou que ele contadores do SQL Server, medidas
estava funcionando pior do que antes? de recursos e outros pontos de dados
Você quer reclamar, mas simplesmente que proporcionarão o discernimento
não tem certeza. Você também pode se necessário?
perguntar se a causa do problema que
acha existir agora é algo que o mecânico Depois de ter essa lista, você precisará
fez ou algo que aconteceu depois. estabelecer sua linha de base, ou o
Infelizmente, o desempenho do banco de desempenho típico de seu sistema,
dados pode sofrer os mesmos problemas. conforme os critérios escolhidos. Você A referência de
precisa coletar dados suficientes durante
Depois de ler este artigo, você estará um período de tempo suficientemente desempenho ajuda
cheio de ideias e vai querer implementar
sua estratégia de criação de linha de
longo para dar uma amostra
representativa do desempenho típico
a identificar um
base e referência de desempenho do sistema. Assim que tiver os dados, comportamento
imediatamente. A primeira etapa que você pode calcular a média dos valores
você precisa realizar não é a mais durante o período para estabelecer sua anormal, porque
emocionante, mas certamente é uma das
mais importantes: é hora de estabelecer
primeira linha de base. Depois de fazer
modificações no sistema, você terá
você tem uma boa
como seu ambiente atende aos critérios uma nova referência de desempenho e indicação do que é
que você pretende mudar. a comparará com a original para poder
medir objetivamente o efeito de suas um comportamento
Determine suas metas. alterações. normal.
Antes de fazer qualquer coisa em seu
sistema, decida o que você deseja Não monitore apenas os valores
alcançar. Há aspectos de seu SLA que médios; acompanhe também o desvio
precisam ser tratados com respeito ao da norma. No entanto, é importante ter
desempenho, consumo de recursos ou cuidado com as médias. No mínimo,
capacidade? Você está resolvendo um calcule o desvio padrão de cada
problema atual em produção? Houve contador para ter uma indicação da
queixas com relação ao tempo do variação ao longo do tempo. Considere
recurso? Estabeleça algumas metas claras. um alpinista que soube que o diâmetro
médio da corda é de 1 cm. O alpinista
A maioria de nós tem muitos bancos salta com confiança para o lado.
de dados e instâncias para cuidar. Para Ele balança várias centenas de metros
aumentar o valor de nossos esforços, sobre as rochas afiadas e sorri, satisfeito.
precisamos pensar com cuidado no que Em seguida, ele descobre que a seção
é exigido de um determinado sistema de mais grossa da corda é de 2 cm e a mais
modo que tenha um bom desempenho fina é de 0,1 cm. Ops!
e atenda às expectativas dos usuários.
Se você exagerar na análise e no ajuste, Se você não estiver familiarizado com
poderá descobrir que uma quantidade o desvio padrão, consulte um livro de
desproporcional de tempo é gasta estatísticas para iniciantes. Você não
em sistemas de baixa prioridade, em precisa saber tudo, mas ajuda saber o
detrimento dos principais sistemas de básico.
produção. Seja claro sobre exatamente o
que deseja alcançar com seus esforços A mensagem principal aqui não é apenas
de medição e ajuste. Priorize-os e, acompanhar as médias, mas também
idealmente, obtenha adesão e contratos acompanhar o desvio da norma (meio).
de um patrocinador de negócios. Decida o que essa norma deve ser (isso
é frequentemente encontrado no SLA).

3
Sua missão não é obter o máximo no mesmo lugar que o banco de dados
desempenho possível, e sim conseguir sendo monitorado.
o melhor ajuste possível para suas
metas de desempenho e, em seguida, Limite o número de alterações feitas ao
limitar o desvio dessas metas o máximo mesmo tempo.
possível. Tudo mais representa tempo e Tente limitar o número de alterações
esforço desperdiçados e também pode feitas entre cada referência de
apontar para uma subutilização dos desempenho. Construa suas
recursos de infraestrutura. modificações para testar uma hipótese
específica. Isso permitirá que você inclua
Qual é o volume de dados necessário ou exclua de forma meticulosa cada
para uma linha de base? A quantidade candidato a melhoria. Ao aprimorar uma
de dados necessários para estabelecer solução, você entenderá exatamente
uma linha de base depende de como por que está vendo a mudança no
Sua missão não é a carga varia ao longo do tempo. comportamento, e isso muitas vezes
obter o máximo Converse com os administradores
de sistema, usuários finais e
revela uma série de opções adicionais de
possível melhoria.
desempenho administradores de aplicações. Eles
geralmente têm uma boa noção de
possível; é conseguir quais são os padrões de uso. Você deve
Análise dos dados
Depois de fazer alterações em seu
o melhor ajuste reunir dados suficientes para cobrir
períodos fora de pico, médios e de pico.
sistema, você vai querer determinar
se elas tiveram o efeito desejado. Para
possível para É importante medir a quantidade que conseguir isso, repita as medidas tomadas
varia de carga e com que frequência.
suas metas de Os sistemas com padrões previsíveis
para a linha de base original por meio
de uma escala de tempo similarmente
desempenho e, em exigirão menos dados. Quanto maior a
variação, menor o intervalo de medição
representativa. Você pode então
comparar as duas linhas de base para:
seguida, limitar o e maior o tempo que você precisará Determinar se suas alterações causaram
•  
para medir e desenvolver uma linha de
desvio dessas metas base confiável. Para ir um pouco mais
o efeito desejado — Quando você ajustar
uma configuração, otimizar um índice
o máximo possível. além em nossa analogia do alpinista,
quanto maior o comprimento de corda
ou uma mudança no código SQL, a linha
de base permitirá dizer se essa mudança
que você examinar, melhor a chance teve o efeito desejado. Se você receber
de detectar as variações. A criticidade uma reclamação sobre um desempenho
do sistema e o impacto do seu fracasso mais lento, poderá dizer com certeza se
também afetarão a quantidade de a instrução é precisa sob a perspectiva do
análise a que ele deve ser submetido e a banco de dados.
confiabilidade que a amostra deve ter. O erro mais frequente que a maioria dos
DBAs juniores comete é tirar conclusões
Armazenamento dos dados precipitadas. Muitas vezes, você verá alguém
Quanto mais parâmetros você pular de alegria ao observar um aumento
monitorar e quanto menor a frequência, imediato no desempenho depois de fazer
maior o conjunto de dados que você uma ou mais alterações. Eles implantam na
vai coletar. Pode parecer óbvio, mas produção e se apressam em enviar e-mails
você precisa considerar a capacidade informando que o problema foi resolvido. Mas
que será necessária para armazenar as comemorações poderão ter curta duração
seus dados de medição. Quando quando os mesmos problemas ressurgem
você tiver alguns dados, será bastante algum tempo depois ou algum efeito colateral
simples extrapolar a medida em que desconhecido provocar outro problema.
este repositório vai crescer ao longo do Muitas vezes, isso pode resultar em um estado
tempo. Se você monitorar durante um que é menos desejável do que o original.
período prolongado, considere agregar Quando achar ter encontrado a resposta para
dados históricos em intervalos para um problema, teste-a e faça uma referência de
evitar que o repositório aumente muito. desempenho dos resultados na linha de base.
Esta é a única maneira confiável de saber com
Por motivos de desempenho, seu certeza que você progrediu.
repositório de medição não deve residir

4
•  Determinar se uma alteração apresentou Repita o processo de criação de linha de
algum efeito colateral inesperado — base quantas vezes forem necessárias.
Uma linha de base também permite ver O bom ajuste é um processo iterativo
objetivamente se uma mudança afetou um e científico. As dicas apresentadas
contador ou medida que você não esperava neste documento fornecem um bom
ser afetado. ponto de partida, mas elas são apenas
•  Antecipar os problemas antes que eles isso: um ponto de partida. O ajuste de
aconteçam — Ao usar uma linha de base, você desempenho é altamente personalizado
pode estabelecer normas de desempenho e regido pelo design, composição e uso
precisas em condições de carga típicas. Isto de cada sistema individual.
lhe permitirá prever se e quando você terá
problemas no futuro, com base em como A metodologia de criação de linha de
o consumo de recursos está tendendo hoje base e referência de desempenho é o
ou nas cargas de trabalho projetadas para elemento central do bom e confiável A quantidade de
cenários futuros. Por exemplo, você executa ajuste de desempenho. Ela fornece o
o planejamento de capacidade: ao extrapolar mapa, uma referência e os pontos de dados necessários
o consumo normal de recursos atuais por
usuário conectado, será possível prever quando
interesse necessários para descobrirmos
onde precisamos ir e como chegar
para estabelecer
seus sistemas terão gargalos de conexão do lá, para nos ajudar a garantir que não uma linha de base
usuário. nos perderemos no caminho. Uma
•  Solucionar problemas de forma mais eficaz — abordagem estruturada nos permite criar depende de como a
Já passou vários dias e noites combatendo
um problema de desempenho com seu banco
um desempenho confiável e consistente
em todo nosso portfólio do banco de
carga varia ao longo
de dados só para descobrir que na verdade dados. do tempo.
não tinha nada a ver com o banco de dados
em si? Estabelecer uma linha de base torna Dica nº 9. Os contadores de
muito mais fácil eliminar a instância de banco desempenho fornecem informações
de dados e apontar o culpado. Por exemplo, rápidas e úteis sobre as operações
suponha que o consumo de memória, de atualmente em execução.
repente, disparou. Você percebe o número Motivos para monitorar os contadores
de conexões aumentando drasticamente e de desempenho
bem acima de sua linha de base. Uma ligação Uma pergunta muito comum relacionada
rápida para o administrador da aplicação à otimização de desempenho do
confirma que um novo módulo foi implantado SQL Server é: "Quais contadores
na loja virtual. Não demora muito para eu devo monitorar?" Em termos de
provar que o novo desenvolvedor júnior está gerenciamento do SQL Server, há dois
escrevendo um código que não libera as grandes motivos para monitorar os
conexões de banco de dados como deveria. contadores de desempenho:
Aposto que você pode imaginar muitas outras •  Aumento da eficiência operacional
situações como esta. •  Prevenção de gargalos

Excluir as coisas que NÃO são responsáveis ​​ Embora se sobreponham, esses dois
por um problema pode poupar uma grande motivos permitem que você escolha
quantidade de tempo eliminando a confusão facilmente uma série de pontos de dados
e proporcionando um foco sobre exatamente para monitorar.
o que está causando o problema. Existem
muitos exemplos em que podemos comparar
Monitorar contadores de desempenho
contadores do sistema aos contadores do
para aumentar a eficiência operacional
SQL Server para incluir ou excluir rapidamente
O monitoramento operacional verifica
o banco de dados de um problema. Depois
o uso geral de recursos. Ele ajuda a
que os suspeitos de costume forem
responder a perguntas, tais como:
descartados, você poderá começar a busca
•  O servidor está prestes a ficar sem
por desvios significativos na linha de base,
recursos, como CPU, espaço em disco ou
coletar indicadores relacionados e analisar a
memória?
causa raiz.
•  Os arquivos de dados podem aumentar?
•  Os arquivos de dados de tamanho fixo têm
espaço livre para dados?

5
Você também pode usar os dados para Para responder às três perguntas feitas
fins de tendência. Um bom exemplo seria acima, você deve analisar os seguintes
coletar os tamanhos de todos os arquivos contadores:
de dados para direcionar suas taxas de
crescimento e prever futuras necessidades
de recursos.

Medidor Permite a você


Processor\%Processor Time Monitorar o consumo da CPU no servidor
LogicalDisk\Free MB Monitorar o espaço livre no(s) disco(s)
MSSQL$Instance:Databases\DataFile(s) Size (KB) Direcionar o crescimento ao longo do tempo
Memory\Pages/sec Verificar a paginação, que é uma boa indicação de
que os recursos de memória podem ser curtos
Limite o número Memory\Available MBytes Ver a quantidade de memória física disponível para
uso do sistema
de alterações
feitas entre cada Monitorar os contadores de desempenho •  Os principais subsistemas do SQL
para evitar gargalos Server, como o cache de buffer e
referência de O monitoramento de gargalos se cache de planos estão íntegros?

desempenho, para concentra mais em questões relacionadas


ao desempenho. Os dados coletados
•  Existe contenção no banco de dados?

que possa avaliar ajudam a responder a perguntas, tais Para responder a essas perguntas,
como: analise os seguintes contadores:
meticulosamente •  Existe um gargalo da CPU?
os efeitos de cada •  Existe um gargalo de E/S?

mudança. Medidor Permite a você


Processor\%Processor Time Monitorar o consumo da CPU permite que você
verifique se há um gargalo no servidor (indicado pelo
alto uso sustentado).
Espera de sinal é o tempo que um trabalhador gasta
Alta porcentagem de espera de sinal aguardando o tempo da CPU após ter acabado de
esperar algo mais (como um bloqueio, uma trava ou
outro sinal de espera).
O tempo gasto esperando a CPU é indicativo
de um gargalo da CPU.
A espera de sinal pode ser encontrada executando
DBCC SQLPERF(waitstats) no SQL Server 2000
ou consultando sys.dm_os_wait_stats no
SQL Server 2005.
Verifique se há gargalos de disco: se o valor for
Disco físico\média Tamanho da fila do disco
superior a 2, então será provável que exista um
gargalo de disco.
MSSQL$Instance:Buffer Manager\Page Life Expectativa de vida da página é o número de
Expectativa segundos que uma página permanece no cache do
buffer. Um número baixo indica que as páginas estão
sendo despejadas sem gastar muito tempo no cache,
o que reduz a eficácia do cache.
MSSQL$Instance:Plan Cache\Cache Hit Ratio Uma baixa taxa de acertos do cache de planos
significa que os planos não estão sendo reutilizados.
MSSQL$Instance:General Statistics\Processes Blocos longos indicam contenção de recursos.
Blocos

6
Dica nº 8. Alterar as configurações a memória máxima não é apenas
do servidor pode proporcionar um adequado para instâncias em um
ambiente mais estável. cluster, mas também aquelas instâncias
Alterar as configurações dentro de um que compartilham recursos com
produto para torná-lo mais estável qualquer outra aplicação. Se o uso de
pode parecer contraintuitivo, mas, memória do SQL Server for muito alto,
neste caso, realmente funciona. Como o sistema operacional poderá cortar
um DBA, seu trabalho será garantir agressivamente a quantidade de memória
um nível consistente de desempenho que pode utilizar, a fim de permitir que
para seus usuários quando eles ele próprio ou outra sala de aplicações
solicitam dados de suas aplicações. funcione.
Sem alterar as configurações descritas •  SQL Server 2008 — No SQL Server 2008
no restante deste documento, você R2 e anterior, a configuração de memória
pode experimentar cenários que Mín. e Máx. restringe apenas a quantidade
de memória que o pool de buffers usa (mais
Sage aconselha
podem degradar o desempenho
de seus usuários, sem aviso prévio. especificamente, apenas alocações de sobre como
página única de 8 KB). Isso significa que se
Essas opções podem ser facilmente
encontradas em sys. configurations, você executasse processos fora do pool de
solucionar
que lista as configurações no nível do buffers (como procedimentos armazenados
estendidos, CLR ou outros componentes,
problemas em
servidor, disponíveis juntamente com
informações adicionais. O atributo como Integration Services, Reporting apenas três
Services ou Analysis Services), você
Is_Dynamic em sys.configurations
mostra se a instância do SQL Server precisaria reduzir ainda mais esse valor.
palavras: "Eliminar
precisará ser reiniciada após uma SQL Server 2012 — O SQL Server 2012
•  
muda um pouco as coisas quando há um
ou incriminar".
alteração da configuração. Para
fazer a alteração, você chamaria gerenciador de memória central. Este
o procedimento sp_configure gerenciador de memória agora incorpora
armazenado com os parâmetros alocações de várias páginas, como grandes
relevantes. páginas de dados e planos em cache que
são maiores do que 8 KB. Este espaço de
As configurações de memória Mín. e memória agora também inclui algumas
Máx. podem garantir um determinado funcionalidades de CLR.
nível de desempenho.
Suponhamos que temos um cluster Duas opções de servidor podem ajudar o
Ativo/Ativo (ou um único host com desempenho indiretamente.
várias instâncias). Podemos fazer Não há opções que auxiliam diretamente
algumas alterações de configuração o desempenho, mas há duas opções que
que podem garantir que vamos cumprir podem ajudar de forma indireta.
nossos SLAs, no caso de um failover, •  Padrão de compactação de back-up —
em que ambas as instâncias residem na Esta opção define que os backups sejam
mesma caixa física. compactados por padrão. Embora isto
possa produzir ciclos extras de CPU
Neste cenário, fazemos alterações na durante a compactação, em geral, menos
configuração de memória Mín. e Máx. ciclos de CPU são usados ​​em comparação
para garantir que o host físico tenha a um back-up não compactado, pois
memória suficiente para lidar com menos dados são gravados no disco.
cada instância sem precisar tentar Dependendo da sua arquitetura de E/S, a
constantemente cortar de forma configuração dessa opção também pode
agressiva o conjunto de trabalho do reduzir a contenção de E/S.
outro. Uma alteração semelhante na •  A segunda opção pode ou não ser
configuração pode ser feita para utilizar divulgada em uma dica futura no cache de
alguns processadores, a fim de garantir planos. Você vai ter que esperar e ver se
um determinado nível de desempenho. chegou à nossa lista de top 10.
É importante observar que configurar

7
Dica nº 7. Encontre consultas de Diagnosticar um gargalo de
invasores no cache do plano. CPU No SQL Server, se você
Depois de identificar um gargalo, identificou um gargalo de CPU, a
você precisará encontrar a carga de primeira coisa que deverá fazer é
trabalho que está causando o gargalo. obter os principais consumidores
Isso é muito mais fácil de fazer desde a de CPU no servidor. Esta é uma
introdução de objetos de gerenciamento consulta muito simples em sys.
dinâmico (DMOs) no SQL Server 2005. dm_exec_query_stats:
Usuários do SQL Server 2000 e anterior
terão de se contentar com o uso do
Profiler ou rastreamento (mais sobre isso
na Dica nº 6).

Monitorar os SELECT TOP 50


qs.total_worker_time / execution_count AS avg_worker_time,
contadores de substring (st.text, (qs.statement_start_offset / 2) + 1,
(  ( CASE qs.statement_end_offset WHEN -1
desempenho pode THEN datalength (st.text)

ajudar a aumentar

ELSE qs.statement_end_offset END
- qs.statement_start_offset)/ 2)+ 1)
a eficiência AS statement_text,
*
operacional e evitar FROM sys.dm_exec_query_stats AS qs

gargalos. CROSS APPLY sys.dm_exec_sql_text (qs.sql_handle) AS st


ORDER BY
avg_worker_time DESC

A parte realmente útil dessa consulta é Diagnosticar um gargalo de E/S A


sua habilidade de usar aplicação cruzada história é semelhante para um gargalo
e sys.dm_exec_sql_text para obter a de E/S:
instrução SQL para analisá-la.

SELECT TOP 50
     (total_logical_reads + total_logical_writes) AS total_logical_io,
     (total_logical_reads / execution_count) AS avg_logical_reads,
     (total_logical_writes / execution_count) AS avg_logical_writes,
     (total_physical_reads / execution_count) AS avg_phys_reads,
substring (st.text,
(qs.statement_start_offset / 2) + 1,
     ((CASE qs.statement_end_offset WHEN -1
       THEN datalength (st.text)
      ELSE qs.statement_end_offset END
      - qs.statement_start_offset)/ 2)+ 1)
     AS statement_text,
 *
FROM sys.dm_exec_query_stats AS qs
    CROSS APPLY sys.dm_exec_sql_text (qs.sql_handle) AS st
ORDER BY total_logical_io DESC

8
Dica nº 6. O SQL Profiler é seu amigo. Como usar o SQL Profiler
Entender o SQL Server Profiler e os Veja como construir o processo
eventos estendidos de coleta de dados no Monitor de
O SQL Server Profiler é uma ferramenta desempenho (Perfmon) e correlacionar
nativa fornecida com o SQL Server. a informação sobre o uso de recursos
Ele permite que você crie um arquivo com dados nos eventos que estão sendo
de rastreamento para capturar eventos disparados dentro do SQL Server:
que ocorrem no SQL Server. Esses 1. Abra o Perfmon.
rastreamentos podem ser inestimáveis 2. Se você não tiver um coletor de dados
na prestação de informações sobre definido já configurado, crie um
sua carga de trabalho e consultas com agora usando a opção avançada e os
baixo desempenho. Este white paper contadores da Dica 9 como um guia.
não discutirá os detalhes sobre como Não inicie o coletor de dados definido
usar a ferramenta do Profiler. Para obter ainda.
O monitoramento
informações sobre como usar o SQL 3. Abra o Profiler.
Server Profiler, confira o tutorial em 4. Crie um novo rastreamento especificando operacional
vídeo no SQLServerPedia. os detalhes sobre a instância, os eventos
e as colunas que você deseja monitorar,
verifica o uso geral
Embora seja verdade que o SQL Server bem como o destino. de recursos. O
Profiler foi marcado como preterido no
SQL Server 2012 em favor de eventos
5. Inicie o rastreamento.
6. Retorne para o Perfmon para iniciar o
monitoramento
estendidos, deve-se observar que isso
é apenas para o mecanismo do banco
coletor de dados definido. de gargalos se
de dados e não para o SQL Server 7. Deixe ambas as sessões executando
até que os dados necessários sejam
concentra mais
Analysis Services. O Profiler ainda pode
fornecer grandes informações sobre capturados. em questões
o funcionamento de aplicações em 8. Pare o rastreamento do Profiler. Salve o
tempo real para muitos ambientes do rastreamento e, em seguida, feche-o. relacionadas ao
SQL Server. 9. Volte para o Perfmon e pare a coleta de desempenho.
dados definida.
O uso de eventos estendidos está fora 10. Abra o arquivo de rastreamento salvo
do escopo deste white paper. Para obter recentemente no Profiler.
uma descrição detalhada dos eventos 11. Clique em File (Arquivo) e, em seguida,
estendidos, consulte o white paper Import Performance Data (Importar
"Como usar os eventos estendidos dados de desempenho).
e notificações do SQL Server para 12. Navegue até o arquivo de dados
solucionar problemas de desempenho da Coleta de dados e selecione os
de forma proativa" (em inglês). Basta contadores de desempenho de interesse.
dizer que os eventos estendidos foram
introduzidos no SQL Server 2008 e
Agora, você será capaz de ver os
atualizados no SQL Server 2012 para
contadores de desempenho em
incluir mais eventos e uma interface de conjunto com o arquivo de rastreamento
usuário muito aguardada. do Profiler (consulte a Figura 2), o que
permitirá uma resolução de gargalos
Observe que a execução do Profiler muito mais rápida.
requer a permissão ALTER TRACE.
Dica extra: as etapas acima usam
a interface do cliente. Para poupar
recursos, um rastreamento no lado do
servidor seria mais eficiente. Consulte
os livros on-line para obter informações
sobre como iniciar e parar rastreamentos
no lado do servidor.

9
O atributo Is_
Dynamic em Sys.
Configurations Figura 2. Uma visão correlacionada de contadores de desempenho em conjunto com o
mostra se a arquivo de rastreamento do Profiler

instância do SQL Dica nº 5. Configure SANs para seu próprio subsistema de E/S é útil. Para ajustar

Server precisará desempenho do SQL Server. ainda mais o desempenho, primeiro você
precisa de algumas estatísticas.
As redes de área de armazenamento (SANs)
ser reiniciada após são fantásticas. Elas oferecem a capacidade • Considere a criação de vários arquivos de
de provisionar e gerenciar o armazenamento
uma alteração da de uma forma simples. SANs podem ser
dados e grupos de arquivos em VLDBs para
se beneficiar de operações de E/S paralelas.
configuração. configurados para um desempenho rápido
a partir de uma perspectiva do SQL Server,
• Coloque os backups em suas próprias
unidades para fins de redundância, bem
mas muitas vezes não são. As organizações como reduzir a contenção de E/S com outros
geralmente implementam SANs para volumes durante os períodos de manutenção.
consolidação de armazenamento e facilidade
de gerenciamento, não para desempenho. Coleta de dados
Para piorar a situação, geralmente você não Há, é claro, os contadores de disco do
tem controle direto sobre a forma como Windows, que dão uma ideia do que o
o provisionamento é feito em uma SAN. Windows acha que está acontecendo. (Não
Assim, você frequentemente verá que a SAN se esqueça de ajustar os números brutos com
foi configurada para um volume lógico em base na configuração RAID.) Fornecedores de
que você deve colocar todos os arquivos de SAN costumam oferecer seus próprios dados
dados. de desempenho.

Melhores práticas para configurar SANs para O SQL Server também fornece
desempenho de E/S informações de E/S no nível do arquivo:
Ter todos os arquivos em um único volume • Versões anteriores ao SQL 2005 — Use a
geralmente não é uma boa ideia se você função fn_virtualfilestats.
quiser o melhor desempenho de E/S. Como • Versões posteriores — Use a função de
melhores práticas, você vai querer: gerenciamento dinâmico sys.dm_io_virtual_
• Colocar os arquivos de registro em seu file_stats.
próprio volume, separados dos arquivos
de dados. Os arquivos de registro são Ao usar essa função no seguinte código,
quase exclusivamente gravados como você pode:
sequência e não leitura (as exceções incluem • Derivar taxas de E/S para leituras e gravações
Espelhamento de banco de dados e Grupos
• Obter a taxa de transferência de E/S
de disponibilidade Always On). Você deve
• Obter uma média de tempo por E/S
sempre configurar para rápido desempenho de
• Analisar os tempos de espera de E/S
gravação.
• Colocar tempdb em seu próprio volume.
Tempdb é usado para uma série de propósitos
pelo SQL Server internamente, então, tê-lo em

10
SELECT db_name (a.database_id) AS [DatabaseName],
     b.name AS [FileName], a.File_ID AS [FileID],
     CASE WHEN a.file_id = 2 THEN ‘Log’ ELSE ‘Data’ END AS [FileType],
    a.Num_of_Reads AS [NumReads],
    a.num_of_bytes_read AS [NumBytesRead],
    a.io_stall_read_ms AS [IOStallReadsMS],
    a.num_of_writes AS [NumWrites],
    a.num_of_bytes_written AS [NumBytesWritten],
    a.io_stall_write_ms AS [IOStallWritesMS],
    a.io_stall [TotalIOStallMS],
     DATEADD (ms, -a.sample_ms, GETDATE ()) [LastReset],
     ( (a.size_on_disk_bytes / 1024) / 1024.0) AS [SizeOnDiskMB],
     UPPER (LEFT (b.physical_name, 2)) AS [DiskLocation] Configurar backups
  FROM sys.dm_io_virtual_file_stats (NULL, NULL) a para que sejam
   JOIN sys.master_files b
     ON a.file_id = b.file_id AND a.database_id = b.database_id compactados por
ORDER BY a.io_stall DESC; padrão reduz a
contenção de E/S.
Análise dos dados Dicas para ajustar seu hardware se os
Preste atenção especial ao valor arquivos de banco de dados estiverem
"LastReset" na consulta; ele mostra a corretamente colocados e todos os
última vez que o serviço do SQL Server pontos de acesso de objetos tiverem
foi iniciado. Os dados de objetos de sido identificados e separados em
gerenciamento dinâmico não são diferentes volumes, então, estará na
persistentes, então, quaisquer dados hora de dar uma olhada no hardware.
sendo usados para fins de ajuste devem
ser validados em relação ao tempo de Ajustar o hardware é um tema
execução do serviço, caso contrário, especializado fora do escopo deste
podem ser feitas falsas suposições. white paper. Porém, há algumas
melhores práticas e dicas que eu posso
Ao usar esses números, você poderá compartilhar com você para tornar isso
rapidamente restringir quais arquivos são mais fácil:
responsáveis ​​pelo consumo da largura de •  Não use o tamanho da unidade de
banda de E/S e fazer perguntas como: alocação padrão ao criar volumes para
•  Este E/S é necessário? Está faltando um usar com o SQL Server. O SQL Server usa
índice? extensões de 64 KB, então, esse valor
•  Será que uma tabela ou índice em um deve ser o mínimo.
arquivo é responsável? Posso colocar esse •  Veja se suas partições estão alinhadas
índice ou tabela em outro arquivo em outro corretamente. Jimmy May escreveu
volume? um white paper fantástico sobre esse
assunto. Partições desalinhadas podem
reduzir o desempenho em até 30%.
•  Crie uma referência de desempenho para
a E/S do seu sistema usando uma ferramenta
como SQLIO. Você pode assistir a um
tutorial sobre essa ferramenta.

Figura 3. Informações de E/S em nível do arquivo do SQL Server

11
Dica nº 4. Cursores e outro T-SQL Ajuste de consulta usando planos de
ruim frequentemente voltam para consulta Um T-SQL ruim também pode
assombrar as aplicações. parecer com consultas ineficientes que
Um exemplo de código ruim não usam índices, principalmente porque o
Em um trabalho anterior, descobri o que índice está incorreto ou ausente. É de vital
deve ser o pior código que já vi na minha importância ter um bom entendimento
carreira. O sistema foi substituído há muito sobre como ajustar consultas usando
tempo, mas aqui está um resumo do planos de consulta.
processo pelo qual a função passou:
Uma discussão detalhada sobre ajuste de
1. Aceite o valor de parâmetro a ser removido.
consulta usando planos de consulta está
2. Aceite a expressão de parâmetro a ser fora do escopo deste white paper. No
removida. entanto, a maneira mais simples de iniciar
3. Descubra o tamanho da expressão. este processo é transformando operações
O SQL Profiler 4. Carregue a expressão em uma variável. SCAN em SEEKs. Os SCANs leem cada linha
5. Execute um ciclo com cada caractere na na tabela ou índice, então, para tabelas
ainda pode variável e verifique se esse caractere combina grandes, eles são caros em termos de E/S.
Um SEEK, por outro lado, usará um índice
fornecer grandes com um dos valores a ser removido. Se
combinar, atualize a variável para removê-la. para ir direto até a linha necessária, o que,
informações sobre 6. Siga para o próximo caractere até que a
obviamente, exige um índice. Se você
encontrar SCANs em sua carga de trabalho,
expressão seja completamente verificada.
o funcionamento os índices poderão estar ausentes.
Se você estiver horrorizado, então, somos
de aplicações em dois. É claro que estou explicando a Existe uma série de bons livros sobre
tempo real para tentativa de alguém de escrever sua própria
instrução "REPLACE" do T-SQL!
esse tema, inclusive:
•  "Professional SQL Server Execution Plan
muitos ambientes Tuning" (Ajuste do plano de execução do
A pior parte é que essa função foi utilizada Professional SQL Server) por Grant Fritchey
do SQL Server. para atualizar os endereços como parte •  "Professional SQL Server 2012 Internals &
de uma rotina de endereçamento e seria Troubleshooting" (Solução de problemas e
chamada dezenas de milhares de vezes por operações internas do Professional SQL Server
dia. 2012) por Christian Bolton, Rob Farley, Glenn
Berry, Justin Langford, Gavin Payne, Amit
Executar um rastreamento do Profiler no Banerjee, Michael Anderson, James Boother e
lado do servidor permite visualizar a carga Steven Wort
de trabalho do servidor e escolher partes de •  "T-SQL Fundamentals for Microsoft SQL Server
código executadas com frequência (que é 2012 and SQL Azure" (Princípios básicos do
como essa "joia" foi encontrada). T-SQL para Microsoft SQL Server 2012 e SQL
Azure) por Itzik Ben-Gan

Figura 4. Exemplo de um grande plano de consulta

12
Dica nº 3. Aumente a reutilização do plano Avaliar se você está recebendo um bom
para obter melhor caching do SQL Server. plano de reutilização
Por que a reutilização de planos de consulta é Há alguns contadores de desempenho
importante disponíveis no objeto de desempenho
Antes de executar uma instrução SQL, o SQL de estatísticas SQL que lhe dirão se você
Server primeiro cria um plano de consulta. está tendo uma boa reutilização do
Isso define o método que o SQL Server usará plano. Esta fórmula informa a relação de
para levar a instrução lógica da consulta e lotes submetidos para compilações:
implementá-la como uma ação física nos
dados. Você quer que esse número seja o
mais baixo possível. Uma relação 1:1
Criar um plano de consulta pode exigir CPU significa que cada lote enviado está
significativa. Assim, o SQL Server será executado sendo compilado, e não há nenhuma
de forma mais eficiente se puder reutilizar reutilização de plano.
SANs podem ser
planos de consulta em vez de criar um novo
cada vez que uma instrução SQL for executada. configurados para
um desempenho
(Batch Requests/sec – SQL Compilations/sec) / Batch Requests/sec
rápido a partir de
uma perspectiva
do SQL Server,
Abordar uma reutilização de plano ruim Um problema comum é que o mas muitas vezes
Não é fácil definir a carga de trabalho
exata responsável pela reutilização ruim
código não está usando instruções
parametrizadas preparadas. Usar
não são.
do plano, pois o problema geralmente consultas parametrizadas não só melhora
está no código da aplicação cliente que a reutilização do plano e sobrecarga
envia as consultas. Portanto, você pode de compilação, mas também reduz
precisar analisar o código da aplicação o risco de ataque de injeção de SQL
cliente que está enviando as consultas. envolvido ao analisar parâmetros por
meio da concatenação de cadeias.
Para encontrar o código incorporado A Figura 5 mostra dois exemplos de
dentro de uma aplicação cliente, código. Embora sejam inventados, eles
você terá que usar os eventos ilustram a diferença entre construir uma
estendidos ou o Profiler. Ao adicionar instrução por meio de concatenação de
o evento SQL:StmtRecompile em um cadeia e usar instruções preparadas com
rastreamento, você será capaz de ver parâmetros.
quando um evento de recompilação
ocorre. (Há também um evento chamado
SP:Recompile, que é incluído para
compatibilidade com versões anteriores,
pois a ocorrência de recompilação foi
alterada no nível de procedimento para o
nível de instrução no SQL Server 2005.)

13
Ruim

As informações
de E/S no nível do
arquivo do SQL
Server podem ajudar
você a identificar
Bom
quais arquivos estão
consumindo largura Figura 5. Comparação do código que constrói uma instrução por meio de
concatenação de cadeia e código que usa instruções preparadas com parâmetros
de banda de E/S.
O SQL Server não pode reutilizar o plano A memória alocada para o cache
do exemplo "ruim" na Figura 5. Se um de planos reside no pool de buffer.
parâmetro for um tipo de cadeia, esta Portanto, um cache de planos
função poderá ser usada para montar sobrecarregado reduz a quantidade
um ataque de injeção de SQL. O "bom" de páginas de dados que podem ser
exemplo não é suscetível a um ataque de armazenadas no cache de buffer, assim,
injeção de SQL porque um parâmetro é haverá mais viagens de ida e volta para
usado e o SQL Server é capaz de reutilizar buscar dados no subsistema de E/S, que
o plano. podem ser muito caras.

A definição de configuração ausente Dica nº 2. Aprenda a ler o cache de


na Dica nº 8 buffer do SQL Server e minimizar a
Aqueles de vocês com uma boa memória sobrecarga do cache.
vão lembrar que na Dica nº 8 (em Por que o cache de buffer é importante
que falamos sobre as mudanças de Como mencionado no segue bastante
configuração) havia mais um conselho elegante acima, o cache de buffer
que não foi falado. O SQL Server 2008 é uma grande área de memória
introduziu uma definição de configuração usada pelo SQL Server para reduzir
chamada "Otimizar para cargas de trabalho a necessidade de realizar E/S físico.
ad hoc". Essa configuração solicitará que Nenhuma execução de consulta do
o SQL Server armazene um plano de SQL Server lê os dados diretamente
stub em vez de um plano completo no de um disco; as páginas do banco de
cache de planos. Isto é especialmente dados são lidas no cache de buffer. Se a
útil para ambientes que usam o código página procurada não estiver no cache
T-SQL construído dinamicamente ou Linq, de buffer, uma solicitação de E/S físico
que pode resultar na não reutilização do ficará na fila. Em seguida, a consulta
código. aguarda e a página é obtida no disco.

14
As alterações dos dados em uma Eu gostaria de concluir esta seção com
página de uma operação DELETE ou uma analogia; muitas pessoas argumentam
UPDATE também são feitas às páginas que a inovação de travas antibloqueio e
no cache de buffer. Estas alterações são de outras tecnologias assistidas significa
depois transmitidas ao disco. Todo esse que as distâncias de travamento devem
mecanismo permite que o SQL Server ser reduzidas, e também que os limites
otimize o E/S físico de várias maneiras: de velocidade podem ser aumentados de
•  Várias páginas podem ser lidas e escritas em acordo com essa nova tecnologia. O valor
uma operação de E/S. de aviso de 300 segundos (cinco minutos)
•  A leitura antecipada pode ser implementada. para Expectativa de vida da página incorre
O SQL Server pode notar que para em um debate semelhante na comunidade
determinados tipos de operações, pode ser do SQL Server: alguns acreditam que esta é
útil ler páginas em sequência, supondo que uma regra dura e rápida, enquanto outros
logo depois de ler a página solicitada, você acreditam que o aumento da capacidade
vai querer ler a página adjacente. de memória na maioria dos servidores nos Se os arquivos
dias de hoje significa que o valor deve ser
Nota: a fragmentação de índice prejudicará de milhares e não centenas. Essa diferença de banco de
a capacidade do SQL Server de executar a de opinião destaca a importância das linhas
otimização de leitura antecipada. de base e por que é tão importante ter uma dados estiverem
Avaliação da integridade do cache de
compreensão detalhada do que os níveis
de alerta de cada contador de desempenho
corretamente
buffer
Há duas indicações da integridade do
deve ser no seu ambiente, colocados e todos
cache de buffer: Sobrecarga do cache os pontos de acesso
•  Taxa de acertos do cache Durante uma grande verificação de tabela
MSSQL$Instance:Buffer Manager\Buffer — ou índice, cada página na verificação deve de objetos tiverem
passar pelo cache de buffer, o que significa
Esta é a relação de páginas encontradas no
cache e páginas não encontradas no cache que páginas possivelmente úteis serão
sido identificados
(as páginas que devem ser lidas fora do disco). despejadas para dar espaço a páginas que
Idealmente, você quer que esse número seja provavelmente não serão lidas mais de
e separados em
o mais alto possível. É possível ter uma alta uma vez. Isto gera alto índice de E/S já diferentes volumes,
taxa de acertos, mas ainda experimentar a que as páginas despejadas devem ser lidas
sobrecarga do cache. no disco novamente. Esta sobrecarga de então é hora de
•  MSSQL$Instance:Buffer Manager\Expectativa cache é geralmente uma indicação de que
de vida da página — Esta é a quantidade grandes tabelas ou índices estão sendo
dar uma olhada no
de tempo que o SQL Server está mantendo verificados. hardware.
as páginas no cache de buffer antes de
serem despejadas. A Microsoft diz que uma Para saber quais tabelas e índices estão
expectativa de vida da página superior a ocupando mais espaço no cache de buffer,
cinco minutos é satisfatória. Se a expectativa você pode examinar o DMV sys.dm_os_
de vida ficar abaixo disso, poderá ser um buffer_descriptors (disponível a partir do
indicador de pressão de memória (memória SQL Server 2005). A consulta de exemplo a
insuficiente) ou sobrecarga do cache. seguir ilustra como acessar a lista

SELECT o.name, i.name, bd.*


 FROM sys.dm_os_buffer_descriptors bd
   INNER JOIN sys.allocation_units a
     ON bd.allocation_unit_id = a.allocation_unit_id
   INNER JOIN
   sys.partitions p
     ON (a.container_id = p.hobt_id AND a.type IN (1, 3))
       OR (a.container_id = p.partition_id AND a.type = 2)
   INNER JOIN sys.objects o ON p.object_id = o.object_id
   INNER JOIN sys.indexes i
     ON p.object_id = i.object_id AND p.index_id = i.index_id

15
de tabelas ou índices que estão •  Que tipo de padrões de acesso estão
consumindo espaço no cache de buffer em uso? As colunas range_scan_count
do SQL Server: e singleton_ lookup_count podem nos
dizer quais tipos de padrões de acesso são
Você também pode usar os DMVs de usados em um índice específico.
índice para descobrir quais tabelas ou
índices têm grandes quantidades de E/S A Figura 6 ilustra a saída de uma consulta
física. que lista índices pela espera total
PAGE_IO_ LATCH. Isso será muito útil
ao tentar determinar quais índices estão
Dica nº 1. Entenda como os índices
envolvidos em gargalos de E/S.
são usados e​​ encontre índices ruins.
O SQL Server 2012 fornece alguns dados Utilização do DMO sys.dm_db_index_
muito úteis sobre índices, que você pode usage_stats
buscar usando DMOs implantados na sys.dm_db_index_usage_stats contém
Executar um versão SQL Server 2005. contagens de diferentes tipos de
operações de índice e a hora que cada
rastreamento Utilização do DMO sys.dm_db_index_ tipo de operação foi executado pela
operational_stats última vez. Use esse DMV para responder
do Profiler no sys.dm_db_index_operational_stats às seguintes perguntas:
lado do servidor contém informações sobre o atual baixo
nível de E/S, bloqueio, travamento e
•  Como os usuários estão usando os
índices? As colunas user_ seeks, user_
permitirá que atividade do método de acesso para cada scans, user_lookups podem informar os
índice. Use esse DMF para responder às tipos e o significado das operações do
você visualize a seguintes perguntas: usuário nos índices.

carga de trabalho •  Tenho um índice "favorito"? Tenho um


índice no qual existe contenção? As
•  Qual é o custo de um índice? A coluna
user_updates pode informar qual é o nível
do servidor e colunas row lock wait in ms/page lock wait
in ms podem nos dizer se existem esperas
de manutenção para um índice.
•  Quando um índice foi usado pela última
selecione partes neste índice. vez? As colunas last_* podem informar a
•  Tenho um índice que está sendo usado
de código de forma ineficiente? Quais índices estão
última vez que uma operação ocorreu em
um índice.
executadas com atualmente em gargalos de E/S? A coluna
page_io_latch_wait_ ms poderá nos dizer
frequência. se houve espera de E/S ao trazer páginas
de índice para o cache do buffer; um bom
indicador de que existe um padrão de
acesso à verificação.

Figura 6. Índices listados pela espera total de PAGE_IO_LATCH

16
Uma expectativa
de vida da
página de
Figura 7. Índices listados pelo número total de user_seeks
menos de cinco
minutos pode
A Figura 7 ilustra a saída de uma consulta Para recapitular, lembre-se
que lista índices pelo número total de dessas 10 coisas ao otimizar o indicar pressão
user_seeks. Se você quis identificar índices desempenho do SQL Server:
que tiveram uma alta proporção de 10. A referência de desempenho facilita as
de memória
verificações, poderá ordenar pela coluna comparações de comportamento da (memória
user_scans. Agora que você tem um carga de trabalho e permite detectar
nome de índice, não seria bom descobrir o comportamento anormal, pois você insuficiente) ou
quais instruções SQL usaram esse índice?
No SQL Server 2005 e versões mais
tem uma boa indicação do que é um
comportamento normal.
sobrecarga no
recentes, você pode fazer isso. 9. Os contadores de desempenho fornecem cache.
informações rápidas e úteis sobre as
Há, naturalmente, muitas outras áreas operações atualmente em execução.
para índices, como estratégia de design, 8. Alterar as configurações do servidor pode
consolidação e manutenção. Se você proporcionar um ambiente mais estável.
quiser ler mais sobre esta área vital de 7.  DMOs ajudam você a identificar gargalos de
ajuste de desempenho do SQL Server, vá desempenho rapidamente.
até o SQLServerPedia ou confira alguns dos 6. Aprenda a usar o SQL Profiler, rastreamentos
webcasts da Dell ou white papers sobre o e eventos estendidos.
assunto. 5. SANs são mais do que apenas caixas pretas
que executam E/S.
Conclusão 4. Cursores e outro T-SQL ruim
Claro que há muito mais que 10 coisas frequentemente voltam para assombrar as
que você deve saber sobre o desempenho aplicações.
do SQL Server. No entanto, este white 3. Aumente a reutilização do plano para obter
paper oferece um bom ponto de partida e melhor caching do SQL Server.
algumas dicas práticas sobre otimização de 2. Aprenda a ler o cache de buffer do SQL
desempenho que você pode aplicar ao seu Server e a minimizar a sobrecarga do cache.
ambiente do SQL Server.
E a dica número um para otimizar
o desempenho do SQL Server:
1. Domine a indexação aprendendo como
os índices são usados e como encontrar
índices ruins.

17
Chamada para ação
Estou certo de que você está
ansioso para implementar as lições
aprendidas neste white paper.
A tabela abaixo lista as ações para
buscar um ambiente mais otimizado
do SQL Server:

Ação Subtarefas Data esperada


Obter aprovação para iniciar Fale com o seu gerente de linha e apresente o
o projeto argumento de que, com este projeto em vigor, você
pode ser proativo ao invés de reativo.
Identificar metas de desem- Fale com as partes interessadas da empresa para
penho
determinar os níveis aceitáveis de desempenho.
Usar consultas Estabelecer uma linha de
Colete dados relevantes e armazene-os em um
parametrizadas base para o desempenho do
sistema
repositório personalizado ou de terceiros.

não só melhora Identificar os principais


contadores de desempenho e
Faça download do pôster do Perfmon da Dell.

a reutilização do configurar rastreamento e/ou


eventos estendidos

plano e sobrecarga Analisar as configurações do


servidor Preste especial atenção às configurações de memória
e "Otimizar para cargas de trabalho ad hoc".
de compilação, Analisar o subsistema de E/S Se for o caso, fale com seus administradores de SAN
mas também reduz e considere realizar testes de carga de E/S usando
ferramentas como SQLIO, ou simplesmente determine
o risco de ataque a taxa na qual você pode fazer operações intensivas de
leitura e gravação, como ao realizar back-ups.

de injeção de Identificar consultas com


baixo desempenho
Analise os dados retornados a partir de rastreamentos,
sessões de eventos estendidos e cache de planos.
SQL envolvido ao Refatorar códigos com baixo Confira as melhores práticas mais recentes no
desempenho serviço de blog sindicalizado do SQLServerPedia.
analisar parâmetros Manutenção de índice Certifique-se de que seus índices sejam os melhores
possíveis.
por meio da
concatenação de
cadeias.

18
Para obter mais informações A DELL NÃO ASSUME NENHUMA RESPONSABILIDADE,
© 2013 Dell, Inc. TODOS OS DIREITOS RESERVADOS. Este SEJA ELA QUAL FOR, E RENUNCIA A TODA GARANTIA
documento contém informações proprietárias protegidas por EXPLÍCITA, IMPLÍCITA OU ESTATUTÁRIA RELACIONADA A
direitos autorais. Nenhuma parte deste documento pode ser SEUS PRODUTOS, INCLUINDO, SEM LIMITAÇÃO, A GARANTIA
reproduzida ou transmitida em qualquer forma ou por qualquer IMPLÍCITA DE COMERCIABILIDADE, ADEQUAÇÃO A UM
meio, eletrônico ou mecânico, incluindo fotocópia e gravação PROPÓSITO ESPECÍFICO OU NÃO VIOLAÇÃO. EM HIPÓTESE
para qualquer propósito, sem a permissão por escrito da Dell, ALGUMA A DELL SERÁ RESPONSÁVEL POR QUAISQUER
Inc. ("Dell"). DANOS DIRETOS, INDIRETOS, CONSEQUENCIAIS, PUNITIVOS,
ESPECIAIS OU INCIDENTAIS (INCLUINDO, SEM LIMITAÇÃO,
Dell, Dell Software, o logotipo e os produtos da Dell Software, DANOS POR PERDA DE LUCROS, INTERRUPÇÃO DE
como identificados neste documento, são marcas registradas NEGÓCIOS OU PERDA DE INFORMAÇÕES), DECORRENTES DO
da Dell, Inc. nos EUA e/ou em outros países. Todas as outras USO OU IMPOSSIBILIDADE DE UTILIZAR ESTE DOCUMENTO,
marcas comerciais ou registradas são de responsabilidade de MESMO QUE A DELL TENHA SIDO AVISADA DA POSSIBILIDADE
seus respectivos proprietários. DE TAIS DANOS. A Dell não faz quaisquer representações ou
garantias com relação à exatidão ou completude do conteúdo
deste documento e se reserva o direito de fazer alterações nas
As informações deste documento são relativas aos produtos
especificações e descrições de produtos a qualquer momento
Dell. Nenhuma licença, expressa ou implícita, por embargo ou
sem aviso prévio. A Dell não se compromete em atualizar as
de outra forma, a qualquer direito de propriedade intelectual é
informações contidas neste documento.
concedida por este documento ou em conjunto com a venda
de produtos Dell. EXCETO CONFORME ESTABELECIDO NOS
TERMOS E CONDIÇÕES DA DELL, CONFORME ESPECIFICADO
NO CONTRATO DE LICENÇA PARA ESTE PRODUTO,

Sobre a Dell
A Dell Inc. (NASDAQ: DELL) escuta seus clientes e fornece,
globalmente, soluções de negócios e tecnologias inovadoras
e serviços que eles valorizam e nos quais confiam. Para obter
mais informações, visite o site www.dell.com.

Se você tiver dúvidas sobre o possível uso deste material,


entre em contato:

Dell Software
5 Polaris Way
Aliso Viejo, CA 92656
www.dell.com
Consulte nosso site para obter informações sobre escritórios
regionais ou internacionais.

Whitepaper-TenTips-OptimSQL-US-KS-2013-04-03

Você também pode gostar