Em 10 de janeiro de 2017 12:02, Cleiton Luiz Domazak
<[email protected]> escreveu:
>
>
> 2017-01-10 11:35 GMT-02:00 Neto pr <[email protected]>:
>>
>> Ola pessoal
>>
>> No meu trabalho de Pós, preciso armazenar os planos de execucoes das
>> consultas submetidas (explain consulta).
>> Nao gostaria de armazenar o plano de execucao em texto puro, pois
>> somente alguns dados que me interessam, como por exemplo o custo total
>> da consulta.
>>
>> Alguem tem alguma sugestao para armazenar o plano de execucao no banco
>> de dados, separado em campos como: textosql, custo total, tempo,
>> etc...
>
>
> Dê uma olhada no [1] auto_explain se não lhe atende
Cleiton, acho que ira servir sim.
Como preciso dos dados do Explain Analyse disponivel para uma
aplicacao JAVA, a principio pensei em armazenar o resultado do
Auto-Explain em um
arquivo XML, e apos a aplicacao ira ler esse arquivo. Como o XML cria
tags para cada item, fica facil extrair por exemplo o custo total
(tag <Total-Cost>) e outras info...
Antes disso pensei no comando COPY[1] abaixo, mas acho que nao serve
para comando Explain Analyse.
COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
Enfim, como nao encontrei outra opcao, vou tentar exportar XML e ler o
arquivo, para apos armazenar no Banco de dados.
------------------------------ saida do log para query: select
pg_sleep((select 1)); -----------------------------------
LOG: duration: 1007.321 ms plan:
<explain xmlns="http://www.postgresql.org/2009/explain">
<Query-Text>select pg_sleep((select 1));</Query-Text>
<Plan>
<Node-Type>Result</Node-Type>
<Startup-Cost>0.01</Startup-Cost>
<Total-Cost>0.03</Total-Cost>
<Plan-Rows>1</Plan-Rows>
<Plan-Width>0</Plan-Width>
<Actual-Startup-Time>1007.210</Actual-Startup-Time>
<Actual-Total-Time>1007.211</Actual-Total-Time>
<Actual-Rows>1</Actual-Rows>
<Actual-Loops>1</Actual-Loops>
<Plans>
<Plan>
<Node-Type>Result</Node-Type>
<Parent-Relationship>InitPlan</Parent-Relationship>
<Subplan-Name>InitPlan 1 (returns $0)</Subplan-Name>
<Startup-Cost>0.00</Startup-Cost>
<Total-Cost>0.01</Total-Cost>
<Plan-Rows>1</Plan-Rows>
<Plan-Width>0</Plan-Width>
<Actual-Startup-Time>0.032</Actual-Startup-Time>
<Actual-Total-Time>0.033</Actual-Total-Time>
<Actual-Rows>1</Actual-Rows>
<Actual-Loops>1</Actual-Loops>
</Plan>
</Plans>
</Plan>
</explain>
[1] https://www.postgresql.org/docs/9.3/static/runtime-config-logging.html
>
>>
>> Caso nao encontre uma solucao melhor, vou ter que varrer a string
>> texto (saida do comando explain), para encontrar o custo total, tempo
>> etc.. para apos armazenar em uma tabela no banco de dados.
>>
>> []`s Neto
>
>
> 1- https://www.postgresql.org/docs/9.2/static/auto-explain.html
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral