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
