Monitoramento no SQL Server: utilizando a procedure sp_spaceused

O monitoramento é uma atividade primordial dentro da área de banco de dados. A importância deste tipo de atividade aumenta consideravelmente em grandes organizações, sobretudo em cenários que envolvam o processamento de extensos volumes de informações. Independente desta ser uma atribuição de DBAs ou, mesmo, de profissionais de desenvolvimento, soluções como o SQL Server dispõem de recursos que procuram simplificar o esforço na coleta dos dados necessários.


Dentre os aspectos normalmente analisados para fins de monitoração estão:

→  O número de linhas/registros de uma tabela;

→  O espaço em disco reservado para uma tabela ou banco de dados;

→  O tamanho em disco de uma tabela ou banco de dados.

No caso específico do SQL Server, tais dados podem ser obtidos a partir de uma ferramenta como o SQL Server Management Studio (como indicado nas Imagens 1 e 2).

Imagem 1. Propriedades de um banco de dados no SQL Server Management Studio

Imagem 1. Propriedades de um banco de dados no SQL Server Management Studio

Imagem 2. Propriedades de uma tabela no SQL Server Management Studio

Imagem 2. Propriedades de uma tabela no SQL Server Management Studio

OBSERVAÇÃO: os exemplos apresentados ao longo deste artigo foram executados a partir da versão Express do SQL Server 2014.

Além do monitoramento por meio de interfaces gráficas, existem ainda situações nas quais se fará necessária a gravação de estatísticas em uma tabela para uso posterior. Relatórios podem ser elaborados de forma a apresentar a evolução no uso de recursos de storage ao longo do tempo, servindo inclusive como importantes fontes para tomadas de decisão do ponto de vista de infraestrutura.

Uma outra alternativa oferecida pelo SQL Server é a stored procedure de sistema sp_spaceused, capaz de retornar as mesmas informações que estão disponíveis na interface do Management Studio. O objetivo deste artigo é focar justamente na utilização desta rotina, através de dois exemplos simples detalhados na próxima seção.

Utilizando a procedure sp_spaceused

Na Listagem 1 está o primeiro exemplo de utilização da stored procedure sp_spaceused.

Listagem 1: Obtendo informações sobre uma base de dados

USE [AdventureWorks]
GO

EXEC sp_spaceused

Ao acionar esta rotina sem nenhum parâmetro de entrada serão retornados 2 conjuntos de informações relativas à base que se está acessando (no caso, o banco de dados AdventureWorks):

→  O nome, o tamanho e a quantidade de espaço não-alocada do banco de dados;

→  O espaço reservado, o espaço usado pelos dados, o espaço consumido pelos índices, assim como a quantidade de espaço que não se encontra em uso.

Na Imagem 3 é possível observar o resultado desta primeira execução de sp_spaceused.

Imagem 3. Utilizando a procedure sp_spaceused com um banco de dados

Imagem 3. Utilizando a procedure sp_spaceused com um banco de dados

Já o código apresentado na Listagem 2 será empregado na obtenção de estatísticas da tabela Sales.SalesOrderDetail.

Listagem 2: Obtendo informações sobre uma tabela

USE [AdventureWorks]
GO

EXEC sp_spaceused '[Sales].[SalesOrderDetail]'

A Imagem 4 traz o resultado do processamento deste bloco de código. Dentre as informações retornadas estão o nome da tabela, o número de registros armazenados pela mesma, além da quantidade de espaço reservado, o volume em uso pelos dados, o espaço consumido pelos índices e a quantidade que não está sendo utilizada.

Imagem 4. Utilizando a procedure sp_spaceused com um banco de dados

Imagem 4. Utilizando a procedure sp_spaceused com um banco de dados

Conclusão

A stored procedure sp_spaceused pode ser muito útil na implementação de mecanismos de monitoramento sofisticados. Isto pode envolver tanto a gravação de informações em log para uso posterior, quanto a implementação de painéis para acompanhamento em tempo real do que acontece em uma base de dados (neste último caso, algo que acontece normalmente a partir de uma aplicação Web).

Espero que este conteúdo possa ter sido útil.

Até uma próxima oportunidade!

Renato Groffe – Consultor em TI, MTAC
https://www.facebook.com/RenatoGroffeSW

Referências

sp_spaceused (Transact-SQL)
https://msdn.microsoft.com/pt-br/library/ms188776%28v=sql.120%29.aspx

Adventure Works 2014 Sample Databases
https://msftdbprodsamples.codeplex.com/releases/view/125550

Comentarios

comentarios