A restauração de um banco de dados SQL a partir do backup reconstrói seus índices?

7

A restauração de um banco de dados SQL a partir do backup reconstrói suas tabelas e índices do zero? Ou mantém na mesma ordem física interna em que estava no momento do backup?

Estamos usando o SQL 2000 com o backup compactado do Lights Lights, se isso faz alguma diferença.

    
por BradC 29.06.2009 / 21:15

4 respostas

14

A resposta é não, seja qual for o software de backup usado.

Um backup é uma operação física, não uma operação lógica. Ele lê todas as extensões que contêm páginas alocadas (ou seja, mesmo que apenas uma única página de uma extensão de 8 páginas seja alocada, ela fará backup de toda a extensão de 64K) e faz isso em ordem física.

Uma restauração é uma operação física, não uma operação lógica. Ele estabelece as extensões em seus lugares de direito nos arquivos de dados.

Reconstruir um índice (ou algo parecido) é uma operação lógica, que deve ser registrada. O backup e a restauração manipulam os arquivos de dados diretamente, sem passar pelo buffer pool, que é um dos motivos pelos quais isso não pode ser feito. Outra razão pela qual isso não pode ser feito é que o backup e a restauração não compreendem o que está contido nos dados que estão sendo armazenados em backup.

A principal razão pela qual isso não pode ser feito, no entanto, é que a movimentação de páginas durante uma operação de restauração quebraria os ponteiros da árvore binária. Se a página A apontar para a página B, mas a página A for movida pelo processo de restauração, como a página B será atualizada para apontar para a página A? Se ele for atualizado imediatamente, ele poderá ser substituído pelo restante do processo de restauração. Se ele for adiado - atualizado, e se o processo de restauração restaurasse algum log de transações que removeu a página A ou a página B? Simplesmente não pode ser feito.

Linha de fundo - backup e restauração são operações físicas que nunca alteram os dados.

Espero que isso ajude!

PS Apesar de não abordar diretamente essa questão, confira o artigo que escrevi para a TechNet Magazine de julho, que explica como os vários backups funcionam internamente: Noções básicas sobre backups do SQL Server . A revista de setembro terá o próximo da série sobre a compreensão de restaurações.

    
por 29.06.2009 / 21:57
6

Um backup SQL nativo é apenas um despejo página por página dos arquivos de backup, portanto a resposta é "não". Um backup do Lightspeed da Quest provavelmente usa algum tipo de algoritmo de compressão de compressão, mas ainda não "reconstruirá" os arquivos ou índices de dados, o que levaria uma quantidade horrenda de tempo em um grande banco de dados.

    
por 29.06.2009 / 21:33
2

O backup é feito regularmente e com muita frequência (espero). Assim, os designers garantiram que o backup fosse o mais rápido possível. Qual é a E / S mais rápida? Sequencial. Você leu blocos de discos em ordem física exata, você tem o melhor desempenho.

Por que o banco de dados deve executar uma operação de E / S aleatória em todas as noites , destruindo as cabeças dos discos em todo o lugar? A diferença seria em torno de duas ordens de grandeza. Não há ganho possível nisso.

    
por 29.06.2009 / 21:55
0

Hmmm. BradC, você já trabalhou com o Firebird / Interbase antes - onde o principal utilitário de backup / restauração / API é mais parecido com o "Copy Database ..." do SSMS / EM? Se assim for, saiba que o MS SQL Server NÃO é assim.

Um SQLServer Backup é mais um dump de banco de dados que é restaurado "AS-IS" - então é mais como um atalho on-line confortável para uma operação de "desanexar-copiar-reconectar em outro local". O banco de dados restaurado é quase uma cópia exata do arquivo de banco de dados original (quase porque você pode alterar o posicionamento dos arquivos de banco de dados de um banco de dados restaurado) ...

    
por 18.02.2010 / 18:00