COMO: Resolver problemas de desempenho de aplicações com o SQL Server

Traduções de Artigos Traduções de Artigos
Artigo: 224587 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo passo a passo descreve como resolver problemas de SQL Server problemas de desempenho. Resolução de problemas de desempenho envolve a utilização de uma série de passos para isolar e determinar a causa de um abrandamento de aplicação. Causas possíveis incluem:
  • Bloquear.
  • Contenção de recursos do sistema.
  • Problemas de concepção de aplicações.
  • Um conjunto específico de consultas ou procedimentos armazenados com tempos de execução longos.
Este artigo descreve como determinar a origem do problema de desempenho. Também faz referência outros artigos na Microsoft Knowledge Base que abrangem os detalhes dos problemas de desempenho específicos para resolução de problemas adicionais.

SQL Profiler


SQL Profiler é uma ferramenta poderosa quando o SQL Server 7.0 ou posterior e aplicação de desempenho a resolver problemas. SQL Profiler permite-lhe capturar facilmente todos os eventos que ocorrem no servidor numa carga normal e fornece informações sobre os mesmos. Utilizar o SQL Profiler em conjunto com o Monitor de desempenho do Microsoft Windows NT e algumas consultas simples para identificar se bloquear ocorre fornecem as informações tem de ter que resolver a grande maioria dos problemas de desempenho.

O que acontece ao monitor

1. Defina SQL Profiler para capturar um rastreio. Para o fazer, siga estes passos:
  1. Abra o SQL Profiler.
  2. No menu Ferramentas , clique em Opções .
  3. Certifique-se que Todas as classes de eventos e as opções de Todas as colunas de dados estão seleccionadas.
  4. Clique em OK .
  5. Crie um registo novo.
  6. No menu ficheiro , aponte para Novo e, em seguida, clique em Analisar .
  7. No separador Geral , especifique um nome de rastreio e um ficheiro para capturar os dados.
  8. No separador eventos , adicione os seguintes tipos de eventos para o rastreio:

    Reduzir esta tabelaExpandir esta tabela
    TítuloEvento para adicionarDescrição
    CursoresCursorPrepareEste evento indica que foi preparado um cursor numa instrução SQL utilizando ODBC, OLEDB ou biblioteca de base de dados.
    Aviso de erro eFalta coluna estatísticasEste evento indica que as estatísticas de coluna que podem ter sido útil para o optimizador não estavam disponíveis. A coluna de texto mostra a lista de colunas com estatísticas em falta. Neste caso, juntamente com uma diversos: UpdateStats automaticamente evento, indica que a opção Automática criar estatísticas foi accionada.
    DiversosAtençãoEste evento indica que um sinal de atenção foi enviado por um cliente.
    DiversosUpdateStats automáticaEste evento indica que a opção de Estatísticas de actualização automática foi accionada.
    DiversosExec preparados SQLEste evento indica que a biblioteca de base de dados, OLE DB ou ODBC executado uma instrução Transact-SQL anteriormente preparada ou instruções.
    DiversosPlano de execuçãoEste evento mostra a árvore de plano da instrução Transact-SQL que foi executada.
    DiversosPreparar SQLEste evento indica que uma aplicação ODBC, OLE DB ou biblioteca de base de dados preparados Transact-SQL instrução ou instruções para utilização.
    DiversosUnprepare SQLEste evento indica que uma aplicação de ODBC, OLE DB ou biblioteca de base de dados não preparada Transact-SQL instrução ou instruções para utilização.
    SessõesLigarEste evento indica que foi efectuada uma nova ligação.
    SessõesDesligarEste evento indica que um cliente terminou.
    SessõesLigação existenteEste evento indica que uma ligação existia quando o rastreio de SQL Profiler foi iniciado.
    Procedimentos armazenadosSP: concluídoEste evento indica quando um procedimento armazenado tiver concluído sua execução.
    Procedimentos armazenadosSP: recompilarEste evento indica que um procedimento armazenado foi novamente compilado durante a execução.
    Procedimentos armazenadosSP: inícioEste evento indica quando um procedimento armazenado foi iniciada a execução.
    Procedimentos armazenadosSP: StmtCompletedEste evento indica quando uma instrução num procedimento armazenado tiver concluído sua execução.
    TSQL:SQL:BatchCompletedEste evento indica que um lote de Transact-SQL concluída. A coluna de texto apresenta a instrução que foi executada.
    TSQL:SQLEste evento indica uma instrução Transact-SQL concluída. A coluna de texto apresenta a instrução que foi executada.
    TSQL:RPC: concluídoEste evento indica que uma chamada de procedimento remoto (RPC, Remote Procedure Call) foi concluída.
  9. Se a aplicação está a receber erros de tempo excedido, deixa de responder (não reage) ou tiver outros eventos que as instruções do problema para nunca é concluída, inclua também os seguintes eventos:

    Reduzir esta tabelaExpandir esta tabela
    TSQL:SQL:BatchStartingEste evento indica o início de uma secção de Transact-SQL. A coluna de texto apresenta a instrução a ser executada.
    TSQL:SQL:StmtStartingEste evento indica o início de uma instrução Transact-SQL. A coluna de texto apresenta a instrução a ser executada.
    TSQL:RPC: inícioEste evento indica o início de uma chamada de procedimento remoto (RPC, Remote Procedure Call).
    Procedimentos armazenadosSP: StmtStartingEste evento indica quando uma instrução num procedimento armazenado está a iniciar execução.


    Isto ajudará a certifique-se de que pode ver a instrução que estava em execução quando o limite foi excedido
  10. No separador Colunas de dados , certifique-se de que são incluídas as seguintes colunas:

    para o SQL Server 2000

    Hora de início

    Hora de fim

    LoginSid

    SPID

    Classe de evento

    TextData

    IntegerData

    BinaryData

    Duração

    CPU

    Leituras

    Escreve

    Nome da aplicação

    Utilizador de NT nome

    DBUserName


    para o SQL Server 7.0

    Hora de início

    Hora de fim

    Ligação ID

    SPID

    Classe de evento

    Texto

    Número inteiro dados

    Dados binários

    Duração

    CPU

    Leituras

    Escreve

    Nome da aplicação

    Utilizador de NT nome

    Nome de utilizador SQL

Para obter informações sobre como utilizar o SQL Profiler, consulte SQL Server 7.0 e SQL Server 2000 Books Online.


Utilize 2. o Monitor de desempenho para capturar o Windows NT e o SQL Server contadores. Para o fazer, siga estes passos:
  1. Inicie o Monitor de desempenho do Windows NT.
  2. No menu Ver , clique em Iniciar sessão .
  3. No menu Opções , clique em Iniciar sessão .
  4. Especifique um nome de ficheiro e localização para iniciar os contadores de desempenho. Pode ajustar o intervalo de actualização conforme apropriado.
  5. No menu Editar , clique em Adicionar para iniciar sessão .
  6. Adicione todos os objectos. Tanto o Windows NT e o SQL Server objectos.
  7. Para iniciar o registo, no menu Opções , clique em Iniciar e, em seguida, clique no botão Iniciar sessão .

Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
150934Como criar um registo de monitor de desempenho para resolução de problemas do NT

3. Para bloquear a verificação.

Para ver se o bloqueio é ocorra, execute o procedimento armazenado do sistema de sp_who :
exec sp_who
Esta saída irá conter uma coluna blk . Examine a saída de quaisquer entradas diferente de zero indica que o bloqueio está a ocorrer. Execute este procedimento periodicamente durante o período de tempo quando ocorre o abrandamento do desempenho.

Nota Com o sistema sp_who procedimento armazenado é uma verificação para ver se o bloquear existe. Normalmente, não existe informação suficiente para resolver totalmente um problema de bloqueio. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
251004INF: Como monitorizar o bloqueio do SQL Server 7.0

Executar a aplicação em carga normal

Idealmente, recomenda-se capturar o SQL Profiler, Monitor de desempenho e bloqueio de saída durante o mesmo período de tempo. Este período de tempo tem de conter demorada quando o desempenho da aplicação passa de bom incorrecto. A combinação destas informações ajudarão a obter uma imagem mais claras de onde está a ocorrer o abrandamento do desempenho.


Interpretar os resultados

  1. Verifique se o bloqueio.

    Se a coluna blk na saída sp_who for diferente de zero, isto indica que o bloqueio está a ocorrer no sistema. Se processos estão a bloquear uns dos outros, os processos que estão a ser bloqueados podem ocorrer mais tempos de execução. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
    224453INF: Compreender e resolver problemas de bloqueio 7.0 ou 2000 do SQL Server
  2. Examine os resultados SQL Profiler.

    Visualizar dados de SQL Profiler eficiente é extremamente útil na resolução de problemas de desempenho. O mais importante que compreenda é que não tem de ver tudo o que é capturada. Seja selectivo. SQL Profiler fornece capacidades para ajudá-lo eficazmente visualizem os dados capturados. Nos separadores de Propriedades (clique em Propriedades no menu ficheiro ), SQL Profiler permite-lhe limitar os dados apresentados, remover colunas de dados ou eventos, agrupamento (ordenação) pelas colunas de dados e aplicar filtros. Pode procurar o rastreio completo ou apenas numa coluna específica para valores específicos (no menu Editar , clique em Localizar ). Também pode guardar os dados de SQL Profiler para uma tabela do SQL Server (no menu ficheiro , aponte para Guardar como , clique em Analisar tabela ) e, em seguida, executar consultas SQL relativamente à mesma.

    Certifique-se que efectue filtragem apenas num ficheiro de rastreio guardado anteriormente. Se efectuar estes passos num rastreio activo, risco de perder dados que foi capturados desde que o rastreio foi iniciado. Guardar um rastreio activo para um ficheiro ou tabela em primeiro lugar (no menu ficheiro , clique em Guardar como ) e, em seguida, abra-o (no menu ficheiro , clique em Abrir ) antes de continuar. Quando trabalha num ficheiro de rastreio guardada, a filtragem não permanentemente remove os dados que está a ser filtrados; apenas não é apresentada mesmo. Pode adicionar e remover eventos e colunas de dados conforme necessário para ajudar a definir as procuras.

    O primeiro passo para examinar os ficheiros de rastreio de SQL Profiler para casos de desempenho é determinar onde os diferentes tipos de eventos estão a ocorrer no servidor.

    grupo rastreio por classe de evento :

    a. no menu ficheiro , clique em Propriedades .

    b. no separador Colunas de dados , utilize o botão de cima para mover a Classe de evento sob o título de grupos e no botão para baixo para remover todas as outras colunas sob o título de grupos .

    c. clique em OK .

    Agrupar por na coluna de classe de eventos mostra o tipo de eventos estão a ocorrer no SQL Server e frequência. Procure nesta coluna para os seguintes eventos:

    SP:RECOMPILE

    Este evento indica que um procedimento armazenado foi novamente compilado durante a execução. Vários eventos de recompilação indicam que o SQL Server é despesas recursos na compilação de consulta em vez de execução da consulta.

    Para obter informações adicionais sobre a resolução de problemas a recompilações procedimento armazenado, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft:
    243586INF: Resolução de problemas Recompilation do procedimento armazenado


    atenção

    Um sinal de atenção indica que uma consulta foi cancelada por um cliente. Este é geralmente devido um dos dois motivos:

    O utilizador cancelou a consulta explicitamente ou terminou a aplicação.

    - ou -

    Foi excedido um limite de tempo de consulta.

    Se vir sinais de atenção, esta situação poderá indicar que algumas consultas estão a funcionar lentamente.

    Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
    243589COMO: Resolver lento-executar consultas no SQL Server 7.0 ou posterior
    Para ajudar a identificar a consulta que recebeu o sinal de atenção, rever o rastreio para que não está agrupado por qualquer coluna de dados e filtrar o ID (SPID) que recebeu do processo de sistema (no separador filtros , definir SPID = x ). O evento SQL:StmtStarting , SQL:BatchStarting ou SP:StmtStarting preceder imediatamente o sinal de atenção é a consulta que recebeu o tempo de espera ou Cancelar. Pode procurar a coluna de Classe de evento para o evento atenção localizar facilmente (no menu Editar , clique em Localizar ).

    PREPARAÇÃO SQL e execução PREPARED SQL

    O evento de SQL preparar indica que uma aplicação ODBC, OLE DB ou biblioteca de base de dados preparados uma instrução Transact-SQL ou instruções para utilização. O evento de Execução E preparados SQL indica que a aplicação efectuadas utilização de um existente preparado instrução para executar um comando.

    Compare o número de vezes que estes dois eventos ocorrerem. Idealmente, uma aplicação tem de preparar uma instrução de SQL uma vez e executá-la várias vezes. Este procedimento guarda o optimizador o custo de compilar um novo plano sempre que a instrução for executada. Por este motivo, o número de eventos do Serviço preparados SQL deve ser muito maior do que o número de eventos de Preparar SQL . Se o número de eventos de Preparar SQL é aproximadamente equivalente ao número de eventos do Serviço preparados SQL , isto poderá indicar que a aplicação não está a efectuar boa utilização de modelo preparação/executar. É aconselhável não preparar uma instrução que só vai ser executada uma única vez. Para mais informações sobre como preparar as instruções de SQL, consulte o tópico "Instruções de SQL a preparar A" no SQL Server 7.0 Books Online.

    Se o número de eventos do Serviço preparados SQL não for três a cinco vezes maior do que o número de eventos de Preparar SQL , a aplicação poderá não efectuar utilização eficiente do modelo preparação/executar. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
    243588COMO: Resolver problemas de desempenho de consultas ad-Hoc

    No SQL Server 2000, o tráfego excessivo por preparar de executar sejam eliminados, sendo a proporção de 3-5 não como exigentes. No entanto, ainda pode ser um boa regra, tente e reutilizar o plano mais do que uma vez preparado.

    falta coluna estatísticas

    Este evento indica que o optimizador pode ter utilizado para gerar um melhor plano de consulta de informações estatísticas não estavam disponível. Isto indica que a consulta não tem índices útil em, pelo menos, uma tabela envolvida. Para além de não ter um índice útil, o SQL Server não tem mesmo dados estatísticos sobre as colunas envolvidos tomar uma decisão informada um plano de consulta. O resultado é que o plano de consulta gerado não pode ser um óptimo. Se visualizar estes eventos, observe a consulta e o plano de execução gerado e, em seguida, consulte o seguinte artigo na Microsoft Knowledge Base para obter os passos para melhorar o desempenho desta consulta:
    243589COMO: Resolver lento-executar consultas no SQL Server 7.0 ou posterior

    Quando visualiza os eventos de Estatísticas de colunas em falta , concentrar-se primeiro naqueles que ocorrem em associação com consultas de execução longa. Alguns eventos poderão ser gerados e resolvidos automaticamente pelo SQL Server com autostats podem não requerer intervenção do utilizador. Por este motivo, a melhor estratégia é a primeira concentração em consultas com longa duração, como é mostrado mais tarde neste artigo e Nota Se não existirem eventos associados de Estatísticas de colunas em falta .

    Se não estiver a ver instâncias de classes estes eventos, o passo seguinte é determinar onde está a ser utilizada a hora.

    o resultado do rastreio pela duração do grupo :

    a. no menu ficheiro , clique em Propriedades .

    No separador Colunas de dados , utilize o botão de cima para mover duração sob o título de grupos e o botão para baixo para remover todas as outras colunas sob o título de grupos .

    c. no separador eventos , remova todos os grupos excepto TSQL e armazenados procedimentos .

    d. clique em OK .

    Ao agrupar na duração, pode ver facilmente o SQL instruções secções de execução ou procedimentos são o slowest. É muito importante observar não apenas a hora quando está a ocorrer o problema, mas também para obter um plano base do quando desempenho é bom para comparação. Pode filtrar por tempo de início para dividir o rastreio em secções quando foi bom desempenho e uma secção separada para quando foi um fraco desempenho. Procure as consultas com a maior duração quando é bom desempenho. Estes são provavelmente a raiz do problema. Se diminui o desempenho global do sistema, mesmo boas consultas podem mostrar durações longas, que estão à espera de recursos do sistema.

    Se vir um pequeno número de consultas com durações alta, consulte o seguinte artigo na base de dados de conhecimento da Microsoft:
    243589COMO: Resolver lento-executar consultas no SQL Server 7.0 ou posterior
    Se vir que a duração das consultas individuais é baixa, mas existem várias-las e o contador compilações SQL/seg no Monitor de desempenho (descrita posteriormente) de saída é elevada, consulte o seguinte artigo na base de dados de conhecimento da Microsoft:
    243588COMO: Resolver problemas de desempenho de consultas ad-Hoc
    examine as restantes colunas de dados :

    Informações adicionais para a natureza do problema de desempenho podem ser obtida visualizando as outras colunas de dados nos dados de rastreio. Seguem-se alguns aspectos a considerar:

    Se a utilização da CPU for alta, agrupar por CPU para ver que as consultas são os utilizadores maiores de tempo de CPU. Procura a coluna de texto para "hash" ou "impressão em série" para localizar o plano de execução de consulta está a utilizar estes tipos de associação. São mais da CPU e memória intensiva do que uma associação de ciclo aninhado, que é geralmente E/S intensiva.

    Se o disco E/S for congestionamento, agrupar por leituras e escritas. Ver os campos Nome da aplicação , Nome de utilizador de NT e Nome de utilizador SQL para ajudar a isolar a origem de uma consulta de execução longa.

    Coluna de dados número inteiro do evento excepção indicará quaisquer erros que foram devolvidos ao cliente. Pode localizar o texto da mensagem de erro procurando o número no SQL Server 7.0 Books Online.

    O campo ID de ligação é útil para se certificar de que está a observar as sessões mesmas para um cliente específico. Um SPID não garante, como um utilizador pode ter desligado e um novo utilizador ligado e recebido o SPID mesmo.

    A vantagem derivada estes campos pode variar consoante o cenário, mas devem ser examinados se os campos óbvios, anteriormente neste artigo não fornecem uma resposta.
  3. Examine o resultado do Monitor de desempenho.

    O Monitor de desempenho mostrará os congestionamentos de sistema global. É possível que SQL Server e a aplicação estiverem a efectuar como previsto, mas o computador for underpowered, sem memória ou outros recursos. Ou determinados contadores podem indicar problemas com a forma como a aplicação e do SQL Server estiverem a efectuar. No mínimo, verifique os seguintes contadores:

  • Objecto: processo

    Contador: processador

    Instância: SQL Server

  • Objecto: processador

    Contador: % processador hora

    Instância: Verificação de cada instância do processador

  • Objecto: Disco físico

    Fila de disco média contador: Comprimento

    Instância: Verificação de cada instância de disco físico

  • Objecto: Estatísticas SQL Server: SQL

    Contador: SQL compilações/seg
Procure uma tendência sobre o período de tempo de quando o desempenho ficou de bom inválido: o que aumenta primeiro? É o computador da CPU associado ou E/S de disco associados? Estas informações, juntamente com a saída de Profiler anteriormente neste artigo, ajudará a reduzir áreas problemáticas. Problemas de CPU elevados poderão indicar grandes quantidades de recompilações do procedimento armazenado, compilações de consulta ad hoc ou utilização intensiva de associações hash e de impressão em série. Devem seguir os artigos referidos neste artigo para determinar o curso de acção correcto. Comprimentos de fila de disco alta podem indicar a necessidade de mais memória do sistema ou um subsistema de disco melhorados.

Propriedades

Artigo: 224587 - Última revisão: 26 de outubro de 2007 - Revisão: 4.3
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 7.0 Standard Edition
Palavras-chave: 
kbmt kbproductlink kbhowtomaster kbhowto kbinfo KB224587 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 224587

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com