› Fóruns › Banco de dados Oracle › Ajuda com analise de trace › Ajuda com analise de trace
Everson,
Eu respondi correndo e agora eu vi que eu realmente havia respondido errado, portanto, para compensar vou dar uma explicação adicional.
Toda instrução SQL, pode ser executada internamente no BD em até 3 passos (parse, execute e fetch), mas apenas 2 são obrigatórios (parse e execute) para toda instrução SQL.
O parse é uma fase da execução em que o Otimizador do Oracle analisa basicamente a sintaxe e a semântica da instrução SQL e monta um plano de execução para ela.
O execute é a fase em que o Otimizador realmente executa a instrução SQL, conforme “plano de execução” montado no estágio anterior.
O fetch é a fase em que o Otimizador retorna os dados para a sessão de usuário e isso só acontece em instruções SELECT, por isso essa fase não é executada, por exemplo, em instruções INSERT, UPDATE e DELETE.
Quando vc executa uma instrução SQL, dependendo do modo que ela foi executada, ela pode ter 1 ou N parses. O ideal e mais performático é que aconteça o menor número possível de parses, ou seja, apenas 1. Se vc por exemplo, executar uma instrução SELECT contendo uma variável bind, 15 vezes, ela poderá ter apenas 1 parse, 15 executes e 15 fetchs. Normalmente a qtde de executes e fetchs são iguais em instruções SQL e é isso que sempre vejo ocorrer. Quando vc vê no trace um bloco em que a qtde de fechs e executes são diferentes, é pq vc está vendo uma seção de agrupamento de valores de várias instruções SQL, ok?
Segue abaixo um exemplo de trace em que eu executei 5 vezes a instrução “SELECT * FROM HR.EMPLOYEES WHERE ROWNUM < 8":
Interpretando o trace acima e respondendo as suas questões:
1- se eu quero saber quantas vezes a instrução SQL foi executada é só verificar o valor da coluna count na linha Execute.
2- se eu quiser saber o tempo total de execução (considerando fetch + execute + parse), é só dividir o valor da coluna “elapsed” na linha total pelo valor da coluna “count “na linha execute.
Agora respondi sua questão? Na próxima, para facilitar, acrescente também a instrução SQL para ficar mais fácil de interpretar.
[]s
Fábio Prado
http://www.fabioprado.net
