Considerações para as definições de "autogrow" e "autoshrink" no SQL Server

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

Sumário

Autogrow e autoshrink as predefinições irão funcionar para com sem optimização no SQL Server muitos sistemas. No entanto, existem ambientes onde não tem de activar as definições ou onde poderá ter de ajustar os parâmetros autogrow e autoshrink. Este artigo fornece algumas informações de fundo para o guiar quando selecciona as definições para o seu ambiente.

Mais Informação

Eis alguns aspectos a considerar se optar por optimizar os parâmetros autogrow e autoshrink.

Como configuro as definições?

  1. Pode configurar as definições autogrow e autoshrink utilizando um dos seguintes procedimentos:
    • Uma instrução ALTER DATABASE (não disponível no SQL Server 7.0)
    • SQL Server Management Studio ou o SQL Enterprise Manager
    • O sp_dboption armazenados procedimento (preterido no SQL Server 2005)
    Nota Se estiver a utilizar o SQL Server 2005, utilize o SQL Server Management Studio em vez do SQL Enterprise Manager. Para obter mais informações sobre como definir estas definições no SQL Server 2005, visite os seguintes Web sites da MSDN (Microsoft Developer Network):
    Como: adicionar dados ou ficheiros de registo para uma base de dados (SQL Server Management Studio)
    http://msdn2.microsoft.com/en-us/library/ms189253.aspx
    Propriedades da base de dados (ficheiros de página)
    http://msdn2.microsoft.com/en-us/library/ms180254.aspx
    Também pode configurar a opção autogrow quando cria uma base de dados.

    Pode visualizar as definições actuais através das propriedades da base de dados no SQL Enterprise Manager (SEM). Em alternativa, pode executar o seguinte comando Transact-SQL:
    sp_helpdb [ [ @dbname= ] 'name' ]
  2. Tenha em atenção que as definições de autogrow são por ficheiro. Consequentemente, terá de defini-las em, pelo menos, dois locais para cada base de dados (uma para o ficheiro de dados primário) e outra para o ficheiro de registo principal. Se tiver vários ficheiros de dados e/ou registo, tem de definir as opções de cada ficheiro. Dependendo do ambiente, pode acabar com definições diferentes para cada ficheiro de base de dados.

Quais são as implicações de desempenho?

  • Se executar uma operação que requer mais espaço do registo que está disponível e tiver activado a opção autogrow para o registo de transacções de base de dados, o tempo que demora a concluir da transacção incluirá o tempo que demora o registo de transacções cresça pelo montante configurado. Se o incremento de crescimento é grande ou se não houver outro factor que causa a demorar muito tempo, a consulta na qual abriu a transacção poderá falhar devido a um erro de tempo de espera de. O mesmo tipo de problema pode resultar de um autogrow da parte de dados da base de dados. Para alterar a configuração autogrow, consulte o tópico "ALTER DATABASE" no SQL Server Books Online.
  • Se executar uma transacção grande que requer o registo de crescimento, outras transacções que necessitem de uma operação de escrita no registo de transacções também tem de aguardar até concluir a operação de crescimento.
  • Se combinar as opções autogrow e autoshrink, poderá criar desnecessários sobrecarga. Certifique-se que os limiares que accionam o crescimento e encolher operações não origine frequentes alterações de tamanho para cima e para baixo. Por exemplo, poderá executar uma transacção que faz com que o registo de transacções cresça por 100 MB no momento em que se compromete. Alguns tempo após o que o autoshrink inicia e diminui o log de transacções por 100 MB. Em seguida, execute a mesma transacção e faz com que o registo de transacções cresça novamente por 100 MB. Nesse exemplo, que está a criar desnecessários sobrecarga e potencialmente criar fragmentação do ficheiro de registo, qualquer um dos quais pode afectar negativamente desempenho.
  • Fragmentação física de alterar o tamanho dos ficheiros de dados ou de registo pode ter um grave efeito no desempenho do. Isto acontece se utilizar definições automáticas ou quer manualmente aumentar e diminuir os ficheiros com frequência.
  • Se aumentar a base de dados em pequenos deslocamentos ou se aumentar- e, em seguida, diminua-lo, pode acabar por com fragmentação do disco. Disco fragmentação pode causar problemas de desempenho em algumas circunstâncias. Num cenário de crescimento pequenos incrementos também pode reduzir o desempenho do sistema.
  • No SQL Server 2005 ou em versões posteriores, é possível activar o ficheiro instantâneas inicialização. Ficheiro instantâneas inicialização acelera atribuições ficheiro apenas para ficheiros de dados. Ficheiro instantâneas inicialização não se aplica aos ficheiros de registo.
  • Se tiver muitos ficheiros growths nos ficheiros de registo, poderá ter um número excessivamente elevado de ficheiros de registo virtual (VLF). Isto pode conduzir a problemas de desempenho com operações de arranque/online da base de dados, replicação, espelhamento (mirroring) e alterar dados de captura (CDC). Além disso, por vezes, isto poderá causar problemas de desempenho com modificações de dados.

Procedimentos recomendados

  • Para um sistema de produção gerida, tem de considerar autogrow ser apenas uma contingência crescimento inesperado. Não deve gerir o crescimento de dados e de registo numa base diária com autogrow.
  • Pode utilizar alertas ou programas de monitorização para monitorizar o tamanho dos ficheiros e aumentar ficheiros de forma pró-activa. Isto ajuda a evitar a fragmentação e permite-lhe para mudar estas actividades de manutenção para horas de pico não.
  • AutoShrink e autogrow devem ser cuidadosamente avaliados por um administrador da base de dados formada (DBA); estes não devem ser deixados não gerido.
  • O incremento autogrow deve ser suficiente para evitar as sanções de desempenho listadas na secção anterior. O valor exacto para utilizar a definição de configuração bem como a escolha entre uma percentagem do crescimento e um crescimento tamanho MB depende de vários factores no seu ambiente. Um princípio geral para o utilizador pode utilizar para testar é definir a definição autogrow para cerca de um-oito, o tamanho do ficheiro.
  • Active a definição <maxsize>para cada ficheiro para impedir que qualquer ficheiro de uma cultura até um ponto em que utiliza até todo o espaço disponível no disco.
  • Manter o tamanho de suas transações mais pequeno possível evitar o crescimento do ficheiro não planeado.

Por que motivo tenho de preocupar com espaço em disco se as definições de tamanho são automaticamente controladas?

  • A definição autogrow não é possível aumentar o tamanho da base de dados para além dos limites do espaço em disco disponível nas unidades que ficheiros são definidos. Por conseguinte, se depender a funcionalidade autogrow para dimensionar as bases de dados, tem de dar ainda independentemente o espaço disponível no disco rígido. A definição autogrow também é limitada pelo parâmetro MAXSIZE seleccionado para cada ficheiro. Para reduzir a possibilidade de ficar sem espaço de, é possível monitorizar o contador do Monitor de desempenho do SQL Server: objectos de bases de dados: tamanho de ficheiro (s) de dados (KB) e configurar um alerta para quando a base de dados atinge um determinado tamanho.
  • Não planeado crescimento dos ficheiros de dados ou de registo pode tirar o espaço que outras aplicações espera que estejam disponíveis e poderão fazer com que as outras aplicações a ter problemas.
  • O incremento de crescimento do registo de transacções do deve ser suficiente para manter-se à frente das necessidades dos seus comutadores de transacção. Mesmo com autogrow activada, pode receber uma mensagem indicando que o registo de transacções está cheio, se não é possível aumentar suficientemente rápido de satisfazer as necessidades da consulta.
  • SQL Server não testa constantemente para bases de dados que têm o limiar configurado para autoshrink de visitas. Em vez disso, vê as bases de dados disponíveis e localiza a primeira aquele que está configurado para autoshrink. Verifica essa base de dados e encolhe nessa base de dados, se necessário. Em seguida, aguarda vários minutos antes de verificar a base de dados seguinte que está configurado para autoshrink. Por outras palavras, SQL Server não verificar todas as bases de dados ao mesmo tempo e diminui-las todas ao mesmo tempo. Funcionará através de bases de dados de uma forma de round robin para escalonar a carga fora durante um período de tempo. Por conseguinte, dependendo quantos nas bases de dados de uma determinada instância do SQL Server configurado para autoshrink, poderá demorar várias horas a contar da data que da base de dados atinge o limite até que realmente diminui.

Referências

Para obter mais informações sobre como aumentar e diminuir os ficheiros de base de dados e registo, clique nos números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
256650Como diminuir o registo de transacções do SQL Server 7.0
272318Diminuir o registo de transacções no SQL Server 2000 com o comando DBCC SHRINKFILE
317375Um registo de transacções aumenta inesperadamente ou fica cheio num computador que está a executar o SQL Server
247751Erro: Plano de manutenção da base de dados não diminuir a base de dados
305635Um tempo limite ocorre quando uma base de dados é expandir automaticamente
949523A 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 pequenos
Para mais informações sobre a inicialização do ficheiro de base de dados, visite o seguinte Web site da Microsoft Developer Network (MSDN):
Database file initialization
Para mais informações sobre como activar o ficheiro instantâneas inicialização, visite o seguinte Web site da Microsoft:
How and why to enable instant file initialization
Para obter mais informações sobre transacções registo arquitectura física, visite o seguinte site da Web MSDN:
Transaction log physical architecture

SQL Server Books Online; tópicos: "Transaction Log Physical Architecture"; "Diminuir the Transaction Log"

Propriedades

Artigo: 315512 - Última revisão: 7 de março de 2008 - Revisão: 7.4
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL 2005 Server Workgroup
Palavras-chave: 
kbmt kbinfo KB315512 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: 315512

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