Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.
Otimização de bancos de dados monitorada com dbExpress
Como usar o SQLMonitor para compreender e otimizar comandos trocados entre clientes e servidores de bancos de dados
Nas listas de discussão que assino, muitas vezes aparecem perguntas como: “Qual é o banco de dados mais rápido?”, ou “Qual é a engine de dados que trará maior performance ao meu banco de dados?”. Estas perguntas, embora diferentes, trazem embutidas a pergunta “Como faço minha aplicação ficar mais rápida?”. A resposta a elas não é simples e, em geral, depende da aplicação.
Quando vejo testes de desempenho, dizendo que este ou aquele banco de dados é melhor, tenho a tendência de não dar muita atenção a eles – afinal, qual é a aplicação que faz 10 mil inserções consecutivas e, se houver na aplicação uma rotina que faça isso, quantas vezes por ano a rotina é utilizada?
O que queremos são respostas a perguntas do tipo: "Como fazer para que o relatório de vendas saia em menos tempo?" Para obter as respostas não há outra maneira a fazer a não ser testar.
Em geral, a resposta às duas primeiras perguntas é: “Qualquer banco, qualquer engine, desde que a aplicação seja otimizada”. Mudando algumas consultas, alterando a ordem de recuperação de informações, ou apenas criando índices, você pode aumentar a performance mais de vinte vezes. Certamente, um aumento de performance deste porte não seria obtido apenas com a mudança do banco de dados ou da engine de acesso.
SqlMonitor e dbExpress
Com a introdução do dbExpress, a nova engine de acesso a dados disponível no Kylix e no Delphi, os projetistas da Borland introduziram um novo componente, o SQLMonitor, que permite monitorar as mensagens enviadas entre a aplicação e o banco de dados. Monitorando essa comunicação, você pode verificar o que está acontecendo e otimizar suas consultas para obter maior performance.
Figura 1. O componente SQLMonitor (realçado) intercepta mensagens entre a aplicação e o banco de dados
O uso do SQLMonitor é bastante simples: basta colocar um SQLConnection e um SQLMonitor no Form, configurando o SQLConnection para uma conexão válida, e ligar o SQLMonitor ao SQLConnection, configurando a propriedade SQLConnection.
Enquanto a propriedade Active do SQLMonitor estiver ligada, todas as mensagens serão interceptadas e adicionadas à sua propriedade TraceList, uma StringList. Você pode salvar as mensagens definindo um nome válido para a propriedade FileName e configurando a propriedade AutoSave para True. Desta maneira, as mensagens são gravadas no arquivo especificado.
Interceptação personalizada
Você pode ainda personalizar a maneira que as mensagens são interceptadas, usando os eventos OnTrace e OnLogTrace. OnTrace é ativado antes que a mensagem seja adicionada a TraceList e OnLogTrace é ativado após a adição da mensagem, mas antes da gravação no log. O evento OnTrace é do tipo TTraceEvent, definido como:
...