CORRECÇÃO: Desempenho lento quando se recupera uma base de dados se existirem muitos VLF dentro o registo de transacções no SQL Server 2005, no SQL Server 2008 ou no SQL Server 2008 R2

Traduções de Artigos Traduções de Artigos
Artigo: 2455009 - Ver produtos para os quais este artigo se aplica.
A Microsoft distribui o Microsoft SQL Server 2005, 2008 e 2008 R2 corrige como um ficheiro para transferência. Uma vez que as correcções são cumulativas, cada nova versão inclui todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o anterior SQL Server 2005, 2008 e 2008 R2.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Considere o seguinte cenário:
  • Instalar o Microsoft SQL Server 2005, o Microsoft SQL Server 2008 ou o Microsoft SQL Server 2008 R2 num computador.
  • Um ou mais das bases de dados estão no modelo recuperação completa ou em massa-logged.
  • O tamanho inicial de um ficheiro de registo de transacção para a base de dados é pequeno. No entanto, o ficheiro de transacção for grande.
  • O duplicação incremento de crescimento do ficheiro de registo de transacções está configurado para um tamanho pequeno. Por exemplo, o duplicação incremento de crescimento é configurado para um megabyte ou para uma percentagem. Ou, se o ficheiro de registo da transacção aumentar utilizando um pequeno crescimento manual.
  • O ficheiro de registo de transacções cresce pelo incremento de crescimento pequeno. Após algum tempo, o ficheiro de registo de transacções é grande.

    Por exemplo, o ficheiro de registo de transacções cresce de megabytes de cem a dez gigabytes. O ficheiro de registo de transacções cresce por incremento de um megabyte em cada crescimento.
Neste cenário, poderá detectar os seguintes problemas:
  • Recuperação de base de dados é lenta quando a base de dados é iniciado, se existir um grande volume de trabalho para recuperar.

    Por exemplo, uma transacção está pendente aberto durante muito tempo. Ou, muitas das operações que apresentem pequenas em tamanho não são autorizadas, quando o SQL Server é encerrado ou reiniciadas. Neste caso, poderá receber um erro durante um período de tempo estimado recuperação na fase de análise, na fase de anulação ou na fase de Refazer. O erro é semelhante ao seguinte e é registado no ficheiro de registo de erro de SQL Server 2005:
    Análise da base de dados 'minhabasededados' (7) é 0% concluído (continuam a aproximadamente 1234 segundos). Esta é apenas uma mensagem informativa. Não é necessária nenhuma acção do utilizador.
  • Recuperação de base de dados é lenta quando um ficheiro de cópia de segurança da base de dados e uma sequência de registo da transacção adicionais são restauradas se a base de dados estiver online.

    Nota Para colocar a base de dados online durante a operação de restauro, utilize a COM A RECUPERAÇÃO sintaxe ou o COM O MODO DE ESPERA = <options></options> sintaxe.
  • Recuperação de espelhamento da base de dados é lento num servidor parceiro no par de espelhamento.
  • O progresso de agente de leitor do registo para replicação transaccional é lento para as seguintes operações:
    • O registo de transacções de uma base de dados do publisher é analisado.
    • É adicionado um comando numa base de dados de distribuição.
    • As transacções são replicadas.

    Nota Para mais informações, visite o seguinte Web site da Microsoft Developer Network (MSDN):
    949523 A latência de uma replicação transaccional é elevada no SQL Server 2005 quando o valor da propriedade "Initial Size" e o valor da propriedade Autogrowth são pequenas
  • Desempenho lento ocorre quando um instantâneo de base de dados é criado se muitas transacções iniciadas ou se os registos de transacção permanecem activos durante muito tempo. Este problema ocorre porque o snapshot tem de executar a recuperação e os registos de transacção tem de ser revertido.
  • Desempenho lento ocorre quando utiliza o DBCC CHECKDB verifica a sintaxe para criar um instantâneo de base de dados oculta que tem de recuperar totalmente o instantâneo de base de dados para executar a consistência.

Causa

Estes problemas ocorrem porque os ficheiros de registo (VLF) Virtual num arquivo de log de transacções poderá provocar um desempenho lento quando o SQL Server procura através destes VLF durante as operações seguintes:
  • Recuperação de base de dados
  • Espelhamento da base de dados
  • Instantâneo da base de dados
  • Actividades do leitor de registo de replicação transaccional de base de dados
Quando um ficheiro de registo de transacções para uma base de dados é cultivado em pequenos deslocamentos durante condições de crescimento extremas, milhares de centenas de milhares de VLF estão presentes no interior de um único conjunto de ficheiros de registo (. ldf) da transacção. No entanto, crescimento de registo de grandes dimensões através de grandes incrementos cria apenas várias VLF por comparação. Por exemplo, várias poderão ser inferior a 100 VLF.

Nota Os VLF existentes são as divisórias ou segmentos que são usados internamente pelo SQL Server no ficheiro de registo de transacções.

Resolução

Informações de actualização cumulativa

SQL Server 2008 R2

A correcção para este problema foi primeiro disponibilizada em 6 de actualização cumulativa. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2008 R2, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2489376 Pacote de actualização cumulativa 6 para SQL Server 2008 R2
Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o SQL Server 2008 R2 anterior. Recomendamos que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
981356 O SQL Server 2008 R2 cria disponibilizadas após o lançamento do SQL Server 2008 R2

SQL Server 2008 Service Pack 1

A correcção para este problema foi primeiro disponibilizada em 12 de actualização cumulativa para o SQL Server 2008 Service Pack 1. Para mais informações sobre este pacote de actualização cumulativa, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2467236 Pacote de actualização cumulativa 12 para SQL Server 2008 Service Pack 1
Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o SQL Server 2008 anterior. A Microsoft recomenda que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
970365 O SQL Server 2008 cria disponibilizadas após o lançamento do SQL Server 2008 Service Pack 1
Correcções do Microsoft SQL Server 2008 são criadas para os service packs específicos do SQL Server. Tem de aplicar uma correcção do SQL Server 2008 Service Pack 1 para uma instalação do SQL Server 2008 Service Pack 1. Por predefinição, qualquer correcção fornecida num service pack do SQL Server está incluída no próximo service pack do SQL Server.

SQL Server 2008 Service Pack 2

A correcção deste problema primeiro foi disponibilizada em 2 de actualização cumulativa para o SQL Server 2008 Service Pack 2. Para mais informações sobre este pacote de actualização cumulativa, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2467239 Pacote de actualização cumulativa 2 para SQL Server 2008 Service Pack 2
Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o SQL Server 2008 anterior. A Microsoft recomenda que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2402659 O SQL Server 2008 cria disponibilizadas após o lançamento do SQL Server 2008 Service Pack 2
Correcções do Microsoft SQL Server 2008 são criadas para os service packs específicos do SQL Server. Tem de aplicar uma correcção do SQL Server 2008 Service Pack 2 para uma instalação do SQL Server 2008 Service Pack 2. Por predefinição, qualquer correcção fornecida num service pack do SQL Server está incluída no próximo service pack do SQL Server.

SQL Server 2005 Service Pack 3

A correcção para este problema foi primeiro disponibilizada em 13 de actualização cumulativa para o SQL Server 2005 Service Pack 3. Para mais informações sobre este pacote de actualização cumulativa, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2438344 Pacote de actualização cumulativa 13 para o SQL Server 2005 Service Pack 3
Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o SQL Server 2005 anterior. A Microsoft recomenda que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
960598 O SQL Server 2005 cria disponibilizadas após o lançamento do SQL Server 2005 Service Pack 3
Correcções Microsoft SQL Server 2005 são criadas para os service packs específicos do SQL Server. Tem de aplicar uma correcção do SQL Server 2005 Service Pack 3 para uma instalação do SQL Server 2005 Service Pack 3. Por predefinição, qualquer correcção fornecida num service pack do SQL Server está incluída no próximo service pack do SQL Server.

SQL Server 2005 Service Pack 4

A correcção deste problema publicada pela primeira vez em 1 de actualização cumulativa para o SQL Server 2005 Service Pack 4. Para mais informações sobre este pacote de actualização cumulativa, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2464079 Pacote de actualização cumulativa 1 para o SQL Server 2005 Service Pack 4
Nota Uma vez que as compilações são cumulativas, cada edição contém todas as correcções e correcção de todas as correcções de segurança que foram incluídas com o SQL Server 2005 anterior. A Microsoft recomenda que pense em aplicar a edição de correcção mais recente que contenha esta correcção. Para mais informações, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
2485757 O SQL Server 2005 cria disponibilizadas após o lançamento do SQL Server 2005 Service Pack 4
Correcções Microsoft SQL Server 2005 são criadas para os service packs específicos do SQL Server. Tem de aplicar uma correcção do SQL Server 2005 Service Pack 4 para uma instalação do SQL Server 2005 Service Pack 4. Por predefinição, qualquer correcção fornecida num service pack do SQL Server está incluída no próximo service pack do SQL Server.

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".

Como contornar

Instale esta correcção e reinício do SQL Server pode melhorar o desempenho de recuperação. Por exemplo, o desempenho poderá ser melhorado para as seguintes operações depois de instalar esta correcção e reinicie o SQL Server:
  • Recuperação de base de dados
  • Espelhamento da base de dados
  • Instantâneo da base de dados
  • Actividades do leitor de registo de replicação transaccional de base de dados

Se não conseguir instalar esta correcção, pode efectuar as seguintes soluções alternativas para atenuar um problema existente e para impedir que uma ocorrência.

Atenuar um problema existente

  • Aguarde que a operação de recuperação para concluir ou de restauro

    Se tiver uma base de dados não reciclada, que tem um desempenho lento quando restaurar ou a recuperação da base de dados, poderá ter de aguardar que a operação de recuperação ou de restauro ser concluída. Por exemplo, poderá ver o estado offline ou o estado de recuperação no SQL Server Management Studio (SSMS) para uma base de dados não reciclada. Normalmente, a parar o SQL Server oferece franquia não para uma recuperação lenta e poderá demorar mais tempo para repetir a mesma fase de análise de recuperação, Refazer fase ou anular de fase.
  • Evitar a restaurar a sequência de registo de transacção que contém milhares de VLF

    Se detectar um desempenho lento enquanto restaurar e recuperar uma base de dados utilizando um ficheiro de cópia de segurança, pode evitar restaurar as sequências de registo de transacção que contêm milhares de VLF. Para identificar o ficheiro de cópia de segurança que tenha os maior parte dos virtual ficheiros de registo registada, utilize a seguinte instrução para ver as colunas FirstLSN e LastLSN os ficheiros de cópia de segurança do registo:
    HEADERONLY de RESTAURO de DISK='C:\folder\file.trn'

    Pode decidir evitar a restaurar os ficheiros de cópia de segurança do registo. Ou, pode utilizar o PARAR AT declaração para o RESTAURAR comandos para evitar as partes muito fragmentadas, os registos de transacção. Se não restaurar completamente as sequências de registo até ao ponto mais recente atempadamente durante um cenário de recuperação de falhas, perda de dados ocorre na base de dados do SQL Server. Esta perda de dados ocorre porque nem todas as transacções são guardadas. Por conseguinte, há uma decisão de solução de compromisso de negócio. Totalmente pode restaurar um registo de transacções muito fragmentados. No entanto, esta operação poderá demorar várias horas. Ou, pode utilizar o PARAR AT declaração a recuperação para parar a recuperação antes da parte do registo de muito fragmentada. No entanto, perdem quaisquer transacções em falta que omitir.

    Nota Sem instalar esta correcção, não existe normalmente nenhum recurso de seguro para recuperação emitido depois de reiniciar o SQL Server. SQL Server tem de localizar a lista dos VLF para analisar os ficheiros de registo para Refazer concluída transacções e, em seguida, para anular as transacções incompletas para concluir a recuperação para colocar a base de dados online com segurança. Não é possível ignorar com segurança transacções durante a recuperação.

Impedir que uma ocorrência de futura

  • Definir o incremento de duplicação da base de dados com um tamanho adequado

    Se o tamanho do aumento duplicação é demasiado pequeno, vão existir vários ficheiros de registo Virtual (VLF) e poderá detectar um desempenho lento no SQL Server. Se o tamanho do aumento duplicação é demasiado grande, as consultas que tornam a transacção registos crescem automaticamente poderão ter de esperar muito tempo a concluir um crescimento. Por conseguinte, poderá ocorrer um erro de limite de tempo no SQL Server. Para contornar estes problemas, pode definir o tamanho do incremento de duplicação da base de dados com um tamanho adequado.
  • Eliminar o grande número de VLF e utilizar um crescimento manual

    Se forem muitos VLF no registo de transacções, reduzir o tamanho do registo de transacções e torná-lo a aumentar antes de negócio de pico para satisfazer a procura utilizando um crescimento manual. Por exemplo, o registo de Transacções aumenta novamente para um tamanho médio razoável um incremento de grandes dimensões ou um crescimento manual único. Assim, o tamanho do registo de transacções atingir uma capacidade de pico e os ficheiros de cópia de segurança do registo são agendados numa base periódica e frequente. Além disso, o registo de transacções pode ficar truncado, e os VLF existentes para o registo de transacções podem ser reutilizados num ciclo.
  • Como diminuir e aumentar o registo de transacções manualmente

    Para corrigir um registo que tem VLF demasiados, siga estes passos para diminuir o registo e aumentar manualmente:
    1. Se a base de dados num modelo de recuperação completa ou em massa-logged, tem de criar uma cópia de segurança o registo de transacções para permitir os VLF existentes activos ser truncado e ser reutilizados.
      BACKUP LOG databasename TO DISK='C:\folder\log_backupfile.trn'

      Para mais informações sobre como criar uma cópia de segurança o ficheiro de registo de transacções através da utilização de SSMS, visite o seguinte Web site da Microsoft Developer Network (MSDN):Para mais informações sobre como efectuar uma cópia do ficheiro de registo da transacção utilizando instruções Transact-SQL, visite o seguinte Web site da MSDN:
    2. Para determinar o nome lógico do ficheiro de registo de transacções, execute uma das seguintes declarações.
      Declaração n º 1
      exec sp_helpfile 
      Declaração n º 2
      select * from sys.sysfiles 
      Para reduzir o tamanho do ficheiro de registo de transacções para o tamanho pretendido, utilize o seguinte código:
      DBCC SHRINKFILE(transactionloglogicalfilename, TRUNCATEONLY) 
    3. Pode aumentar o tamanho do ficheiro de registo de transacções com um tamanho adequado. Recomendamos que permita o tamanho do ficheiro de registo de transacção, o tamanho normal de pico. Por conseguinte, o duplicação incremento é evitado. Para definir o tamanho do registo de transacções, utilize a página de Propriedades da base de dados na SSMS ou utilize o seguinte ALTERAR BASE DE DADOS Sintaxe:
      MODIFY FILE ( NAME = transactionloglogicalfilenae, SIZE=newtotalsize MB) 

      Para mais informações sobre como aumentar o tamanho de uma base de dados SSMS, visite o seguinte Web site da MSDN:
      Como aumentar o tamanho de uma base de dados SSMS
      Para mais informações sobre o BASE DE DADOS ALTER MODIFICAR FICHEIRO sintaxe, visite o seguinte Web site da MSDN:
      Informações gerais sobre a sintaxe de alterar base de dados modificar o ficheiro

Mais Informação

Pode verificar o número de segmentos VLF revendo o ficheiro de registo de erros SQL e, em seguida, localizando o número de sequência do registo (LSN) em cada ficheiro de cópia de segurança de registo de transacções. O primeiro algarismo antes do símbolo de dois pontos nos LSNs corresponde ao número do LSN.

Por exemplo, o primeiro número a primeira mensagem informativa para o LSN é 1. No entanto, o primeiro número a segunda mensagem informativa para o LSN é 100001. Neste cenário, existem 100.000 VLF que é utilizados entre o momento da primeira mensagem informativa e a segunda mensagem informativa. Por conseguinte, o registo de transacções fragmentados registados que tenha vários ficheiros de registo Virtual (VLF) é semelhante ao seguinte:

{Registo foi feita uma cópia. Base de dados: mydbname, date(time) de criação: 2010/07/08(12:36:46), LSN primeiro: 1:5068:70, LSN última: 1:5108:1, número de dispositivos de informações de estado: 1, informações de dispositivo: (ficheiro = 1, tipo = DISK: {'C:\folder\logbackup1.trn'}). Esta é apenas uma mensagem informativa. Não é necessária nenhuma acção do utilizador.

Foi efectuada a cópia de segurança de registo. Base de dados: mydbname, date(time) de criação: 2010/07/08(15:36:46), LSN primeiro: 100001:5108:1, LSN última: 100002:5108:1, número de dispositivos de informações de estado: 1, informações de dispositivo: (ficheiro = 2, tipo = DISK: {'C:\folder\logbackup2.trn'}). Esta é apenas uma mensagem informativa. Nenhuma acção do utilizador é requerida.}

A tabela seguinte fornece mais informações sobre os produtos ou ferramentas que verificam automaticamente para a condição descrita na secção "Sintomas" na sua instância do SQL Server e nas versões do SQL Server com o qual a regra é avaliada.

Reduzir esta tabelaExpandir esta tabela
Software de regraTítulo de regraDescrição da regraVersões de produtos contra os quais a regra é avaliada
O System Center AdvisorSQL Server com replicação transaccional, o desempenho de agente do leitor de registo podem ser afectado devido ao tamanho do registo de transacções ou número de VLFNesta instância do SQL Server advisor detectado a replicação transaccional presença com o número de VLF ou TLOG tamanho consideravelmente superior. O desempenho do Log Reader Agent é negativamente afectado pelo tamanho do registo de transacções ou número de VLF. Reduza o tamanho do registo de transacções e o número de VLF para melhorar o desempenho do Log Reader Agent.SQL Server 2008

SQL Server 2008 R2

Servidor SQL 2012



Referências

Para mais informações sobre a arquitectura física do registo de transacções, visite o seguinte Web site da MSDN:
Informações gerais sobre a arquitectura física do registo de transacções

Para mais informações sobre números de sequência do registo (LSN), visite o seguinte Web site da MSDN:
Informações gerais sobre números de sequência do registo

Para mais informações sobre o erro 1413 quando inicia o espelhamento da base de dados, visite o seguinte Web site da MSDN:
Informações gerais sobre o erro 1413 quando inicia o espelhamento da base de dados

Para mais informações sobre como uma estrutura de ficheiro de registo pode afectar o tempo de recuperação de base de dados, visite o seguinte Web site da MSDN:
Como uma estrutura de ficheiro de registo pode afectar o tempo de recuperação de base de dados

Para mais informações sobre o registo de transacções VLF, visite o seguinte Web site da MSDN:
Informações gerais sobre o ficheiro de registo da transacção

Para mais informações sobre como criar um instantâneo de base de dados, visite o seguinte Web site da MSDN:
Como criar um instantâneo de base de dados
Para mais informações sobre o modelo de Assistência Incremental para o SQL Server, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
935897 Um modelo de Assistência Incremental está disponível a partir da equipa do SQL Server para proporcionar correcções para problemas comunicados
Para mais informações sobre o esquema de atribuição para actualizações do SQL Server, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
822499Novo esquema de atribuição de nomes para pacotes de actualização de software do Microsoft SQL Server
Para mais informações sobre a terminologia de actualização de software, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
824684 Descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft

Propriedades

Artigo: 2455009 - Última revisão: 7 de janeiro de 2014 - Revisão: 2.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Evaluation Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Standard Edition for Small Business
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Workgroup
Palavras-chave: 
kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2455009 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: 2455009

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