quarta-feira, 16 de janeiro de 2008

Estrutura Interna do arquivo de Log - Parte 2

Parte 2 – Fases do “Restart Recovery”

No post anterior falei sobre a estrutura interna de um arquivo de Log (.LDF), além de uma pequena introdução ao “Recovery”. Neste post vou escrever sobre as fases internas do processo de “Restart Recovery”.

O processo de “Restart Recovery” possui 3 fases e analisa os registros no LOG a partir do MinLSN até o último registro, podendo até retornar e analizar registros anteriores ao LSN.

FASE 1: "Analysis"
Analisa os registros iniciando no MinLSN até o último registro. Nesta fase o SQL Server monta uma tabela com o endereço das páginas de dados alteradas (DPT - "Dirty Page Table") a partir dos registros no LOG. Além da DPT ele també cria uma tabela de transações ativas, aquelas que não possuem registros como COMMIT ou ROOLBACK.

FASE 2: "Redo"
Esta fase lê os registros no LOG a partir do LSN da mais antiga transação abreta encontrada na tabela gerada na fase anterior. O MinLSN no DPT representa o ponto inicial para o SQL Server implementar a atualização no arquivo de DADOS, contudo ele tem que retornar ao LSN da transação em aberto mais antiga para reter locks necessários para o processo. Este retorno a transação mais antiga para reter lock server para disponibilizar uma funcionalidade nova no SQL Server 2005 chamado de "Fast Recovery", que será esplicado mais afrente.

FASE 3: "Undo"
Já esta fase utiliza a lista de transações não finalizadas gerada na Fase 1, para implementar o ROOLBACK individual de cada transação, seguindo o identificador de transação de cada entrada no LOG (link entre os registros que possuem a mesma transação).


"Fast Recovery"
Durante a Fase 2 ("Redo") do "Restart Recovery" o SQL Server retornou até o LSN da última transação em aberto para reter locks nos objetos. Iste abordagem possibilita liberar o banco de dados para uso no início da Fase 3 ("Undo"), pois os objetos que estarão envolvidos no ROOLBACK ficarão bloqueados. Esta funcionalidade só está presente nas edições Enterprise e Developer.

No próximo post vou escrever sobre os Logs Virtuais, até lá!
Landry.

Nenhum comentário: