Em 15 de abril de 2010 14:32, MARCIO CASTRO
<[email protected]>escreveu:

> Caro Leonardo:
>
>   A Micro$oft vendia o FoxPro como um "banco de dados relacional", e
> sabemos que este não o era.
>   Para mim, não adianta dizer que uma determinada ferramenta é "robusta e
> confiável", sem explicar o porquê - isto é uma linguagem de vendedor, e não
> uma linguagem técnica.
>
>   Em http://www.postgresql.org/docs/8.4/static/planner-optimizer.html, há
> uma nota com o seguinte:
>
> "In some situations, examining each possible way in which a query can be
> executed would take an excessive amount of time and memory space."
>
>   Portanto, quero saber se o PostgreSQL tem ou não alguma estrutura de
> memória onde os planos de execução ficam armazenados, podendo ser
> reutilizados (compartilhados) por outras sessões.
>
>   Entendido?
>
>
>
Boa tarde.
Sei que perguntaste para o Leonardo, que na realidade deve ter um
conhecimento bem superior ao meu sobre a parte interna do banco postgreSQL,
contudo eu me arrisco a tentar responder.
Quando falas em estrutura de memória onde os planos de execução ficam
armazenado, acho que sei o que estás perguntando, mas não tenho certeza. O
postgreSQL, assim como muitos bancos de dados, ao executar uma query
armazena a mesma em um "cache", assim ao ser chamada a mesma query, ele não
precisa passar por todas as etapas para execução de uma query (parse,
etc...) e assim executa a mesma mais rapidamente. É comum dizermos que a
consulta ficou no "cache", por isso a segunda chamada foi mais rápida.
Quanto tempo temos isso guardado é um parâmetro que pode ser configurado.
Era essa a tua dúvida?

Atenciosamente,


>
> ------------------------------
> *De:* Leonardo Cezar <[email protected]>
>
> *Para:* Comunidade PostgreSQL Brasileira <
> [email protected]>
> *Enviadas:* Quinta-feira, 15 de Abril de 2010 11:35:40
>
> *Assunto:* Re: [pgbr-geral] Res: PostgreSQL x Firebird
>
> 2010/4/14 MARCIO CASTRO <[email protected]>:
> > Senhores:
> >
> >   Mas aí entramos novamente na velha disputa do "o meu time é melhor do
> que
> > o seu", ou "a minha Honda é mais rápida do que a sua Yamaha", e ninguém
> > explica o "PORQUÊ".
>
> Até onde pude acompanhar a trilha, o Roberto deu uma explicação
> resumida porém precisa sobre as finalidades de um servidor e do outro.
>
> >   Portanto, e a fim de elevar o tópico de forma a que todos aprendamos,
> > pergunto se o PostgreSQL, no seu processo de parse, bind e execute,
> compila
> > a instrução (query), e guarda o código em alguma área para ser
> reutilizado,
> > independentemente da sessão ou usuário conectado?
>
> Acho que aqui virou "salada".
>
> Como pode um processo de análise (/parser/) estar atrelado a uma
> execução (/execute/) se eles existem em contexto diferente?
>
> Me explico: No momento em que você *prepara* explicitamente uma
> instrução (prepare) ou cursor, a condição que define o tipo de retorno
> binário ou texto puro está na cláusula DECLARE e/ou poderia ser criada
> na mensagem BIND no lado do cliente em mensagens utilizando o
> protocolo estendido de cosultas (extended query protocol). Mas isso
> apenas para dados.
>
>
> No entanto, se estamos falando sobre o processo interno de análise
> léxica da consulta, o planejador é itneligente o suficiente para
> reutilizar árvores de consultas previamente análisadas e compiladss e
> não fazer a reescrita a não ser para obter dados estatísticos do
> catálogo, o que ocorre num segundo momento (aka Processo de
> Transformação da árvore de consulta) e não na fase de análise.
>
> >   Tem um colega que jura que não, mas o mesmo não me forneceu as fontes
> para
> > consultar o assunto. Numa "googada" rápida utilizando "postgre frequently
> > used execution plans parse tree", eu não conseguí encontrar a resposta,
> ou
> > não soube procurar, portanto, ficarei muito grato aqueles que puderem me
> > ajudar. Pode ser um artigo, uma página de algum manual, ou um diagrama
> > detalhando as estruturas do banco.
>
> Existe farta documentação sobre este tema:
>
> Comece por [1] (Architeture of a Database System, Michael
> Stonebracker; etal), depois aconselho o fundamental sobre arquitetura
> de banco de dados [2] (Database Management Systems, Raghu
> Ramakhrisnan; etal) e em seguida a extensa documentação sobre o
> protocolo de mensagens [4] e o mecanismo de análise e execução de
> consultas[3].
>
> 1)
> http://www.amazon.com/Architecture-Database-System-Foundations-Databases/dp/1601980787
> 2) http://pages.cs.wisc.edu/~dbbook/ <http://pages.cs.wisc.edu/%7Edbbook/>
> 3) http://www.postgresql.org/docs/8.4/static/overview.html
> 4) http://www.postgresql.org/docs/8.4/static/protocol-flow.html
>
> Bom estudo!
>
> -Leo
> --
> Leonardo Cezar
> http://www.aslid.org.br
> http://postgreslogia.wordpress.com
> _______________________________________________
> 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
>
>


-- 
André de Camargo Fernandes
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a