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