Páginas

sexta-feira, 9 de abril de 2010

Espaço alocado SQL Server

Olá Pessoal,

Como muitos sabem, bancos de dados são como balões de gás: enchem até explodir : )
Pois bem, existem diversas formas de tratar isso a nível de aplicação. Porém, essa semana encontrei uma forma mais simples de explicar isso.
1º) Tabela com dados ocupa espaço: sim, sem dúvida. Quanto mais dados, mais espaço, óbvio.
2º) Tabela sem dados ocupa espaço: sim. Supomos que existam 15000 registros e você os exclua, o espaço alocado permanecerá, ou seja, o espaço não é liberado.

3º) Apenas os dados da tabela ocupam espaço: errado. Os demais objetos criados no banco também devem ser alocados. Índices representam muitas vezes a mesma quantidade de dados alocados.


4º) O tamanho do banco é o tamanho dos arquivos de dados e logs: teoricamente sim, porém podem existir bancos com muitos dados removidos e espaço não alocado. Sendo assim, sempre é bom consultar o real tamanho do banco.



Sendo assim recomendo os seguintes comandos:


SP_SPACEUSED- exibe a alocação do banco de dados

DBCC UPDATEUSAGE ('@nomedobanco') - atualiza os espaçoes não alocados no banco, útil após muita remoção de dados;
DBCC SHRINKDATABASE ('@nomedobanco') - reorganiza os dados nos arquivos de log e dados


Bom, caso eu lembre de mais algum comando, reescrevo a notícia. Lembrando que não tem contraindicações na execução destes arquivos, apenas o desempenho será afetado durante os comandos DBCC.

Todos esses comandos já existem no site do MSDN bem documetados.