Eu tenho 2 procedimentos armazenados, onde o segundo procedimento armazenado é uma melhoria do primeiro.
Estou tentando medir exatamente o quanto isso é uma melhoria.
1 / Medição clock time
não parece ser uma opção, pois recebo diferentes tempos de execução. Pior ainda, às vezes (raramente, mas acontece) o tempo de execução do segundo procedimento armazenado é maior que o tempo de execução do primeiro procedimento (acho que devido à carga de trabalho do servidor naquele momento).
2 / Include client statistics
também fornece resultados diferentes.
3 / DBCC DROPCLEANBUFFERS
, DBCC FREEPROCCACHE
são boas, mas a mesma história ...
4 / SET STATISTICS IO ON
poderia ser uma opção, mas como eu poderia obter uma pontuação geral, pois tenho muitas tabelas envolvidas nos meus procedimentos armazenados?
5 / Include actual execution plan
poderia ser uma opção também. Recebo um estimated subtreecost
de 0,3253 para o primeiro procedimento armazenado e 0,3079 para o segundo. Posso dizer que o segundo procedimento armazenado é 6% mais rápido (= 0,3253 / 0,3079)?
6 / Usando o campo "Lê" no SQL Server Profiler?
Então, como posso dizer que o segundo procedimento armazenado é x% mais rápido que o primeiro, independentemente das condições de execução (a carga de trabalho do servidor, o servidor em que esses procedimentos armazenados são executados etc.)?
Se não for possível, como posso provar que o segundo procedimento armazenado tem um tempo de execução melhor que o primeiro procedimento armazenado?
fonte
Quando você coletar os tempos de execução ao longo de alguns dias para seus dois procedimentos armazenados, vou recomendar que você use esta página inicial
http://www.evanmiller.org/ab-testing/t-test.html
para ver se eles são realmente diferentes.
A diferença de 6% não soa tanto quando se trata de melhorias nos procedimentos armazenados. Cheguei a esperar duas ordens de magnitude do meu colega e finjo estar decepcionado se ele atingir apenas uma ordem de magnitude ...
Ele não precisa usar a página inicial do EvanMiller para provar que sua solução funciona mais rapidamente.
Eu também instalaria o SQLSentrys (edit :) Plan Explorer em http://www.sqlsentry.com/, pois essa é uma ferramenta muito melhorada para comparar planos de execução.
fonte