AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 23305
Accepted
Ross Bush
Ross Bush
Asked: 2012-08-29 09:57:16 +0800 CST2012-08-29 09:57:16 +0800 CST 2012-08-29 09:57:16 +0800 CST

Sql Server - Práticas recomendadas para aumentar os arquivos de banco de dados

  • 772

Tenho monitorado o crescimento de arquivos por meio do coletor de dados no sql server 2008 r2 por duas semanas. O banco de dados está crescendo consistentemente em torno de 35(MB)/dia. O banco de dados ainda não atingiu o tamanho inicial de 2 GB.

O crescimento automático dos arquivos de banco de dados está definido para 5 MB e eu gostaria de tentar uma abordagem diferente, por isso estou procurando sugestões e/ou comentários.

Há uma tarefa de ajuste que é executada toda semana na noite de domingo à 1h30. A tarefa irá:

  • Verifique a integridade do banco de dados
  • Encolher o arquivo de log - (Isso é bom porque o modo de log é simples)
  • Encolher banco de dados
  • Reorganizar Índice
  • Índice de reconstrução
  • Atualizar estatísticas
  • Limpar histórico

Gostaria de adicionar mais duas etapas ao plano de ajuste semanal:

  1. Aumente o arquivo de banco de dados em 500 MB se o espaço usado atingir um determinado limite ou tamanho total.
  2. Aumente o arquivo de log em 250 MB (após a redução) se o espaço usado atingir um determinado limite de tamanho total.

Ao colocar a carga de crescimento em horas off-line, espero ganhar desempenho reduzindo o número de eventos de crescimento automático durante cargas pesadas.

Eu tenho duas perguntas relacionadas a arquivos de crescimento automático.

  • O melhor lugar para colocar as etapas de crescimento do arquivo seria antes das etapas atuais ou depois?
  • Se eu usar o ALTER DATABASE|MODIFY FILEpara aumentar o arquivo, como posso determinar se SpaceUsedInFile >= (TotalFileSpace-@AllowanceThreshold)?
sql-server sql-server-2008
  • 2 2 respostas
  • 42931 Views

2 respostas

  • Voted
  1. Best Answer
    Aaron Bertrand
    2012-08-29T10:06:11+08:002012-08-29T10:06:11+08:00

    Você deve ter como objetivo crescer automaticamente o mínimo possível. Sete vezes por dia é excruciante, mesmo com a inicialização instantânea do arquivo.

    Não faça um banco de dados Shrink. Sempre. Shrinkfile, talvez, mas só depois de um evento extraordinário. Encolhê-lo apenas para crescer novamente é um exercício de futilidade e deveria ser chamado de auto-fragmento.

    Se o modelo de recuperação for simples, não há como aumentar seu arquivo de log em 250 GB. O espaço usado no arquivo será limpo automaticamente ao longo do tempo, a menos que você tenha iniciado uma transação há um mês e não tenha a intenção de confirmá-la ou revertê-la.

    Então meu conselho seria:

    Aumente automaticamente o arquivo de dados manualmente durante um período de silêncio para um tamanho que acomode vários meses de crescimento. Para que você está guardando enquanto isso?

    Defina o incremento de crescimento automático para o arquivo de dados para algo relativamente pequeno (para que ele não interrompa os usuários quando isso acontecer) e alerte sobre esse evento (você pode capturá-lo no rastreamento padrão, por exemplo, ou por meio de estendido eventos). Isso pode dizer que você está atingindo o ponto alto estimado e é hora de crescer manualmente novamente. Neste ponto você vai querer manter este manual caso queira adicionar um novo arquivo / grupo de arquivos em uma unidade diferente para acomodar o espaço, pois eventualmente você preencherá a unidade atual.

    Aumente automaticamente o arquivo de log para, digamos, duas vezes o maior que já foi. Ele não deve crescer automaticamente, a menos que haja alguma transação anormal segurando as coisas. Você deve monitorar este evento também, para que você saiba sobre eles.

    • 28
  2. Nick Winstanley
    2012-11-24T14:00:10+08:002012-11-24T14:00:10+08:00

    O crescimento automático é algo que você deve tentar evitar, se possível. O problema é que você não tem controle sobre quando o crescimento pode acontecer e seu sistema pode sofrer um sério golpe enquanto isso.

    Defina o tamanho do seu arquivo para algo sensato por um mês ou mais e monitore sua taxa de crescimento a partir daí, calcule quanto espaço você estima para X período de tempo e defina seu tamanho para isso + uma margem de erro.

    Configurei um trabalho de monitoramento simples que me alertará quando o tamanho do arquivo atingir um máximo predefinido antes do crescimento automático. Você poderia usar algo assim:

    SELECT instance_name,
           [Data File(s) Size (KB)],
           [LOG File(s) Size (KB)],
           [Log File(s) Used Size (KB)],
           [Percent Log Used]
           into ##Logsize
    FROM
    (
       SELECT *
       FROM sys.dm_os_performance_counters
       WHERE counter_name IN
       (
           'Data File(s) Size (KB)',
           'Log File(s) Size (KB)',
           'Log File(s) Used Size (KB)',
           'Percent Log Used'
       )
         AND instance_name = 'database your interested in' 
    ) AS Src
    PIVOT
    (
       MAX(cntr_value)
       FOR counter_name IN
       (
           [Data File(s) Size (KB)],
           [LOG File(s) Size (KB)],
           [Log File(s) Used Size (KB)],
           [Percent Log Used]
       )
    ) AS pvt 
    go
    declare @logsize int
    Select @logsize = [Percent Log Used] from ##Logsize
    
    If @logsize > the maximum percent you want the log to fill too i.e 90
        BEGIN
            --Do your thing here
        END
    
    Drop table ##Logsize
    

    Claro que isso poderia ser agendado como um trabalho.

    • 12

relate perguntas

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Quanto "Padding" coloco em meus índices?

  • Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?

  • Como determinar se um Índice é necessário ou necessário

  • Downgrade do SQL Server 2008 para 2005

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve