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
