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 / 13243
Accepted
ivanmp
ivanmp
Asked: 2012-02-17 10:41:38 +0800 CST2012-02-17 10:41:38 +0800 CST 2012-02-17 10:41:38 +0800 CST

Qual é a passagem de desfazer que o SQL Server faz durante uma operação RESTORE WITH STANDBY?

  • 772

Pelo que entendi, o SQL Server gera arquivos de desfazer ao aplicar uma restauração em um banco de dados usando o RESTORE WITH STANDBY.

Da documentação do MSDN (ênfase minha):

O arquivo de espera é usado para manter uma pré-imagem "copy-on-write" para páginas modificadas durante a passagem de desfazerde um RESTAURAR COM STANDBY. O arquivo de espera permite que um banco de dados seja ativado para acesso somente leitura entre restaurações de log de transações e pode ser usado com situações de servidor de espera passiva ou situações de recuperação especiais nas quais é útil inspecionar o banco de dados entre restaurações de log. Após uma operação RESTORE WITH STANDBY, o arquivo de desfazer é excluído automaticamente pela próxima operação RESTORE. Se esse arquivo de espera for excluído manualmente antes da próxima operação RESTORE, todo o banco de dados deverá ser restaurado novamente. Enquanto o banco de dados estiver no estado STANDBY, você deve tratar esse arquivo de espera com o mesmo cuidado que qualquer outro arquivo de banco de dados. Ao contrário de outros arquivos de banco de dados, esse arquivo só é mantido aberto pelo Mecanismo de Banco de Dados durante operações de restauração ativas.

O standby_file_name especifica um arquivo de espera cuja localização é armazenada no log do banco de dados. Se um arquivo existente estiver usando o nome especificado, o arquivo será substituído; caso contrário, o Mecanismo de Banco de Dados criará o arquivo.

O requisito de tamanho de um determinado arquivo em espera depende do volume de ações de desfazer resultantes de transações não confirmadas durante a operação de restauração.

Qual é a passagem de desfazer referida no início?

Pelo que entendi, essas são as operações escritas no arquivo de log que não foram confirmadas. Se estiver correto, por que essas operações estão no arquivo de log se não foram confirmadas em primeiro lugar e por que a operação RESTORE WITH STANDBY precisa armazená-las em algum lugar para poder trazer o banco de dados para somente leitura acesso (em outras palavras, por que eles não podem simplesmente ser jogados fora)?

sql-server transaction-log
  • 2 2 respostas
  • 2073 Views

2 respostas

  • Voted
  1. Best Answer
    Remus Rusanu
    2012-02-17T11:00:24+08:002012-02-17T11:00:24+08:00

    por que essas operações estão no arquivo de log se não foram confirmadas em primeiro lugar

    Todas as operações, confirmadas ou não confirmadas, são gravadas no log. Um commit garante que todas as entradas de log sejam duráveis ​​(liberadas para o disco), mas nada impede que as entradas não confirmadas sejam liberadas antes disso (porque um bloco de log é preenchido ou porque outra transação é confirmada, forçando assim a liberação para cada transação). Um rollback deve analisar todas as entradas da transação e gerar ações de compensação (para cada inserção faça uma exclusão, para cada exclusão faça uma inserção, para cada atualização faça uma atualização que reverta os dados). Essas ações de compensação são, obviamente, registradas.

    Quando um banco de dados é recuperado, ele deve reverter qualquer transação que não esteja confirmada no log. Ele deve, portanto, analisar o log, descobrir as transações não confirmadas e, em seguida, gerar ações de compensação para todas as ações pertencentes a transações não confirmadas. A recuperação online gravará as ações de compensação no próprio log. A recuperação em espera gravará as ações de compensação em um fluxo alternativo, permitindo assim que mais logs sejam aplicados a partir de uma fonte 'mestre' posteriormente (é assim que o acesso somente leitura em espera de envio de logs funciona).

    Antes de fazer qualquer pergunta de esclarecimento, leia ARIES: Um método de recuperação de transação com suporte para bloqueio de granularidade fina e reversões parciais usando o log Write-Ahead .

    • 6
  2. Mark Storey-Smith
    2012-02-17T11:00:38+08:002012-02-17T11:00:38+08:00

    A passagem de desfazer é necessária para reverter quaisquer páginas sujas de transações em andamento que foram liberadas para o disco por uma operação de ponto de verificação.

    Um ponto de verificação grava TODAS as páginas sujas do cache do buffer no disco, independentemente de a transação que as gerou ter sido confirmada ou não. Os pontos de verificação e a parte ativa do log cobrem os detalhes sangrentos.

    Restaurar WITH STANDBY permite colocar o banco de dados em um estado somente leitura entre restaurações (como sua citação menciona). Para que o banco de dados esteja em um estado transacionalmente consistente, a passagem de desfazer deve ser executada. Para continuar outras restaurações (que é o objetivo do standby), as páginas que foram modificadas pelo UNDO precisarão ser reaplicadas, daí a necessidade de armazená-las no arquivo standby.

    • 5

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