quarta-feira, 19 de novembro de 2008

Teste de Perfomance em Inserts via Aplicação x Stored Procedures

Olá!

Gostaria de compartilhar com os amigos um pequeno, porém significante teste feito com inserções de registros.

Meu objetivo é provar por A+B que o insert via Stored Procedure é mais rápido que o insert via aplicação.

Foram utilizados nestes testes os componentes da paleta dbGo/ADO do Delphi 7.

O banco de dados utilizado foi SQL 2005 Express SP3, rodando num laptop.

Abaixo, segue os links para você baixar a aplicação teste, bem como o script utilizado para criação de um database, uma tabela, e uma stored procedure, a serem utilizadas no seu teste.

Fiz um laço no Delphi, inserindo 10.000 registros na tabela de testes.

No primeiro teste, utilizando componente TADOQuery para fazer a inserção, levou 28 segundos.

No segundo teste, utilizando componente TADOStoredProc, levou 20 segundos.

Uma redução aí na faixa dos 30%.

Baixe a aplicação, faça o teste, e chegue as suas próprias conclusões.

Aplicação
Script

Por isso, recomendo veementemente o uso de Stored Procedures para Inserir, Excluir, Consultar, enfim, para fazer qualquer tipo de processamento que requer algum requinte de performance.

Além disto, Stored Procedures possuem as seguintes vantagens em relação a T-SQL via aplicação:

- elas permitem programação modular, ou seja, a lógica de negócio fica centralizada em um ponto, ao invés de vários pontos nas aplicações;

- elas permitem execuções mais rápidas, porque o "engine" do SQL Server otimiza sua execução e guarda no seu "cache" para futura utilização;

- elas reduzem tráfego de rede, justamente porque sua execução fica a nível de servidor, e somente o retorno é devolvido à aplicação "client";

- elas podem ser usadas como mecanismo de segurança;

- elas evitam "lock" de tabela, uma vez que o "engine" enfileira todas as chamadas que são feitas às SPs e controla sua execução.

Abraços e até a próxima.

Pericles.

Um comentário:

Rodrigo Miranda disse...

Péricles,

Aprendi isso no tapa, quando desenvolvia em ASP, após isso todas as minhas operações de insert, update e delete só faço se for por SP.

Fora que elas protegem de SQL Inject.