Estou tentando descobrir o tamanho do disco que várias linhas em várias tabelas ocupam.
Posso definir essas linhas por meio de uma consulta. Como posso descobrir o tamanho real do disco que corresponde ao conjunto de resultados no SQL Server?
A razão pela qual quero saber isso é que estou tentando analisar um sistema multilocatário. Estou tentando obter o tamanho total que cada inquilino ocupa no sistema. Portanto, preciso do tamanho de todas as linhas pertencentes a cada inquilino e do tamanho que cada inquilino está usando nas tabelas de índice, etc.
Todos os inquilinos compartilham o mesmo esquema, por isso não é fácil de fazer.
Uma maneira é olhar para a
sys.dm_db_index_physical_stats
saída. Omin_record_size_in_bytes
,max_record_size_in_bytes
eavg_record_size_in_bytes
lhe dará os tamanhos que você deseja.Se você quiser ver o tamanho de um determinado registro, outra maneira é encontrar o local da linha física, consulte SQL Server 2008: Nova função de localizador de linha física (não documentada) . Você pode então despejar a estrutura física da linha, consulte Anatomia de um registro .
Finalmente, você pode usar a documentação do produto para estimar o tamanho:
Se você quiser apenas saber o comprimento de dados de todas as colunas, poderá resumir o comprimento de dados () para cada coluna.
Se você deseja saber o espaço de armazenamento real usado para linhas específicas, não é possível dar uma resposta direta "faça assim". Cada pedaço de informação ocupa espaço. Talvez você tenha muitos índices que ocupam espaço ou possuem colunas de texto que não apenas armazenam os dados, mas também possuem um ponteiro no arquivo de paginação. Além disso existe o espaço "vazio" devido ao fator de preenchimento de suas tabelas.