segunda-feira, 3 de agosto de 2015

Quantas vezes uma Function foi executada?

Se alguém te perguntar quantas vezes uma função foi executada você vai saber dizer? e ainda qual é o tempo de execução?
Bom eu já passei por essa situação e não soube responder de imediato mas eu sabia que poderia confiar no Elefante, então eu fui estudar o manual e encontrei as respostas.

O PostgreSQL recolhe esse tipo informação mais com uma condição precisa estar ativado um parâmetro no postgresql.conf o parâmetro é o "track_functions", esse parâmetro tem três opções por padrão ele vem como "none" o que quer dizer que esta desativado, tem a opção "pl" que vai logar somente funções do tipo procedural e ainda tem a opção "all" que vai logar o que a opção "pl" loga e também funções em linguagem C. Bom seja qual for a opção que você fez você deve dar um reload no banco para ativar suas configurações, então vamos colocar a mão na massa.

Verificando a situação configuração.

# psql -U postgres -p 5432

postgres=# show track_functions;
 track_functions
-----------------
 none
(1 row)


Esta desativado, então vou setar para all diretamente no postgresql.conf ficando assim:

track_functions = all       # none, pl, all

Reload no banco para ele assumir a nova configuração:

# service postgresql reload

Vamos ver como ficou o parâmetro agora

# psql -U postgres -p 5432

postgres=# show track_functions;
 track_functions
-----------------
 all
(1 row)


Pronto parâmetro ativo e com a opção "all", como vou obter as informações que estão sendo coletado pelo PostgreSQL?

O select é bem simples:

# psql -U postgres -p 5432


database1=# select * from pg_stat_user_functions;
funcid|schemaname|funcname|calls|total_time|self_time 
------+----------+--------+-----+----------+-----------
13972 | public   | vali   |   8 |    1.183 |   1.183



Essa dica ajuda bastante!

Fonte postgresql.org

Nenhum comentário:

Postar um comentário