Mozart Hasse escreveu:

[é meio off-topic ao assunto inicial mas...]

> No meu caso o que sempre fez e continua fazendo uma falta desgraçada no
> Postgres 
> é um otimizador decente. Bem que se podia aproveitar a idéia aplicada no
> Oracle ou no SQL Server e ter um cache de planos, reduzindo o número de
> compilações. Esse tempo hoje é relativamente pequeno (e insuficiente) no
> Postgres, exatamente porque ele precisa fazer isso a cada consulta. Se puder
> gastar mais tempo e aproveitar esse processamento (como o Oracle e o SQL
> Server fazem faz tempo), talvez ele se torne viável para mais aplicações.
> 
Isso já existe: chama-se comandos preparados (aka _prepared statements_). É
claro que você precisa manter a conexão mas nada que um aglomerador de
conexões (aka _pool_) não resolva.
Como você mesmo disse, o tempo é relativamente pequeno em aplicações Web e
OLTP; em OLAP, algumas consultas com dezenas de junções esse tempo é
significativo (aumenta 2^n mas é para isso que temos o GEQO) mas mesmo assim
bem inferior ao de execução da consulta.

> Outra coisa que ajudaria bastante seria a coleta de estatísticas mais
> detalhadas para uso do otimizador, como dados sobre correlação entre valores
> de campos dentro da mesma tabela (como o Oracle e o SQL Server fazem faz
> tempo). Isso obviamente consome um tempo, porém nem se compara com o
> desperdício que o Postgres faz com as estimativas furadas dele.
> 
É fácil falar do otimizador mas é difícil mexer nele. ;)

Já tivemos essa discussão a um tempo atrás mas em minha opinião, eu não
importo se o número de registros indicados na estimativa seja muito diferente
dos números reais (afinal de contas, é uma *estimativa*!); o que me
incomodaria é se por essa estimativa ser bem diferente do real, eu tenha um
plano de execução que não é o ideal. Se eu me lembro bem, nenhuma das
consultas apresentadas por você produzia um plano que não era ideal.


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a