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