Estou confuso sobre a web reclassificando alguns scripts para calcular o tamanho do banco de dados e o espaço livre dentro do mesmo.
A maioria dos scripts na web usa sys.databases_files dmv para calcular o espaço livre como aqui e aqui
No entanto, se virmos um de sp_spaceused ou propriedades de banco de dados via GUI, a quantidade de espaço livre é diferente. Eu recebo o motivo de ser diff, pois possui filtro no tipo (0,2,4) que exclui o arquivo de log.
Mas não consigo entender qual está correto e por que o arquivo de log é excluído do sp_spaceused ou é que os scripts na web não estão corretos e mostram outra coisa?
Você teria que fornecer os scripts aos quais está se referindo para podermos aconselhá-lo sobre sua precisão, mas se eles forem baseados
sys.database_files
e os DMVs , há uma boa chance de você estar procurando algo correto para o propósito que eles são destinados.sp_spaceused
foi projetado especificamente para informar o tamanho dos dados dentro do banco de dados, seja o próprio banco de dados inteiro ou para uma tabela individual ou exibição indexada:O log de transações é armazenado em um arquivo diferente e é um tipo de objeto e conceito diferente do banco de dados e seus arquivos. Os casos de uso para medir o espaço consumido pelo banco de dados como um todo ou para uma tabela individual ou exibição indexada geralmente são mais úteis para fazer isso sem incluir os arquivos de log de transações que têm uma finalidade diferente.
O log de transações é um log de transações em execução (daí o nome) desde o último backup do arquivo de log, para auxiliar na recuperação do banco de dados para garantir que os princípios ACID sejam garantidos. Ele geralmente flutua em tamanho (internamente) à medida que mais transações são gravadas no arquivo de log, até que ocorra um backup do log de transações. Ele não tem um conceito específico de índices ou os dados como um todo para o momento atual, mas é o histórico de como os dados se tornaram o que são atualmente no banco de dados.
sp_spaceused
é benéfico ao fornecer informações no nível do banco de dados sobre o espaço totalreserved
do disco, quanto desse espaço é usado pelodata
banco de dados versus quão grande é o totalindex_size
e ounused
espaço restante que será usado pelos dados e índices à medida que crescem. Além disso, no nível de Tabela ou Visualização Indexada, ele ainda informa o número de linhas na tabela (com eficiência usando metadados) além dos pontos de dados mencionados anteriormente.Para entender a tendência geral de crescimento do banco de dados, pode-se visualizar ou registrar rotineiramente os resultados,
sp_spaceused
uma vez que a mudança no tamanho dos dados (e tamanho do índice) é o que será indicativo dessa métrica, não o tamanho do log de transações em um determinado momento, por si.