Em 10 de janeiro de 2017 12:02, Cleiton Luiz Domazak
<cleitondoma...@gmail.com> escreveu:
>
>
> 2017-01-10 11:35 GMT-02:00 Neto pr <neto...@gmail.com>:
>>
>> 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
>> pgbr-geral@listas.postgresql.org.br
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
>
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to