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 / 25656
Accepted
Petter Brodin
Petter Brodin
Asked: 2012-10-10 00:51:57 +0800 CST2012-10-10 00:51:57 +0800 CST 2012-10-10 00:51:57 +0800 CST

Tamanho do log virtual do SQL Server

  • 772

Sou um DBA acidental, sendo um desenvolvedor que herdou alguns servidores de banco de dados (2005 e 2008) de alguém que sabia pouco sobre administração de banco de dados e aparentemente tinha ainda menos interesse em aprender mais sobre o assunto.

Estou aprendendo à medida que trabalho e, no momento, estou tentando descobrir os arquivos de log de transações.

Todos os nossos bancos de dados foram configurados com o modelo de recuperação simples e autoshrink. Entendo que usar o autoshrink geralmente é uma ideia horrível, mas entendo que isso foi feito para impedir que os logs de transações fiquem fora de controle. (O autoshrink realmente encolhe o(s) arquivo(s) de log ou apenas o banco de dados?)

Eu encontrei isso sobre o SQL Server 2012 e queria saber se é verdade sobre 2005 e/ou 2008 e exatamente o que significa: "Quando um banco de dados usa o modelo de recuperação simples, o Mecanismo de Banco de Dados trunca o log de transações após um ponto de verificação. [. ..] O Mecanismo de Banco de Dados aciona um ponto de verificação automático no modelo de recuperação simples quando o log virtual fica 70% cheio." Onde o tamanho do log virtual é especificado?

Quero desabilitar a redução automática em todos os bancos de dados, mas antes de fazer isso, preciso saber que os arquivos de log não ficarão fora de controle rapidamente.

Qualquer ajuda seria muito apreciada.

sql-server transaction-log
  • 3 3 respostas
  • 4359 Views

3 respostas

  • Voted
  1. Best Answer
    Jon Seigel
    2012-10-10T09:01:30+08:002012-10-10T09:01:30+08:00

    Um único arquivo de log de transação tem um tamanho físico (que você vê no disco) e também é dividido dentro do arquivo físico em seções lógicas chamadas arquivos de log virtual (VLFs).

    O crescimento automático e a redução automática operam no arquivo de log de transações físicas .

    O truncamento do log de transações (também chamado de "limpeza de log") opera nas seções lógicas do log de transações (VLFs) e não afeta o tamanho do arquivo físico. Esta parte é freqüentemente objeto de confusão.

    Um arquivo de log deve sempre crescer para acomodar uma grande transação; desativar a redução automática deixará o arquivo de log com o tamanho máximo necessário, em vez de diminuir fisicamente seu tamanho.

    Se você não tiver grandes transações, será seguro desativar a redução automática; os arquivos de log não crescerão sem limite, como aconteceria se o banco de dados estivesse em FULLou BULK_LOGGEDe você não estivesse fazendo backups de log de transações.

    Esse comportamento é o mesmo para SQL Server 2005+.

    • 6
  2. Sky
    2012-10-10T02:40:45+08:002012-10-10T02:40:45+08:00

    Como você referiu em sua pergunta, no SQL 2005 e 2008 após o ponto de verificação, o arquivo de log de transações também será truncado.

    Minha sugestão seria definir o modelo de recuperação como completo e criar um trabalho para fazer um backup do arquivo de log de transações. Este trabalho pode ser agendado em seu banco de dados e irá truncar o log de transações após fazer o backup. Ele automaticamente truncará o arquivo de log para você. Por favor, dê uma olhada nos links abaixo:

    SQL Server 2005: http://technet.microsoft.com/en-us/library/ms189085(v=sql.90).aspx

    SQL Server 2008: http://technet.microsoft.com/en-us/library/ms189085(v=sql.100).aspx

    • 2
  3. Petter Brodin
    2012-10-11T04:27:42+08:002012-10-11T04:27:42+08:00

    Então, aqui está o que descobri depois de ler as outras respostas aqui e fazer algumas pesquisas por conta própria:

    P: "O autoshrink realmente reduz o(s) arquivo(s) de log ou apenas o banco de dados?" R: Pelo que entendi: sim, tem. O encolhimento automático é definido no nível do banco de dados e afeta todos os arquivos (visto se você clicar com o botão direito do mouse no banco de dados -> propriedades -> arquivos ou se executar a consulta 1). O crescimento automático, no entanto, funciona por nível de arquivo.

    P: "Onde está especificado o tamanho do log virtual?" R: Veja a resposta de Jon Seigel e o link que Remus postou. Para ver o tamanho do log físico e lógico, use a consulta 2

    Um problema é que, se o banco de dados tiver o modo de recuperação completo ativado, crescido para um tamanho grande e, em seguida, tiver o modo de recuperação alterado para simples, um ponto de verificação não será acionado porque o VLF cresceu automaticamente. É possível tentar resolver isso (consulte a resposta de Remus para possíveis problemas com cabeçalho/final dos arquivos de log) executando a consulta 3, que reduzirá o arquivo de log ao tamanho que tinha quando foi originalmente criado.

    Consultas:

    1)

    SELECT name, physical_name AS current_file_location, DB_NAME(database_id) AS dbname
    FROM sys.master_files
    WHERE DB_NAME(database_id) = 'mydb'
    

    2)

    DECLARE @tmpt TABLE(
        dbname VARCHAR(255),
        logsize DECIMAL,
        logspaceused DECIMAL,
        stat INT
    )
    
    INSERT INTO @tmpt
        EXEC ('DBCC SQLPERF(LOGSPACE)')
    
    SELECT * FROM @tmpt WHERE dbname LIKE 'mydb' ORDER BY logspaceused DESC
    

    3)

    checkpoint
    DBCC SHRINKFILE('logfile_name')
    
    • 2

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

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

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

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