Calculando tempo no Oracle PL/SQL

[ad#texto]

Para quem já trabalhou ou trabalha com rotinas em PL/SQL que movimentam grande volume de dados e que tendem a serem lentas sabe que é importante uma gerar uma métrica para medir os tempos de trechos do seu código a fim de se identificar pontos de lentidão.

Para quem pensou que um trace resolveria isso vale lembrar que o trace via de regra coleta dados de iteração no banco de dados Oracle, como por exemplo, query´s, iterações de memória e outros detalhes não são rastreados pelo trace, daí a necessidade da própria rotina PL/SQL possuir ferramentas próprias para medir o tempo.

Abaixo temos uma função que retorna a quantidade de segundos que decorreram de um tempo inicial até um tempo final.

FUNCTION difere_segundos(par_inicio IN TIMESTAMP,  -- Timestamp definido antes de executar o trecho que se quer marcar o tempo
                         par_fim IN TIMESTAMP)     -- Timestamp definido após executar o trecho que se quer marcar o tempo
         RETURN NUMBER IS
 
var_segundos   NUMBER(15,6) := 0;
 
BEGIN
 var_segundos := EXTRACT(DAY FROM (par_fim - par_inicio)) * 24 * 60 * 60 +
                 EXTRACT(HOUR FROM (par_fim - par_inicio)) * 60 * 60 +
                 EXTRACT(MINUTE FROM (par_fim - par_inicio)) * 60 +
                 EXTRACT(SECOND FROM (par_fim - par_inicio));
 
 RETURN(var_segundos);
END;

A função acima recebe o tempo inicial e o tempo final e retorna a diferença em segundo de ambas, para utilizar basta coletar o tempo (em timestamp) do ponto inicial e no ponto final executar a função e você terá a diferença em ambos e poderá então demarcar os pontos de maior demora e que devem receber maior atenção na sua rotina PL/SQL.

Tags:,
Petter Rafael
Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Junte-se a 322 outros assinantes

Busca

setembro 2020
DSTQQSS
 12345
6789101112
13141516171819
20212223242526
27282930 

Categorias