Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
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 é 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.
1. Defina SQL Profiler para capturar um rastreio. Para o fazer, siga estes passos:
Abra o SQL Profiler.
No menu Ferramentas , clique em Opções .
Certifique-se que Todas as classes de eventos e as opções de Todas as colunas de dados estão seleccionadas.
Clique em OK .
Crie um registo novo.
No menu ficheiro , aponte para Novo e, em seguida, clique em Analisar .
No separador Geral , especifique um nome de rastreio e um ficheiro para capturar os dados.
No separador eventos , adicione os seguintes tipos de eventos para o rastreio:
Reduzir esta tabelaExpandir esta tabela
Título
Evento para adicionar
Descrição
Cursores
CursorPrepare
Este evento indica que foi preparado um cursor numa instrução SQL utilizando ODBC, OLEDB ou biblioteca de base de dados.
Aviso de erro e
Falta coluna estatísticas
Este 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.
Diversos
Atenção
Este evento indica que um sinal de atenção foi enviado por um cliente.
Diversos
UpdateStats automática
Este evento indica que a opção de Estatísticas de actualização automática foi accionada.
Diversos
Exec preparados SQL
Este evento indica que a biblioteca de base de dados, OLE DB ou ODBC executado uma instrução Transact-SQL anteriormente preparada ou instruções.
Diversos
Plano de execução
Este evento mostra a árvore de plano da instrução Transact-SQL que foi executada.
Diversos
Preparar SQL
Este 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.
Diversos
Unprepare SQL
Este 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ões
Ligar
Este evento indica que foi efectuada uma nova ligação.
Sessões
Desligar
Este evento indica que um cliente terminou.
Sessões
Ligação existente
Este evento indica que uma ligação existia quando o rastreio de SQL Profiler foi iniciado.
Procedimentos armazenados
SP: concluído
Este evento indica quando um procedimento armazenado tiver concluído sua execução.
Procedimentos armazenados
SP: recompilar
Este evento indica que um procedimento armazenado foi novamente compilado durante a execução.
Procedimentos armazenados
SP: início
Este evento indica quando um procedimento armazenado foi iniciada a execução.
Procedimentos armazenados
SP: StmtCompleted
Este evento indica quando uma instrução num procedimento armazenado tiver concluído sua execução.
TSQL:
SQL:BatchCompleted
Este evento indica que um lote de Transact-SQL concluída. A coluna de texto apresenta a instrução que foi executada.
TSQL:
SQL
Este evento indica uma instrução Transact-SQL concluída. A coluna de texto apresenta a instrução que foi executada.
TSQL:
RPC: concluído
Este evento indica que uma chamada de procedimento remoto (RPC, Remote Procedure Call) foi concluída.
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:BatchStarting
Este 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:StmtStarting
Este 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ício
Este evento indica o início de uma chamada de procedimento remoto (RPC, Remote Procedure Call).
Procedimentos armazenados
SP: StmtStarting
Este 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
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:
Inicie o Monitor de desempenho do Windows NT.
No menu Ver , clique em Iniciar sessão .
No menu Opções , clique em Iniciar sessão .
Especifique um nome de ficheiro e localização para iniciar os contadores de desempenho. Pode ajustar o intervalo de actualização conforme apropriado.
No menu Editar , clique em Adicionar para iniciar sessão .
Adicione todos os objectos. Tanto o Windows NT e o SQL Server objectos.
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:
150934
(http://support.microsoft.com/kb/150934/EN-US/
)
Como 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:
251004
(http://support.microsoft.com/kb/251004/EN-US/
)
INF: Como monitorizar o bloqueio do SQL Server 7.0
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
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:
224453
(http://support.microsoft.com/kb/224453/EN-US/
)
INF: Compreender e resolver problemas de bloqueio 7.0 ou 2000 do SQL Server
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:
243586
(http://support.microsoft.com/kb/243586/EN-US/
)
INF: 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:
243589
(http://support.microsoft.com/kb/243589/EN-US/
)
COMO: 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:
243588
(http://support.microsoft.com/kb/243588/EN-US/
)
COMO: 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:
243589
(http://support.microsoft.com/kb/243589/
)
COMO: 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:
243589
(http://support.microsoft.com/kb/243589/
)
COMO: 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:
243588
(http://support.microsoft.com/kb/243588/
)
COMO: 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.
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.
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
(http://support.microsoft.com/kb/224587/en-us/
)
Qual foi o esforço que despendeu pessoalmente para utilizar este artigo?
Muito baixo
Baixo
Moderado
Elevado
Muito elevado
Diga-nos porquê e o que podemos fazer para melhorar estas informações
Obrigado! Os seus comentários são utilizados para ajudar-nos a melhorar o conteúdo do nosso suporte. Para obter mais opções de assistência, visite a Home Page de Ajuda e Suporte.