/Banco de dados

voltar
/Banco de dados

O Profiler

PorMauro Pichiliani em

Galera,
na coluna desta semana vou falar um pouco sobre uma ferramenta
muito importante para o desenvolvimento de aplicações com
o SQL Server: o Profiler.

Primeiramente,
o Profiler é uma ferramenta que vem junto com o SQL Server
e é utilizada para capturar a informações que estão chegando
no Banco de Dados. Bom esta ferramenta pode ser muito útil
para detectar problemas de performance, debugar a aplicação
e mesmo entender como e quando as aplicações estão interagindo
com o SQL Server, sem precisar abrir o código fonte da aplicação.
Eu particularmente acho que o Profiler é uma ferramenta extremamente
útil tanto para o desenvolvedor como para o DBA.

Para
iniciar o Profiler, que se encontra no grupo de programas
Microsoft SQL Server, devemos criar um trace. Mas o que é
um trace?

Um
trace é uma definição de como vamos capturar os dados. Por
exemplo: podemos criar um trace que só capture os SELECT ’s,
independente da qual aplicação que está enviando os dados.
Ou podemos criar um trace que nos mostre somente as chamadas
de Stored Procedures de um determinado banco de dados.

Existem
alguns templates de trace, que são alguns traces pré-definidos
já com campos que mostram as informações sobre a conexão.
Vamos fazer um exemplo passo-a-passo:

1.   Inicie
o Serviço do SQL Server e abra o Profiler

2.  
Escolha File, New Trace. Neste ponto devemos fornecer
qual é o Servidor e a autenticação para podermos iniciar o
trace. Atenção: somente usuários com permissão de system administrator
podem iniciar um trace

3.   
um nome para um trace na aba General. Perceba que podemos
armazenar um trace em um arquivo ou mesmo eu uma tabela. Eu
recomendo o último caso, pois pode-se examinar com mais calma
os resultados posteriormente, fazendo diversos SELECT ’s nas
instruções que o trace capturar.

4.   Na
aba Data Columns podemos escolher quais campos serão mostrados.
Aqui temos muitas informações que podem ser retornadas, mas
a instrução SQL propriamente dita que o usuário enviou está
no campo chamado TextData.

5.   Se
quiser, especifique um filtro na aba Filters para filtrar
(através de um LIKE , por exemplo) algum campo escolhido no
passo 4.

Se
tudo der certo, uma janela mais ou menos assim será mostrada:

Perceba
que podemos iniciar, pausar e parar o trace através dos botões
na barra de ferramentas do Profiler. Alterações neste trace
só podem ser feitas como o mesmo parado ou pausado.

Agora
abra um Query Analyzer, conecte-se no servidor e envie uma
instrução, como um SELECT. Ela automaticamente será mostrada
na tela do Trace, como no exemplo acima, em que eu enviei
a instrução “SELECT * FROM orders“ através do Query Analyzer
para o servidor e o trace capturou a instrução enviada.

Agora
algumas dicas quando ao uso do Profiler:

a)
Existe uma diferença entre o Profiler do SQL Server 7.0 e
do SQL Server 2000, de modo que o Profiler do SQL Server 7.0
não consegue capturar as instrução do SQL Server 2000. Procure
utilizar sempre a mesma versão de Profiler com a mesma versão
do servidor.

b)
Utilize somente o Profiler para capturar os dados e feche-o,
pois se deixado um trace rodando indefinidamente, pode-se
ter problemas de performance.

c)
Faça filtros nos campos que devem ser mostrados. Por exemplo:
queremos ver qual instrução está deixando a aplicação lenta.
Podemos fazer um trace com um filtro no campo Duration de
modo que o trace só retornará instruções que demorem mais
de 10 minutos, por exemplo.

e)
Alguns campos que e suas descrições:

TextData:
A instrução que foi enviada. Um SELECT, por exemplo.

Duration:
Tempo que esta instrução levou para ser executada. Em milisegundos.

LoginName:
Nome do usuário desta conexão.

DatabaseName:
Nome do banco de dados desta conexão.

ApplicationName:
Nome da aplicação. No exemplo foi utilizado o Query Analyser.

Para
uma descrição de mais campos, consulte o Help do Profiler
ou o Books on-Line

f)
No trace também são mostradas instruções de conexão que são
enviadas automaticamente pelo mecanismo de acesso a dados
(JDBC, ODBC, ADO, BDE, dbExpress, etc). Por isso não estranhe
se encontrar no trace informações que a sua aplicação envia
automaticamente.

g)
Mais de um trace pode estar rodando ao mesmo tempo, assim
como você pode programar o término do trace.

h)
Pode-se debugar uma Stored Procedure, ou seja, ver passo a
passo qual comando está sendo executado dentro da Stored Procedure.
Isto ajuda MUITO no desenvolvimento, já que o SQL Server não
possui um debug próprio. Para debugar uma Stored Procedure,
utilize o template de trace chamado SQLProfilerTSQL_SPs e
cada instrução da Stored Procedure será mostrada linha a linha.

Bom
Pessoal, isto é funcionamento básico sobre esta maravilhosa
ferramenta que é o Profiler. Eu recomendo a utilização desta
ferramenta para solucionar vários problemas, principalmente
de performance.

Um
abraço para todos e até a semana que vem.

Deixe um comentário! 2

2 comentários

Comentários

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Comentando como Anônimo

  1. Olá Mauro. sou mais um fã do SQL e estou começando a desenvolver utilizando esta ferramenta, e gostaria de saber como posso avisar a determinado usuario (os) da minha intranet que estão excedendo a capacidade limite do servidor sql ( através de consultas por exemplo ) utilizando os dados do profiler?
    Grato,

    1. Boa tarde, ótimo post.
      Vê se você consegue me ajudar por favor, como diagnosticar gargalos de desempenho e consultas lentas, e como trabalhar com ele junto com o Perfmon e o Database Engine Tuning Advisor.?

leia mais
Este projeto é mantido pelas empresas:
Este projeto é apoiado pelas empresas: