Embora a estimativa de crescimento de uma base de dados seja um item importante na administração de banco de dados, uma das grandes dificuldades de muitos DBAs está em estimar o tamanho de sua base de dados ao longo do tempo. Estimar o tamanho de uma base de dados pode ajudar você a determinar as configurações de hardware necessárias para:
1) Alcançar a performance desejada por sua aplicação,
2) Garantir que sempre existirá espaço em disco suficiente para alocar sua base de dados.
Para estimar o tamanho de uma base de dados, faça uma estimativa de cada tabela individualmente e então some os valores obtidos.
O Books Online do SQL Server 2000 possui um tópico (Estimating the Size of a Table) onde descreve os cálculos necessários para se estimar o espaço a ser ocupado pelos dados em uma tabela. Porém devemos lembrar que o tamanho total de uma tabela dependerá se ela possuirá ou não índeces e se sim, que tipo de índices. Os passos para a realização destes cálculos também podem ser encontrados no Books Online nos tópicos:
– Estimating the Size of a Table with a Clustered Index
– Estimating the Size of a Table Without a Clustered Index
Como poderemos observar, os cálculos conforme demonstrado pelo Books Online são complexos e sua aplicação fará com que o DBA gaste um bom tempo na realização dos cálculos. Pensando em facilitar este processo, a dica desta semana trás uma procedure a qual poderá ser utilizada para calcular o espaço estimado para o armazenamento dos
dados da tabela.
Para facilitar sua utilização, a procedure é criada com o prefixo sp_ e deverá estar no banco de dados MASTER. Isto fará com que ela possa ser chamada a partir de qualquer banco de dados. Para utilizar a procedure você deverá informar no mínimo dois parâmetros:
– @Tabela: Este é o nome da tabela sobre a qual o cálculo será realizado,
– @Num_Rows: Este é a quantidade de registros estimado para a tabela
Um terceiro parâmetro @ClusterIndex é opcional e informa se a tabela terá indice cluster ou não. Este parâmetro é utilizado apenas para calcular o número de linhas livres que será reservado por página de dados.
Exemplo de utilização da procedure:
Uma vez criada a procedure, execute-a passando no mínimo o nome da tabela e a quantidade de registros estimados. Neste exemplo, criamos uma tabela na base Pubs e chamamos a procedure para calcular o espaço usado pelos dados quando a tabela tiver 10000 (dez mil) registros.
USE PUBS
GO
CREATE TABLE tbsize (col1 int, col2 char(500), col3 varchar(500))
GO
sp_tablespace tbsize,10000
Resultado:
==== Espaço estimado para armazenar os dados da tabela: tbsize ====
Reg_Por_Pagina Num_Paginas Num_Extend Espaço_Estimado_KB
——————– —————— —————– ————————–
7 1428 178 11424
Reg_Por_Pagina: Número de registros que teremos por página de dados,
Num_Paginas: Numero de paginas,
Num_Extend : Número de extensões,
Espaço_Estimado_KB: Espaço estimado para o armazenamento dos 10000 registros.
É bom lembrar que esta procedure calcula apenas o espaço necessário para o armazenamento dos dados e não o espaço total da tabela. Para isso, seria necessário calcular também o espaço necessários para o armazenamento dos índices cluster e ounão cluster.
Para fazer o downloa da procedure, clique aqui.
Caso sua necessidade seja realizar o cálculo completo, veja o artigo http://www.mcdbabrasil.com.br/modules.php?name=News&file=article&sid=54

