Melhoramentos de concorrência de base de dados tempdb

Traduções de Artigos Traduções de Artigos
Artigo: 328551 - Ver produtos para os quais este artigo se aplica.
N.º DE BUGS: 362099 (SHILOH_BUGS)
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando a base de dados tempdb é muito utilizado, o SQL Server poderão contenção quando tenta atribuir páginas.

Nos dados de tabela de sistema sysprocesses , o waitresource pode aparecer como "2: 1: 1" (Perfect Forward Secrecy (PFS) página) ou "2: 1: 3" (SGAM página). Dependendo do grau de contenção, isso pode provocar também ao SQL Server apareça responder por curtos períodos.


Estas operações utilizam muito tempdb :
  • Repete-se criar e tabelas de largar temporário (local ou global).
  • Variáveis de tabela utilizam tempdb para fins de armazenamento.
  • Tabelas associadas com CURSORES de funcionar.
  • Tabelas de trabalho associadas a uma cláusula ORDER BY.
  • Tabelas de trabalho associadas a uma cláusula GROUP BY.
  • Ficheiros associados a planos de HASH de funcionar.
Grossa e significativa utilização destas actividades pode originar os problemas de contenção.

Causa

Durante a criação de objecto, as páginas dois (2) tem ser atribuídas a partir de uma extensão mista e atribuídas ao objecto novo. Uma página é para o índice de atribuição mapa (IAM) e o segundo é para a primeira página para o objecto. SQL Server controla extensões mistas utilizando o partilhada global atribuição mapa (SGAM) página. Cada página SGAM controla cerca de 4 gigabytes de dados.

Como parte de atribuir uma página de extensão mista, SQL Server tem de verificar a página de espaço livre de página (PFS) para saber que página mista é gratuita a ser atribuído. O PFS página mantém um registo de espaço livre disponível em todas as páginas e cada página de Perfect Forward Secrecy (PFS) controla cerca 8000 páginas. Sincronização adequada é mantida para efectuar alterações as páginas de Perfect Forward Secrecy (PFS) e SGAM; e que pode lugar outros Modificadores por curtos períodos.

Quando procura do SQL Server para uma página atribuir mista, inicia sempre a digitalização no mesmo ficheiro e SGAM página. Isto resulta numa contenção intensa na página SGAM quando vários misto página atribuições estão em curso, que pode causar problemas documentados na secção "Sintomas" deste artigo.

Nota Actividades de-Allocation também tem de modificar as páginas, podem contribuir para a maior contenção.

Para obter mais informações sobre os mecanismos de atribuição diferente utilizados pelo SQL Server (SGAM GAM, Perfect Forward Secrecy (PFS), IAM), consulte a secção "Referências" deste artigo.

Resolução

Para reduzir a contenção de recursos atribuição para tempdb , está a ter grande utilização, siga todos estes passos:
  1. Para os servidores que executem o SQL Server 2000 Service Pack 3 (SP3), aplicar correcção 8.00.0765 ou a segurança mais recentes corrigir 8.00.0818. Para os servidores que executem o SQL Server SP2, aplique a correcção 8.00.0702.

    Estas correcções estão disponíveis a partir das seguintes localizações:

    8.00.0765
    814916CORRECÇÃO: O serviço de impressão em série 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: Concorrência melhoramentos para base de dados tempdb
  2. Implementar o sinalizador de rastreamento -T1118 .

    Nota Sinalizador de rastreio -T1118 também está disponível e suportados no Microsoft SQL Server 2005 e SQL Server 2008. No entanto, se estiver a executar o SQL Server 2005 ou SQL Server 2008, não é necessário aplicar qualquer correcção.
  3. Aumente o número de ficheiros de dados tempdb seja pelo menos igual ao número de processadores. Além disso, crie os ficheiros com dimensionamento igual. Para mais informações, consulte a secção "Mais informação".
Nota Estes passos também se aplicam ao Microsoft SQL Server 7.0. A única excepção é que não existe nenhuma correcção para o SQL Server 7.0; por conseguinte, o passo 1 não é aplicável.

Relativamente aos passo 2, a utilização de sinalizador de rastreamento - T1118 para o SQL Server 7.0, antes de utilizar o sinalizador de rastreio, consulte o seguinte artigo na base de dados de conhecimento da Microsoft:
813492CORRECÇÃO: Criar índice falhar no SQL Server 7.0 quando o sinalizador de rastreamento 1118 está activado

Informações sobre Service Packs

Para resolver este problema, obtenha o service pack mais recente do Microsoft SQL Server 2000. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
290211Como obter o SQL Server 2000 service pack mais recente

Informações sobre a correcção

Correcção 8.00.0702

A versão inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas na hora universal coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário no item data e hora no painel de controlo.
   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   
				
notas
  • Devido a dependências de ficheiros, a correcção ou funcionalidade que contém os ficheiros mais recentes poderão também conter ficheiros adicionais.
  • A correcção 8.00.0702 destina a computadores em que aplicou o SQL Server 2000 SP2. Se tiver instalado o SQL Server 2000 SP3, instale o SQL Server 2000 SP3 conjunto versão 8.00.0765.

Ponto Da Situação

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

Mais Informação

Como correcção 8.00.0702 reduz o choque

Correcção 8.00.0702 introduz um algoritmo de round-robin para atribuições de página misto. Com a correcção, o ficheiro inicial agora serão diferente para cada atribuição de página consecutivos mista (se existir mais do que um ficheiro). Isto evita o problema de contenção, dividindo o train ficou através de SGAMs pela mesma ordem sempre com o mesmo ponto de partida. O novo algoritmo de atribuição para SGAM é puro round-robin e não respeita o preenchimento proporcional para manter a velocidade. Microsoft recomenda a criação tempdb ficheiros de dados com o mesmo tamanho.

Como implementar rastreio sinalizador - T1118 reduz o choque

Eis a lista de como utilizar -T1118 reduz o choque:
  • -T1118 é uma definição de todo o servidor.
  • Incluir o -T1118 rastreio sinalizador nos parâmetros de arranque para o SQL Server para que o sinalizador de rastreamento permanece em efeito mesmo depois do SQL Server é reciclado.
  • -T1118 remove quase todas as atribuições de página única no servidor.
  • Desactivando a maior parte das atribuições de página única, reduza a contenção na página SGAM.
  • Com -T1118 activado ON, quase todas as atribuições novas são executadas a partir de um GAM página (por exemplo, 2: 1: 2) que atribui oito (8) páginas (1 extensão) ao mesmo tempo a um objecto por oposição a uma única página a partir de uma extensão para as páginas em primeiro lugar oito (8) de um objecto sem o sinalizador de rastreio.
  • As páginas IAM continuar a utilizar as atribuições de página a partir da página SGAM, mesmo com -T1118 activado ON. No entanto, quando combinada com a correcção 8.00.0702 e ficheiros de dados maiores tempdb , o efeito é uma redução de contenção na página SGAM. Para questões de espaço, consulte a secção "Desvantagens" deste artigo.
Nota Quando o sinalizador de rastreamento 1118 está activado para a instância do SQL Server 2000, não poderá restaurar uma base de dados SQL Server 7.0 com êxito. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
837938Poderá receber uma mensagem de erro quando tenta restaurar uma cópia de segurança da base de dados SQL Server 7.0 numa instância do SQL Server 2000

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

Se o tamanho do ficheiro de dados de tempdb é 5 GB e o tamanho de ficheiro de registo é 5 GB, a recomendação é aumentar o único ficheiro de dados a 10 (cada de 500 MB para manter o dimensionamento igual) e deixar o ficheiro de registo tal como está. Com os ficheiros de dados diferentes em discos separados seria bom. No entanto, isto não é necessário e podem coexistir no mesmo disco.

O número ideal dos ficheiros de dados tempdb depende do grau de contenção visto no tempdb . Como ponto de partida, pode configurar o tempdb seja pelo menos igual ao número de processadores atribuídos para SQL Server. Sistemas de final superiores (por exemplo, proc 16 ou 32), o número inicial poderá ser 10. Se a contenção não é reduzida, poderá ter de aumentar o número de ficheiros de dados mais.

Nota Um processador de duplo núcleo é considerado dois processadores.

O dimensionamento igual dos ficheiros de dados é crítico porque o algoritmo de preenchimento proporcional se baseia o tamanho dos ficheiros. Se forem criados ficheiros de dados com diferentes tamanhos, o algoritmo de preenchimento proporcional tenta utilizar o ficheiro maior mais GAM atribuições de em vez de difusão as atribuições de entre todos os ficheiros, eliminando assim o objectivo de criar vários ficheiros de dados.

Auto-grow dos ficheiros de dados tempdb também podem interferir com o algoritmo de preenchimento proporcional. Por este motivo, poderá ser aconselhável desactivar a funcionalidade auto-grow para os ficheiros de dados tempdb . Se a opção auto-grow estiver desactivada, tem Certifique-se criar os ficheiros de dados de forma a são suficientemente grandes para impedir que o servidor ter falta de espaço em disco com tempdb .

Como aumentar o número de dados tempdb ficheiros com dimensionamento igual reduz o choque

Eis uma lista de como aumentar o número de ficheiros de dados tempdb com dimensionamento igual reduz o choque:
  • Com dados de um ficheiro para o tempdb , tem apenas uma página GAM e uma página SGAM para cada 4 GB de espaço.
  • Aumentar o número de ficheiros de dados com os mesmos tamanhos para tempdb eficazmente cria uma ou mais GAM e SGAM páginas para cada ficheiro de dados.
  • O algoritmo de atribuição para GAM fornece sem uma extensão ao mesmo tempo (oito páginas contíguas) do número de ficheiros de uma forma de round robin ao honoring preenchimento proporcional. Por conseguinte, se tiver 10 ficheiros de tamanho iguais, a primeira atribuição é do ficheiro1, o segundo ficheiro2, a terceira ficheiro3 e assim sucessivamente.
  • A contenção de recursos da página Perfect Forward Secrecy (PFS) é reduzida porque oito páginas são marcadas como total num momento porque GAM é atribuir as páginas.

Desvantagens

A desvantagem apenas para as recomendações mencionado anteriormente é que pode ver o tamanho das bases de dados aumenta quando se verificam as seguintes condições:
  • São criados novos objectos numa base de dados do utilizador.
  • Cada um dos novos objectos ocupam menos 64 KB de memória.
Se estas condições são verdadeiras, poderá atribua 64 KB (8 páginas * 8 KB = 64 KB) para um objecto apenas requer 8 KB de espaço, assim desperdiçar 56 KB de memória. No entanto, se o novo objecto utiliza mais do que 64 KB (8 páginas) em é duração, não existe nenhum desvantagem com o sinalizador de rastreio. Por este motivo, num cenário de caso pior, SQL Server pode acabar por atribuir (7) sete páginas adicionais durante a primeira atribuição apenas para novos objectos que nunca ultrapasse a página de um (1).

Referências

Para obter mais informações sobre GAM, SGAM Perfect Forward Secrecy (PFS) e IAM, consulte os seguintes tópicos SQL Server 2000 Books Online:
  • "Gestão de espaço utilizado pelos objectos"
  • "Gerir atribuições de extensão de espaço livre"e"
  • "Tabela e arquitectura de índice remissivo"
  • "Pilha estruturas"

Propriedades

Artigo: 328551 - Última revisão: 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 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: 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