Caro André: Muito obrigado, é isso mesmo, mas qual é o nome dessa estrutura no Postgree? Onde a mesma está documentada, para que eu possa verificar se este cachê é compartilhado, assim como suas variáveis de configuração?
________________________________ De: Andre Fernandes <fernandes.an...@gmail.com> Para: Comunidade PostgreSQL Brasileira <pgbr-geral@listas.postgresql.org.br> Enviadas: Quinta-feira, 15 de Abril de 2010 14:41:59 Assunto: Re: [pgbr-geral] Res: Res: PostgreSQL x Firebird Em 15 de abril de 2010 14:32, MARCIO CASTRO <marciomouracas...@yahoo.com.br> 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 <lhce...@gmail.com> > >Para: Comunidade PostgreSQL Brasileira <pgbr-geral@listas.postgresql.org.br> >Enviadas: Quinta-feira, 15 de Abril de 2010 11:35:40 > >Assunto: Re: [pgbr-geral] Res: PostgreSQL x Firebird > > >2010/4/14 MARCIO CASTRO <marciomouracas...@yahoo.com.br>: >> 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 >pgbr-geral@listas.postgresql.org.br >https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > >> > > > >_______________________________________________ >>pgbr-geral mailing list >pgbr-geral@listas.postgresql.org.br >https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- André de Camargo Fernandes
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral