Compreendendo tamanhos de arquivo esparso em instantâneos do banco de dados

Um instantâneo do banco de dados usa um ou mais arquivos esparsos para armazenar dados. Durante a criação do instantâneo do banco de dados, arquivos esparsos são criados usando os nomes de arquivo na instrução CREATE DATABASE. Esses nomes de arquivo são armazenados em sys.master_files na coluna physical_name.

ObservaçãoObservação

Em sys.database_files (quer seja no banco de dados de origem ou em um instantâneo), a coluna physical_name sempre contém os nomes dos arquivos de banco de dados de origem.

Os arquivos esparsos são um recurso do sistema de arquivos NTFS. Inicialmente, um arquivo esparso não contém nenhum dado de usuário, e o espaço em disco para dados de usuário não foi alocado ao arquivo esparso. Para obter informações gerais sobre o uso de arquivos esparsos em instantâneos do banco de dados e como os instantâneos do banco de dados aumentam, consulte Como funcionam os instantâneos de banco de dados.

Quando criado, um arquivo esparso ocupa pouco espaço em disco. Conforme os dados são gravados no arquivo esparso, NTFS aloca gradualmente espaço em disco. Potencialmente, um arquivo esparso pode ficar muito grande. Se um instantâneo do banco de dados for executado sem espaço em disco suficiente, ficará marcado como suspeito, e precisará ser cancelado. O banco de dados de origem, porém, não é afetado; as suas ações prosseguem normalmente.

Arquivos esparsos crescem em incrementos de 64 kilobyte (KB); portanto, o tamanho de um arquivo esparso em disco sempre é um múltiplo de 64 KB. O último incremento de 64 KB contém de uma a oito páginas de 8 KB, dependendo de quantas páginas foram copiadas do banco de dados de origem. Isto significa que, em média, o tamanho de um arquivo esparso excede ligeiramente o espaço realmente ocupado por páginas.

  • Para descobrir o tamanho real de um arquivo esparso

    Para saber o número de bytes que cada arquivo esparso do instantâneo está usando atualmente em disco, você pode usar a coluna size_on_disk_bytes da exibição de gerenciamento dinâmico sys.dm_io_virtual_file_stats.

    Como alternativa, para ver o espaço em disco usado por um arquivo esparso, você pode clicar com o botão direito do mouse no arquivo no Microsoft Windows, clicar em Propriedades e verificar o valor Tamanho em disco.

  • Para descobrir o tamanho máximo de um arquivo esparso

    O tamanho máximo de crescimento de um arquivo esparso é o tamanho do arquivo de banco de dados de origem correspondente, no momento da criação do instantâneo. Para saber qual é este tamanho, você pode usar uma das alternativas seguintes:

    • Use os comandos dir do Windows.

    • Selecione o arquivo esparso, abra a caixa de diálogo Propriedades do arquivo no Windows, e consulte o valor Tamanho.

    • Selecione a coluna tamanho em sys.database_files no instantâneo do banco de dados ou em sys.master_files. A coluna tamanho em sys.database_files ou sys.master_files reflete o espaço máximo, em páginas SQL, que o instantâneo pode vir a usar; esse valor é equivalente ao campo Tamanho no Windows, a não ser que seja representado em termos do número de páginas SQL no arquivo; o tamanho em bytes é:

      ( number_of_pages * 8192)

Histórico de alterações

Conteúdo atualizado

fn_virtualfilestats substituído por sys.dm_io_virtual_file_stats na seção "Para descobrir o tamanho real de um arquivo esparso".