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/
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

Responder a