Diferença entre atualização diferida e atualização imediata

Anonim

Atualização Diferida vs Atualização Imediata

Atualização Diferida e Atualização Imediata são duas técnicas usadas para manter arquivos de log de transações de Sistemas de Gerenciamento de Banco de Dados (SGBD). O log de transações (também conhecido como o log de diário ou o log de retomada) é um arquivo físico que armazena o ID da transação, o carimbo de data / hora da transação, o valor antigo e os novos valores dos dados. Isso permite que o SGBD acompanhe os dados antes e depois de cada transação. Quando as transações são cometidas e o banco de dados é retornado para um estado consistente, o log pode ser truncado para remover as transações comprometidas.

Atualização diferida

Atualização diferida também chamada NO-UNDO / REDO é uma técnica usada para recuperar / suportar falhas de transação que ocorrem devido a falhas de sistema operacional, energia, memória ou máquina. Quando uma transação é executada, as atualizações ou alterações feitas no banco de dados pela transação não são feitas imediatamente. Eles são gravados no arquivo de log. As alterações de dados gravadas no arquivo de log são aplicadas no banco de dados em commit. Esse processo é chamado de "Re-fazer". Na reversão, qualquer alteração nos dados gravados no arquivo de log é descartada; portanto, nenhuma alteração será aplicada ao banco de dados. Se uma transação falhar e não for cometida devido a nenhum dos motivos mencionados acima, os registros no arquivo de log serão descartados e a transação será reiniciada. Se as alterações em uma transação forem cometidas antes de falhar, depois do reinício do sistema, as alterações registradas no arquivo de log serão aplicadas ao banco de dados.

Atualização imediata

Atualização imediata também chamada UNDO / REDO, também é outra técnica usada para recuperar / suportar falhas de transação que ocorrem devido a falhas de sistema operacional, energia, memória ou máquina. Quando uma transação é executada, qualquer uma das atualizações ou alterações feitas pela transação são escritas diretamente no banco de dados. Tanto os valores originais quanto os novos valores também são registrados no arquivo de log antes que as alterações sejam feitas no banco de dados. Em confirmar todas as alterações feitas no banco de dados são feitas de forma permanente e os registros no arquivo de log são descartados. Na rolagem, os valores antigos são restaurados no banco de dados usando os valores antigos armazenados no arquivo de log. Todas as mudanças feitas pelas transações para o banco de dados são descartadas e este processo é chamado de "Desativar". Quando o sistema reinicia após uma falha, todas as alterações no banco de dados são permanentes para transações comprometidas. Para transações não confirmadas, os valores originais são restaurados usando os valores no arquivo de log.

Qual a diferença entre a atualização diferida e a atualização imediata

Embora a atualização diferida e a atualização imediata sejam dois métodos para recuperar após uma falha no sistema, o processo que cada método usa é diferente.Em um método de atualização diferente, todas as alterações feitas nos dados por uma transação são registradas primeiro em um arquivo de log e aplicadas no banco de dados no commit. No método de atualização imediata, as alterações feitas por uma transação são diretamente aplicadas ao banco de dados e valores antigos e novos valores são registrados no arquivo de log. Esses registros são usados ​​para restaurar valores antigos na reversão. Em um método de atualização diferente, os registros no arquivo de log são descartados em retrocesso e nunca são aplicados ao banco de dados. Uma desvantagem do método de atualização diferida é o aumento do tempo de recuperação em caso de falha do sistema. Por outro lado, as operações frequentes de E / S enquanto a transação está ativa são uma desvantagem no método de atualização imediata.