[DICA] Como calcular tamanho do banco de dados

Publicado: 10/10/2012 em Backup, Bases de Dados, Cotidiano, Hardware, Internet, Truques & Dicas, Tutoriais / Info
Tags:, ,

Dica

 

Essa foi mais uma das conversas geradas com o amigo André Aguirre , e surgiu esse post:

Um problema comum dos administradores de bancos de dados é poderem precisar o quanto de espaço um determinado banco de dados irá gastar. O calculo de tamanho, conforme exposto no books on-line, é complexo e um DBA gastaria tempo de mais realizando esse calculo.
Para resolver o problema temos abaixo uma procedure (sp_calctamanho) que, recebendo o nome da tabela e o número de futuros registros calcula o tamanho que a tabela terá. Desta forma fica bem mais simples realizar o cálculo.

Para utilizar a procedure basta cria-la no MASTER e chama-la a partir de qualquer banco, como por exemplo :

sp_calctamanho customers,5000.00

Neste exemplo ela está sendo chamada a partir do northwind e irá calcular qual será o tamanho da tabela customers quando tiver 5000 registros. Observer o .00 após o 5000, é obrigatório para que não haja erro de cálculo.

Eis a procedure :

create procedure sp_calctamanho @tab varchar(30),@numreg numeric(18,2) as
/* Copyright by Bufalo Informatica
http://www.bufaloinfo.com.br
Livre reprodução, desde que essas linhas não sejam eliminadas */
declare @tottam int
declare @colfix int
declare @colvar int
declare @tamreg int
declare @regpag numeric(18,2)
declare @numpag int
declare @numext int
select @tottam=sum(length) from syscolumns a,sysobjects b where a.id=b.id
and b.name=@tab
select @colfix=count(*) from syscolumns a,sysobjects b,systypes c where
a.id=b.id and c.xusertype=a.xtype and b.name=@tab and variable<>1
select @colvar=count(*) from syscolumns a,sysobjects b,systypes c where
a.id=b.id and c.xusertype=a.xtype and b.name=@tab and variable=1
select @tamreg=@tottam + (@colvar*2) + convert(int,2+((@colfix+7)/8)) + 2 +
4
select @regpag=floor(8096.00/(@tamreg+2))
select @numpag=ceiling(@numreg/@regpag)
select @numext=ceiling(@numpag/8.00)
select ‘tamanho do registro’=@tamreg,’Registros por página’=@regpag,
‘Número de páginas’=@numpag,’Número de extensões’=@numext,’Espaço
total’=@numext*64

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s