Aprimoramentos de simultaneidade para o banco de dados tempdb

Traduções deste artigo Traduções deste artigo
ID do artigo: 328551 - Exibir os produtos aos quais esse artigo se aplica.
BUG #: 362099 (SHILOH_BUGS)
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Ao banco de dados tempdb for muito usado, SQL Server pode enfrentar contenção quando ele tenta alocar páginas.

Da saída sysprocesses sistema tabela, o waitresource pode mostrar como "2: 1: 1" (PFS página) ou "2: 1: 3" (SGAM página). Dependendo do grau de contenção, isso também pode levar ao SQL Server aparecendo responder por curtos períodos.


Essas operações muito usam tempdb :
  • Repetido criar e soltar de temporário tabelas (local ou global).
  • Variáveis de tabela que usam tempdb para fins de armazenamento.
  • Trabalhar tabelas associadas com CURSORS.
  • Tabelas de trabalha associadas com uma cláusula ORDER BY.
  • Tabelas de trabalha associadas com uma cláusula GROUP BY.
  • Arquivos associados com HASH PLANOS de trabalho.
Uso pesado e significativo dessas atividades pode levar a problemas de contenção.

Causa

Durante a criação de objeto, páginas de dois (2) devem ser alocadas de uma extensão mista e atribuídas ao novo objeto. Uma página é para o índice de mapa de alocação (IAM) e o segundo é para a primeira página para o objeto. SQL Server controla extensões mistas usando o compartilhada global alocação mapa (SGAM) páginas. Cada página SGAM acompanha cerca de 4 gigabytes de dados.

Como parte de alocação de uma página de extensão mista, SQL Server deve verificar a página de espaço livre em página (PFS) para descobrir qual página mista está livre para ser alocada. O PFS página mantém o controle de espaço livre disponível em cada página, e cada página PFS controla páginas sobre 8000. Sincronização apropriado é mantida para fazer alterações em páginas PFS e SGAM; e que pode vaga outros modificadores por curtos períodos.

Quando o SQL Server procura uma página de mista para alocar, ele sempre inicia a verificação no mesmo arquivo e SGAM página. Isso resulta em intensa contenção na página SGAM quando vários misto página alocações estão em andamento, que pode causar problemas documentados na seção "Sintomas" deste artigo.

Observação Atividades desalocação também devem modificar as páginas, que podem contribuir para a contenção maior.

Para obter mais informações sobre os mecanismos de alocação diferentes usados pelo SQL Server (SGAM GAM, PFS, IAM), consulte a seção "Referências" deste artigo.

Resolução

Para reduzir a contenção de recursos de alocação para tempdb que está apresentando uso pesado, execute todas essas etapas:
  1. Para servidores que estejam executando o SQL Server 2000 Service Pack 3 (SP3), aplique o hotfix 8.00.0765 ou a segurança mais recente corrigir 8.00.0818. Para servidores que estão executando o SQL Server SP2, aplique o hotfix 8.00.0702.

    Essas correções estão disponíveis nos seguintes locais:

    8.00.0765
    814916CORRECÇÃO: O agente de mesclagem para uma publicação filtrada pode falhar
    8.00.0818
    http://www.microsoft.com/technet/security/bulletin/MS03-031.mspx
    8.00.0702
    328551CORRECÇÃO: Aprimoramentos de simultaneidade para o banco de dados tempdb
  2. Implementar o sinalizador de rastreamento -T1118 .

    Observação Sinalizador de rastreamento -T1118 também está disponível e com suporte no Microsoft SQL Server 2005 e SQL Server 2008. No entanto, se você estiver executando o SQL Server 2005 ou SQL Server 2008, não é necessário aplicar qualquer hotfix.
  3. Aumente o número de arquivos de dados tempdb a serem pelo menos igual ao número de processadores. Além disso, criar os arquivos com dimensionamento igual. Para obter mais informações, consulte a seção "Mais informação".
Observação Essas etapas também se aplicam ao Microsoft SQL Server 7.0. A única exceção é que não há nenhum hotfix para o SQL Server 7.0; portanto, etapa 1 não se aplica.

Com relação à etapa 2, o uso de sinalizador de rastreamento - T1118 para o Microsoft SQL Server 7.0, antes de usar o sinalizador de rastreamento, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
813492CORRECÇÃO: Criar índice falha no SQL Server 7.0 quando o sinalizador de rastreamento 1118 está habilitado

Informações sobre o service pack

Para resolver esse problema, obtenha o service pack mais recente para o Microsoft SQL Server 2000. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
290211Como obter o SQL Server 2000 service pack mais recente

Informações sobre o hotfix

Hotfix 8.00.0702

A versão em inglês deste hotfix tem atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas no horário de universal coordenado (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário no item Data e hora no painel de controle.
   Date         Time   Version         Size       File name
   ----------------------------------------------------------------
   30-Aug-2002  21:08                    786,432  Distmdl.ldf
   30-Aug-2002  21:08                  2,359,296  Distmdl.mdf
   09-Oct-2002  00:54                        544  Drop_repl_hotfix.sql
   02-Jul-2002  15:35  2000.80.650.0     107,088  Impprov.dll      
   19-Jul-2002  16:56                    774,516  Instdist.sql
   08-Oct-2002  23:56                     12,615  Inst_repl_hotfix.sql
   20-Aug-2002  16:24  2000.80.679.0     111,172  Logread.exe      
   07-Apr-2002  02:08  2000.80.606.0      62,024  Odsole70.dll     
   03-Jan-2002  01:59                     18,185  Qfe356326.sql
   20-Aug-2002  16:47  2000.80.679.0     135,748  Qrdrsvc.exe      
   26-Aug-2002  22:49  2000.80.679.0     406,088  Rdistcom.dll     
   04-Oct-2001  01:36                    437,302  Replcom.sql
   20-Aug-2002  16:33  2000.80.679.0     152,136  Replmerg.exe     
   19-Nov-2001  20:36                    993,945  Replmerg.sql
   05-Nov-2002  23:48  2000.80.700.0     221,768  Replprov.dll     
   04-Oct-2001  01:36                    986,906  Replsys.sql
   04-Oct-2001  01:36                    881,228  Repltran.sql
   26-Aug-2002  22:49  2000.80.679.0     283,208  Rinitcom.dll     
   16-Sep-2002  22:31                    390,045  Securityhotfix.sql
   26-Aug-2002  22:49  2000.80.679.0      28,672  Sqlagent.dll     
   26-Aug-2002  18:39  2000.80.679.0     311,872  Sqlagent.exe     
   28-Aug-2002  16:32  2000.80.679.0      49,152  Sqlagent.rll
   26-Aug-2002  22:49  2000.80.679.0      53,824  Sqlcmdss.dll     
   28-Aug-2002  16:40  2000.80.679.0      12,288  Sqlcmdss.rll
   24-Oct-2002  17:37  2000.80.695.0     176,696  Sqlmap70.dll     
   11-Nov-2002  09:52  2000.80.702.0   7,471,185  Sqlservr.exe     
   11-Nov-2002  09:51                 12,633,088  Sqlservr.pdb
   01-Nov-2002  18:56  2000.80.698.0      45,644  Sqlvdi.dll       
   01-Nov-2002  18:00  2000.80.697.0      82,492  Ssnetlib.dll     
   07-Apr-2002  02:08  2000.80.606.0      70,208  Xplog70.dll      
   07-Apr-2002  02:08  2000.80.606.0      53,828  Xpqueue.dll      
   07-Apr-2002  02:08  2000.80.606.0     156,228  Xprepl.dll       
   12-Jul-2002  01:00  2000.80.658.0     279,104  Xpstar.dll       
   16-Sep-2002  23:12  2000.80.686.0      98,872  Xpweb70.dll   
				
anotações
  • Devido às dependências do arquivo, o hotfix mais recente ou o recurso que contém os arquivos também pode conter arquivos adicionais.
  • O hotfix 8.00.0702 é para computadores em que você aplicou o SQL Server 2000 SP2. Se você instalou o SQL Server 2000 SP3, instale o SQL Server 2000 SP3 acúmulo versão 8.00.0765.

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a". Esse problema foi corrigido primeiro no Microsoft SQL Server 2000 Service Pack 4.

Mais Informações

Como o Hotfix 8.00.0702 reduz a contenção

Hotfix 8.00.0702 apresenta um algoritmo de rodízio para alocações de página misto. Com a correção, o arquivo inicial agora será diferente para cada alocação de página consecutivos misto (se existir mais de um arquivo). Isso evita o problema de contenção, dividindo o trem passou pelo SGAMs na mesma ordem sempre com o mesmo ponto de partida. O novo algoritmo de alocação para SGAM está puro round-robin e não aceitar o preenchimento proporcional para manter a velocidade. A Microsoft recomenda que você crie tempdb arquivos de dados com o mesmo tamanho.

Como implementar rastrear sinalizador - T1118 disputa

Aqui é a lista de como usar de -T1118 disputa:
  • -T1118 é uma configuração de todo o servidor.
  • Incluir o -T1118 sinalizador nos parâmetros de inicialização de rastreamento para o SQL Server para que o sinalizador de rastreamento permanece em vigor mesmo depois que o SQL Server é reciclado.
  • -T1118 remove quase todas as alocações de página única no servidor.
  • Ao desativar a maioria das alocações de página única, você reduz a contenção na página SGAM.
  • Com -T1118 ativado ON, quase todas as alocações novas são executadas de uma GAM página (por exemplo, 2: 1: 2) que aloca oito (8) páginas (1 ponto) uma vez para um objeto ao contrário de uma única página de uma extensão para as páginas primeiro oito (8) de um objeto, sem o sinalizador de rastreamento.
  • As páginas IAM ainda usam as alocações de página única SGAM na página, mesmo com -T1118 ativado ON. No entanto, quando combinado com hotfix 8.00.0702 e arquivos de dados tempdb de aumento, o efeito é uma redução na contenção na página SGAM. Para questões de espaço, consulte a seção "Desvantagens" deste artigo.
Observação Quando o sinalizador de rastreamento 1118 está ativado para a instância do SQL Server 2000, você não poderá restaurar um banco de dados do SQL Server 7.0 com êxito. Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
837938Você pode receber uma mensagem de erro ao tentar restaurar um backup do banco de dados SQL Server 7.0 em uma instância do SQL Server 2000

Aumentar o número de arquivos de dados tempdb com dimensionamento igual

Se o tamanho do arquivo de dados de tempdb é 5 GB e o tamanho de arquivo de log é de 5 GB, a recomendação é aumentar o único arquivo de dados para 10 (cada 500 MB para manter o dimensionamento de igual) e deixar o arquivo de log como está. Ter os arquivos de dados diferentes em discos separados seriam bons. No entanto, isso não é necessário e eles podem coexistir no mesmo disco.

O número ideal de arquivos de dados tempdb depende o grau de contenção visto em tempdb . Como um ponto de partida, você pode configurar o tempdb para ser pelo menos igual ao número de processadores, designado para o SQL Server. Para sistemas de end superiores (por exemplo, 16 ou 32 proc), o número inicial poderia ser 10. Se a contenção não será reduzida, talvez seja necessário aumentar o número de arquivos de dados mais.

Observação Um processador dual-core é considerado dois processadores.

O dimensionamento dos arquivos de dados igual é crítico porque o algoritmo de preenchimento proporcional se baseia o tamanho dos arquivos. Se arquivos de dados são criados com diferentes tamanhos, o algoritmo de preenchimento proporcional tenta usar o arquivo maior mais para alocações GAM em vez de disseminar as alocações de entre todos os arquivos, assim, invalidando a finalidade da criação de vários arquivos de dados.

Auto-grow dos arquivos de dados tempdb também podem interferir com o algoritmo de preenchimento proporcional. Portanto, talvez seja aconselhável desativar o recurso auto-grow para os arquivos de dados tempdb . Se a opção auto-grow estiver desativada, você deve verificar criar os arquivos de dados de modo que eles são grandes o suficiente para impedir que o servidor tendo uma falta de espaço em disco com tempdb .

Como aumentar o número de dados tempdb arquivos com dimensionamento igual disputa

Aqui está uma lista de como aumentar o número de arquivos de dados tempdb com dimensionamento igual disputa:
  • Com dados de um arquivo para tempdb , você só tem uma página GAM e uma página SGAM para cada 4 GB de espaço.
  • Aumentar o número de arquivos de dados com os mesmos tamanhos para tempdb efetivamente cria uma ou mais páginas GAM e SGAM para cada arquivo de dados.
  • O algoritmo de alocação para GAM fornece sem uma extensão ao mesmo tempo (oito páginas contíguas) do número de arquivos em uma forma de rodízio ao honrando preenchimento proporcional. Portanto, se você tiver 10 arquivos de tamanhos iguais, a primeira alocação é de arquivo1, o segundo do arquivo2, o terceiro de arquivo3 e assim por diante.
  • A contenção de recursos da página PFS é reduzida, pois oito páginas marcadas como total uma vez porque GAM está alocando as páginas.

Desvantagens

A única desvantagem para as recomendações mencionado é que você pode ver o tamanho dos bancos de dados aumentar quando as seguintes condições forem verdadeiras:
  • Novos objetos são criados em um banco de dados do usuário.
  • Cada um dos novos objetos ocupam menos de 64 KB de armazenamento.
Se essas condições forem verdadeiras, você pode alocar 64 KB (8 páginas * 8 KB = 64 KB) para um objeto que exige apenas 8 KB de espaço, desperdiçando assim 56 KB de armazenamento. No entanto, se o novo objeto usa mais de 64 KB (8 páginas) é o tempo de vida, não há nenhuma desvantagem com o sinalizador de rastreamento. Portanto, em um cenário pior caso, SQL Server pode acabar alocando (7) sete páginas adicionais durante a primeira alocação somente para novos objetos que nunca crescer além da página de um (1).

Referências

Para obter mais informações sobre GAM SGAM, PFS e IAM, consulte os seguintes tópicos livros online do SQL Server 2000:
  • "Gerenciando o espaço usado por objetos"
  • "Gerenciamento alocações de extensão e espaço livre"
  • "Tabela e arquitetura de índice"
  • "Estruturas de heap"

Propriedades

ID do artigo: 328551 - Última revisão: sexta-feira, 13 de março de 2009 - Revisão: 12.0
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Workgroup Edition
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Palavras-chave: 
kbmt kbhotfixserver kbqfe kbsqlserv2000presp4fix kbfix kbbug KB328551 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 328551

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