Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-30 Por tôpico Fabrízio de Royes Mello
Mozart Hasse escreveu:
 
 Olhando os resultados, nota-se que neste caso o Postgres só escolheu um bom
 plano quando as estimativas forneceram valores completamente fora da realidade
 (estimado 13 encontrado 48). Isso neste caso foi ótimo, mas acho absurdo
 contar com isso como regra geral. Essa consulta pode até ficar mais rápida
 sem estatísticas, mas teoricamente é de se esperar que muitas outras
 consultas serão prejudicadas, enquanto que poucas vão (por puro acaso) se
 beneficiar de estatísticas tão furadas. Provavelmente o planejador descartou
 o plano ideal quando estatísticas sobre uma só coluna o induziram a erro.
 Quanto a isso, nenhuma solução trivial à vista.
 

A verdade é que o PostgreSQL ficou *mais perdido que cebola em salada de 
fruta* (hehehe)... a única coisa que me vem na cabeça em relação a esses 
testes é por ser um caso muito específico, tendo em vista o volume e a 
distribuição dos dados...

Questões de configuração de SO e do próprio PostgreSQL creio que fiz da 
forma adequada no ambiente em que executei, a única coisa que não 
modifiquei foram questoes de sistema de arquivos (tamanho de bloco, mais 
de um disco, separar dados e indices em sistemas de arquivos distintos, 
separa log de transacoes, etc.), mas também é como o colega comentou, o 
importante não é resultado absoluto e sim avaliacoes de resultados 
(ganhos e perdas)...

Com certeza não tenho esse resultado como regra e somente *nesse caso 
específico* desabilitei as estatisticas... o restante da base de dados 
continua inalterada...

E ainda acredito numa forma de utilizar adequadamente as estatísticas 
para melhorar ainda mais o desempenho das queries em relação aos 
resultados com elas desabilitadas (tem q ter uma forma)... quem sabe 
particionando a tabela??? usando indices parcias??? alguém arrisca 
alguma idéia???

Obrigado até o momento!


Cordialmente,

-- 
Fabrízio de Royes Mello
Coordenador Desenvolvimento de Software
[EMAIL PROTECTED]
DBSeller Informática Ltda. - http://www.dbseller.com.br
(51) 3076-5101
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-29 Por tôpico Mozart Hasse
Respondendo:

 Ninguém se interessou e *provou* que aumentando o parâmetro vai trazer
 benefício para todos.

Bom, passei um bom tempo expondo, perguntando e esperando descobrir o que é
prova suficiente para quem decide. Nessa última mensagem deu para ter uma
idéia, por mais que eu discorde que precise disso para decidir algo dessa
natureza.

 Consultas com:
 (i) vários tipos de dados
 (ii) várias distribuições desses dados
 (iii) número de registros variados (10, 100, 1k, 10k, 100k, 1m, 10m,
 100m, 1b -- acho que é o suficiente)

Nem vou entrar no mérito de quanto detalhamento precisaria para chegar em
algo que a meu ver justifique alguma conclusão puramente empírica. De
qualquer forma obrigado pela informação. Vou ver se providencio algo
parecido quando for contatar a lista que você indicou.

 * o caso mais frequente (eu acho que meu caso é), ou

 Esses 'achos' é que precisam ser validados...

Bom, quando eu souber que critério 'validou' o valor atual, posso até
discutir se preciso justificar mais alguma coisa nos meus 'achos'.

 VACUUM ANALYZE?  Qual a diferença?
 
Nenhuma. Só faço testes depois dele.

 [1] http://archives.postgresql.org/pgsql-hackers/2006-09/msg01521.php
 [2] http://archives.postgresql.org/pgsql-patches/2007-11/msg00170.php

Em [1] não vi nenhuma crítica relevante contra valores altos em
estatísticas, muito pelo contrário. Pelo menos, vi sensatez no comentário
sobre ter estatísticas consolidadas de várias colunas em versões futuras.
Isso sem dúvida trará muito mais benefícios do que mexer em parâmetros
(apesar das duas coisas irem muito melhor juntas).
Em [2] não achei nada em favor do valor atual, muito pelo contrário.

De qualquer forma obrigado pela referência.

 mesmo usando 1000 ficou mais rápido sem as estatisticas...

Olhando os resultados, nota-se que neste caso o Postgres só escolheu um bom
plano quando as estimativas forneceram valores completamente fora da realidade
(estimado 13 encontrado 48). Isso neste caso foi ótimo, mas acho absurdo
contar com isso como regra geral. Essa consulta pode até ficar mais rápida
sem estatísticas, mas teoricamente é de se esperar que muitas outras
consultas serão prejudicadas, enquanto que poucas vão (por puro acaso) se
beneficiar de estatísticas tão furadas. Provavelmente o planejador descartou
o plano ideal quando estatísticas sobre uma só coluna o induziram a erro.
Quanto a isso, nenhuma solução trivial à vista.

Mozart Hasse


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-29 Por tôpico Sergio Santi




Caros colegas de Lista:

Na semana passada um colega de lista postou uma mensagem relacionada a
importncia das estatsticas para o planejador do PostgreSQL. Eu venho
acompanhando com particular interesse porque j tive um problema
bastante semelhante tempos atrs e depois de discutir na lista,
realizar inmeros e demorados testes fui levado a concluso de que as
estatstica no estavam colaborando (e olhem que na poca eu nem pensei
em aumentar parmetros relativos ao coletor de estatsticas). 

A concluso que cheguei, por tentativa e erro, foi que para ter a
melhor performance deveria desativar o seqscan e o tidscan pois o
planejador estava tomando decises erradas e impossibilitando
determinadas consultas. Mais de uma vez vi pessoas postando diferentes
nuances do mesmo problema e tenho passado minha experincia, como
depois da minha sugesto ningum postou mensagem dizendo que no
funcionou deduzo que foi til e resolveu o problema.

Bem, ontem o colega que deu origem a esta thread concluiu e postou o
resultados dos testes que ele realizou segundo vrias colaboraes de
membros. Pelo que entendi, os primeiros testes que ele realizou no
puderam ser considerados vlidos por alguns detalhes que foram
corrigidos e os testes refeitos com os mesmos resultados que indicam
que as estatsticas no esto ajudando em nada o planejador, ou este as
esta ignorando.

Estes resultados batem com os que obtive a um bom tempo, mas gostaria
de provar que estamos partindo de alguma premissa errada para realizar
estes testes, porque se no for isso o problema estar no PostgreSQL e
eu acho bem mais provvel que eu e o outro colega estejamos cometendo
algum erro ou omisso.

A idia  que se os testes foram vlidos devemos pass-los como
sugesto para correo, mas se os testes ainda no foram conclusivos
no  interessante encaminhar esta sugesto e incomodar ainda mais os
mantenedores.

Antecipadamente, e em nome de todos que j tiveram o mesmo problema,
agradeo,

abraos,

Sergio Medeiros Santi


Euler Taveira de Oliveira escreveu:

  Mozart Hasse escreveu:

[cortando o que os outros j responderam ...]

  
  
(Acaso decidiram isso no sculo passado tambm?)


  
  Ningum se interessou e *provou* que aumentando o parmetro vai trazer
benefcio para todos.

  
  
Como j exposto anteriormente, aguardo divulgao de diretrizes de formato
aceitas pelo julgador para "me aventurar" nessa empreitada curiosamente
difcil de entender.


  
  Consultas com:
(i) vrios tipos de dados
(ii) vrias distribuies desses dados
(iii) nmero de registros variados (10, 100, 1k, 10k, 100k, 1m, 10m,
100m, 1b -- acho que  o suficiente)

  
  
Ok concluindo ento: em qual lista as pessoas que decidem isso discutem ou
discutiram esse assunto? Algum que concorda que o valor padro  ridculo
j se manifestou por l?


  
  -hackers, mas j vou adiantando que se tu chegar sem os dados que citei
acima eles nem vo te dar ouvidos.


  


-- 




___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-29 Por tôpico George

Caramba, ficou claro que iremos precisar na próxima PGCON discutir isso, o que 
acham ???



  Mozart Hasse escreveu: 
Respondendo:

  Ninguém se interessou e *provou* que aumentando o parâmetro vai trazer
benefício para todos.

Bom, passei um bom tempo expondo, perguntando e esperando descobrir o que é
prova suficiente para quem decide. Nessa última mensagem deu para ter uma
idéia, por mais que eu discorde que precise disso para decidir algo dessa
natureza.
  
  Para falar com quem decide, ou melhor, quem pode decidir mais rápido, vá 
direto às listas gringas.


[1] http://archives.postgresql.org/pgsql-hackers/2006-09/msg01521.php
[2] http://archives.postgresql.org/pgsql-patches/2007-11/msg00170.php

Em [1] não vi nenhuma crítica relevante contra valores altos em
estatísticas, muito pelo contrário. Pelo menos, vi sensatez no comentário
sobre ter estatísticas consolidadas de várias colunas em versões futuras.
Isso sem dúvida trará muito mais benefícios do que mexer em parâmetros
(apesar das duas coisas irem muito melhor juntas).
Em [2] não achei nada em favor do valor atual, muito pelo contrário.

De qualquer forma obrigado pela referência.
  
  Em nenhum momento procurei defender os padrões atuais, as referências estão 
aí pra mostrar que muita coisa tem sido discutida, e pelo jeito a discussão 
ainda vai longe.
  Vou tentar resumir o que eu entendo da posição dos desenvolvedores do 
Postgres. Os valores padrões devem servir a sistemas pequenos, rodar em várias 
plataformas com uma performance razoável, e ainda por cima ocupar pouco espaço. 
É uma equação muito complexa, e por essa razão, os valores padrões de memória 
(shared, work, maintenance...) são tão ridículamente pequenos.
  Para qualquer sistema da vida real, você vai precisar especificar 
configurações de memória, bem como configurar as suas tabelas para terem 
estatísticas mais precisas em certas colunas, como o outro colega fez 
aumentando de 10 para 1000. Ele está certo em testar e fazer alterações.
  Basicamente, o padrão não serve pra quase ninguém, mas roda em qualquer 
lugar; creio que seja essa a idéia do Postgres. Tanto que qualquer mudança nos 
padrões, por menor que seja, demora pra ser aceita e implementada.



  mesmo usando 1000 ficou mais rápido sem as estatisticas...

Olhando os resultados, nota-se que neste caso o Postgres só escolheu um bom
plano quando as estimativas forneceram valores completamente fora da realidade
(estimado 13 encontrado 48). Isso neste caso foi ótimo, mas acho absurdo
contar com isso como regra geral. Essa consulta pode até ficar mais rápida
sem estatísticas, mas teoricamente é de se esperar que muitas outras
consultas serão prejudicadas, enquanto que poucas vão (por puro acaso) se
beneficiar de estatísticas tão furadas. Provavelmente o planejador descartou
o plano ideal quando estatísticas sobre uma só coluna o induziram a erro.
Quanto a isso, nenhuma solução trivial à vista.
  
  Fazer errado pra dar certo não dá. Concordo plenamente.


-- 

[]´s, ACV

--


  ___
  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


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-29 Por tôpico Dickson S. Guedes
George escreveu:  
 Caramba, ficou claro que iremos precisar na próxima PGCON discutir 
 isso, o que acham ???

Hacker Talks? Seria uma boa.

-- 
[]s
Dickson S. Guedes
Administrador de Banco de Dados
Projeto Colmeia -  Florianópolis, SC
(48) 3322-1185, ramal: 26

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-28 Por tôpico George
Bom dia a todos !

Creio que foram colocados todas a situações possíveis nesta thread. A 
discussão foi bastante extensa e com certeza aprendi novas técnicas e 
otimização do postgree. Não quero ser dono da razão, mas o objetivo 
principal foi alcançado ao meu enteder  e esse é a essência de um forum.

Quero a agradecer muito pela experiência que vcs vem me passando.

George
Um simples programador.

 Sim. Talvez uma tabela com centenas de linhas e outra com milhões de
 linhas também.

 *Talvez* ?! Eu fiz a pergunta para saber que tipo de prova, em que formato 
 e
 por qual motivo seria capaz de convencer o definidor do parâmetro
 default_statistics_target que o valor 10 é ridículo. Com esse talvez 
 minha
 impressão é que nem você sabe o que poderia te convencer a mexer nesse
 valor.

O *talvez* é porque é uma técnica empírica (sem embasamento teórico). Eu
e muitos concordam que o valor padrão é ridículo.

 Eu falei acima em tempo de *planejamento* em nenhum momento mencionei
 execução. É claro que uma coisa puxa a outra. Para que utilizar o valor
 500 se com 30 é a mesma coisa (custa menos para planejar)?

 O tempo de planejamento, por menor que seja, faz parte do tempo de 
 execução.
 Já falei anteriormente que não estou nem aí que o Postgres gaste o dobro 
 de
 tempo planejando *todas* as consultas se no final ele fizer um plano
 decente, pois o processamento que ele vai desperdiçar fazendo o plano 
 errado
 nem se compara com o tempo de planejamento.
Você não entendeu a minha colocação acima. Valor padrão não tem nada a
ver com um caso específico; ou você acha que todas as suas colunas vão
precisar de um 'statistics_target' alto? E mais, (repetindo o que eu
disse) para que gastar tanto tempo no planejamento se você consegue um
resultado razoável em bem menos tempo?  Lembre-se: a idéia é *estimar*.
Na etapa de planejamento você não precisa de precisão (aka estatísticas
altas) e sim de rapidez e um plano razoável porque a maior parte do
tempo de execução deve ser gasta manipulando dados.
Vale ressaltar que mesmo com estatísticas ruins, você pode ter consultas
rápidas porque o planejador não sabe muita coisa a respeito de como
estão armazenados os dados; isto é uma coisa que começou a ser discutida
na -hackers essa semana.

 O que eu expus é que coletar informação insuficiente que leve um plano de
 execução mal escolhido tem consequências catastróficas que justificam e
 muito o custo de coletar muito mais informação.
Não adianta coletar tanta informação se o tempo para analisá-las é
significativo em relação ao tempo de manipulação dos dados.

 Quanto ao exemplo: não, a diferença entre as estimativas com valor 500 e 
 30
 não é pequena. O próprio paper que você citou demonstra isso na teoria e 
 na
 prática, assim como todos os testes que eu já fiz ou vi nessa lista.

Isso é um caso específico.

 Hum, finalmente uma fundamentação teórica, mesmo que seja do século
 passado.
Século passado? De quando você acha que é a teoria relacional?

 Aliás, fico imaginando qual é o perfil de quem pode
 extrair algo de útil de um histograma de tamanho 10, considerando a margem
 de erro mínima que ele proporciona.
Se os valores forem bem distribuídos a estimativa é boa.

 Bom, pelo exposto acima continuo sem fazer idéia de qual seja a
 justificativa para um valor tão baixo para o parâmetro
 default_statistics_target. Quanto ao valor que eu sugeri (1000), minha
 justificativa é a baixa margem de erro que ele proporciona, que se mostrou
 bastante justificada para os testes que fiz no meu ambiente para meu uso.
O problema de uma estimativa tão alta assim são (i) inchaço da tabela do
catálogo pg_statistic -- que pode provocar demora na hora de obter os
dados para análise (ii) tempo de processamento dos planos pode aumentar
o tempo de execução da consulta desnecessariamente.

O modelo de custo do PostgreSQL foi desenhado para ser simples e
eficiente. Adicionar processamento desnecessário está fora dos planos do
PostgreSQL. Novamente eu concordo que o valor é baixo (e isto é por uma
razão histórica); ninguém se aventurou a mostrar com distribuições de
dados variadas que este valor não condiz com a realidade atual. É fato
que esta área do SGBD precisa de novas idéias mas que ninguém se
aventurou a propor algo.


-- 
  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

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-28 Por tôpico Osvaldo Kussama
Em 28/10/08, George[EMAIL PROTECTED] escreveu:

 ... A
 discussão foi bastante extensa e com certeza aprendi novas técnicas e
 otimização do postgree.


Tudo bem, mas o nome é PostgreSQL ou simplesmente postgres.

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-28 Por tôpico George
Tudo bem, mas o nome é PostgreSQL ou simplesmente postgres. Osvaldo

Se eu não me engano isso foi falado na ultima PGCON.  Como eu sou burrinho ! 
Mas vc podia dar um desconto né !

Obrigado pela informação.. !

George
Um simples burrinho Programador

___
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


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-28 Por tôpico Osvaldo Kussama
2008/10/28, George [EMAIL PROTECTED]:
 Tudo bem, mas o nome é PostgreSQL ou simplesmente postgres. Osvaldo

 Se eu não me engano isso foi falado na ultima PGCON.  Como eu sou burrinho !
 Mas vc podia dar um desconto né !

 Obrigado pela informação.. !



A maioria dos participantes da lista, creio eu, gosta muito do
PostgreSQL e, por isso, quer sempre vê-lo citado corretamente.
Discordo do burrinho pois, se assim o fosse, certamente não estaria
usando o PostgreSQL. Desatento, talvez... rs

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-28 Por tôpico Mozart Hasse
Euler,

Mozart Hasse escreveu:
 Com esse talvez minha
 impressão é que nem você sabe o que poderia te convencer a mexer nesse 
 valor.

 O *talvez* é porque é uma técnica empírica (sem embasamento teórico).
Eu
 e muitos concordam que o valor padrão é ridículo.

Ok, em qual lista as pessoas que decidem isso discutem ou discutiram esse 
assunto? Alguém que concorda que o valor padrão é ridículo já se
manifestou 
por lá?


 Já falei anteriormente que não estou nem aí que o Postgres gaste o dobro
de
 tempo planejando *todas* as consultas se no final ele fizer um plano 
 decente, pois o processamento que ele vai desperdiçar fazendo o plano
errado 
 nem se compara com o tempo de planejamento.

 Você não entendeu a minha colocação acima. Valor padrão não tem nada
a
 ver com um caso específico;

Sim, tem a ver com:
* o caso mais frequente (eu acho que meu caso é), ou
* com o caso que trará bom resultado para a maioria dos usuários (eu acho
que meu caso traz), ou 
* com o caso que trouxer menos problemas para a maioria dos usuários (eu acho
que meu caso traz muito pouco para justificar preocupações), ou
* qualquer outro critério que tenha algo a ver com os acima (eu acho que o
meu caso deveria se aplicar).

 ou você acha que todas as suas colunas vão
 precisar de um 'statistics_target' alto? 

Todas não, mas uma boa parte. Aliás, muito mais do que o suficiente para eu
achar que vale a pena calcular para *todas* a fim de que ele nunca fique com
pouca informação para estimar as que eu de fato preciso.

 E mais, (repetindo o que eu disse) para que gastar tanto tempo no
planejamento 
 se você consegue um resultado razoável em bem menos tempo? 

Porque nem todo mundo acha satisfatório o resultado razoável medido em
minutos, especialmente quando se coloca lado a lado com outros bancos de
dados, que na mesma máquina fazem a mesma consulta sobre a mesma estrutura e
os mesmos dados em poucos milissegundos.

 Lembre-se: a idéia é *estimar*.
 Na etapa de planejamento você não precisa de precisão (aka estatísticas
 altas) e sim de rapidez e um plano razoável porque a maior parte do
 tempo de execução deve ser gasta manipulando dados.
(...)
 Não adianta coletar tanta informação se o tempo para analisá-las é
 significativo em relação ao tempo de manipulação dos dados.

Pouco importa a proporção planejamento/execução, o que interessa é
atender a todas as consultas que chegam no menor tempo possível. Eu também
estou falando de poupar tempo, só que fazendo as coisas da maneira mais
inteligente. Usar estatísticas insuficientes é uma otimização precoce que
faz com que o servidor não faça mais nada além de manipular dados de
maneira ridiculamente ineficiente.

 Vale ressaltar que mesmo com estatísticas ruins, você pode ter consultas
 rápidas porque o planejador não sabe muita coisa a respeito de como
 estão armazenados os dados; 

Com estatísticas ruins, consultas rápidas serão fruto de *muita* sorte ou
um de sistema muito, *muito* simples. Não dá para contar com a sorte em
bases cheias de dados não-fictícios e tabelas interligadas.

 Hum, finalmente uma fundamentação teórica, mesmo que seja do século
passado.

 Século passado? De quando você acha que é a teoria relacional?

Teoria relacional surgiu no século passado, só que de lá para cá algumas
pessoas andaram pensando a respeito e melhorando o que já existia. Olha só o
que o odiado concorrente fez para nunca, *nunca mesmo* ter uma mísera
consulta significativamente mais lenta do que o Postgres no meu ambiente de
testes:

http://www.microsoft.com/technet/prodtechnol/sql/2005/qrystats.mspx


 Se os valores forem bem distribuídos a estimativa é boa.

Sim, só que isso é no mundo perfeito, cuja proximidade só existe em sonhos.
Idealismo por idealismo, se valores fossem bem distribuídos, bancos de dados
nem precisariam de estatísticas.

 (i) inchaço da tabela do catálogo pg_statistic -- que pode provocar 
 demora na hora de obter os dados para análise

Sim, isso *pode* levar mais tempo. Agora, no meu caso não ter dados
estatísticos suficientes *garantidamente* deixou o servidor muito pior.

 (ii) tempo de processamento dos planos pode aumentar o tempo de 
 execução da consulta desnecessariamente.

Claro que *pode*. Só que no meu caso não ter dados estatísticos suficientes
*garantidamente* deixou o servidor muito pior.

 O modelo de custo do PostgreSQL foi desenhado para ser simples e
 eficiente. 

Nada contra simplicidade, só sou contra coisas *exageradamente* simples. Que
tal ser um pouco mais eficiente ao invés de ser apenas simples?

 Adicionar processamento desnecessário está fora dos planos do PostgreSQL.


Está fora dos meus planos também. Estou desde o começo da tópico
explicando de várias maneiras que ter mais informações estatísticas *não
é* desnecessário. Deu pra notar?

 Novamente eu concordo que o valor é baixo (e isto é por uma
 razão histórica); 

:-O 

(Acaso decidiram isso no século passado também?)

:-|

(Está escrito em pedra?!)

:-/

 Ninguém se aventurou a mostrar 

Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-28 Por tôpico Leandro DUTRA
2008/10/28 Mozart Hasse [EMAIL PROTECTED]:

 Ok, em qual lista as pessoas que decidem isso discutem ou discutiram esse
 assunto?

-hackers


 Alguém que concorda que o valor padrão é ridículo já se
 manifestou por lá?

Por que você acha que o Euler pediu os dados?  ;-)


 * o caso mais frequente (eu acho que meu caso é), ou

Esses 'achos' é que precisam ser validados...


 Olha só o
 que o odiado concorrente fez para nunca, *nunca mesmo* ter uma mísera
 consulta significativamente mais lenta do que o Postgres no meu ambiente de
 testes:

 http://www.microsoft.com/technet/prodtechnol/sql/2005/qrystats.mspx

VACUUM ANALYZE?  Qual a diferença?


 O modelo de custo do PostgreSQL foi desenhado para ser simples e
 eficiente.

 Nada contra simplicidade, só sou contra coisas *exageradamente* simples. Que
 tal ser um pouco mais eficiente ao invés de ser apenas simples?

Primeiro, porque essas coisas ainda estão evoluindo.  Há pouco tempo
atrás, os atuais valores default eram razoáveis.

Segundo, porque a complexidade não é vantagem.  É melhor manter o
simples enquanto se pensa no ideal que sair gastando recursos para
fazer algo que depois se provará sub-ótimo.


 Ninguém se aventurou a mostrar com distribuições de
 dados variadas que este valor não condiz com a realidade atual.

 Como já exposto anteriormente, aguardo divulgação de diretrizes de formato
 aceitas pelo julgador para me aventurar nessa empreitada curiosamente
 difícil de entender.

Hm, o Euler já deu umas boas dicas, o que te falta exatamente?  Não
ficou claro.  Na verdade, tua irritação, justificada ou não, ficou
clara, mas não exatamente o que você quer.


 É fato que esta área do SGBD precisa de novas idéias mas que ninguém se
 aventurou a propor algo.

 Ninguém *do Postgres*, você quer dizer.

O que ele quer dizer, e o que ele disse.  O artigo especifica.

-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7344  gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-28 Por tôpico André Volpato
Mozart Hasse escreveu:
 Ok concluindo então: em qual lista as pessoas que decidem isso discutem ou
 discutiram esse assunto? Alguém que concorda que o valor padrão é ridículo
 já se manifestou por lá?

   

Tente acompanhar esta thread [1], é um pouco antiga mas pode ajudar a 
esclarecer alguns pontos.
Creio que o valor padrão, de 10 valores diferentes, é utilizado porque 
(i) poucas colunas tem índices e (ii) tamanho reduzido de pg_statistic.

Veja em [2] que já tentaram alterar este valor, inclusive tentando 
alterar de acordo com o tipo do dado.

[1] http://archives.postgresql.org/pgsql-hackers/2006-09/msg01521.php
[2] http://archives.postgresql.org/pgsql-patches/2007-11/msg00170.php


-- 

[]´s, ACV


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-27 Por tôpico Euler Taveira de Oliveira
Mozart Hasse escreveu:

 Sim. Talvez uma tabela com centenas de linhas e outra com milhões de
 linhas também.
 
 *Talvez* ?! Eu fiz a pergunta para saber que tipo de prova, em que formato e 
 por qual motivo seria capaz de convencer o definidor do parâmetro 
 default_statistics_target que o valor 10 é ridículo. Com esse talvez minha 
 impressão é que nem você sabe o que poderia te convencer a mexer nesse 
 valor.
 
O *talvez* é porque é uma técnica empírica (sem embasamento teórico). Eu
e muitos concordam que o valor padrão é ridículo.

 Eu falei acima em tempo de *planejamento* em nenhum momento mencionei
 execução. É claro que uma coisa puxa a outra. Para que utilizar o valor
 500 se com 30 é a mesma coisa (custa menos para planejar)?
 
 O tempo de planejamento, por menor que seja, faz parte do tempo de execução. 
 Já falei anteriormente que não estou nem aí que o Postgres gaste o dobro de 
 tempo planejando *todas* as consultas se no final ele fizer um plano 
 decente, pois o processamento que ele vai desperdiçar fazendo o plano errado 
 nem se compara com o tempo de planejamento.
Você não entendeu a minha colocação acima. Valor padrão não tem nada a
ver com um caso específico; ou você acha que todas as suas colunas vão
precisar de um 'statistics_target' alto? E mais, (repetindo o que eu
disse) para que gastar tanto tempo no planejamento se você consegue um
resultado razoável em bem menos tempo?  Lembre-se: a idéia é *estimar*.
Na etapa de planejamento você não precisa de precisão (aka estatísticas
altas) e sim de rapidez e um plano razoável porque a maior parte do
tempo de execução deve ser gasta manipulando dados.
Vale ressaltar que mesmo com estatísticas ruins, você pode ter consultas
rápidas porque o planejador não sabe muita coisa a respeito de como
estão armazenados os dados; isto é uma coisa que começou a ser discutida
na -hackers essa semana.

 O que eu expus é que coletar informação insuficiente que leve um plano de 
 execução mal escolhido tem consequências catastróficas que justificam e 
 muito o custo de coletar muito mais informação.
Não adianta coletar tanta informação se o tempo para analisá-las é
significativo em relação ao tempo de manipulação dos dados.

 Quanto ao exemplo: não, a diferença entre as estimativas com valor 500 e 30 
 não é pequena. O próprio paper que você citou demonstra isso na teoria e na 
 prática, assim como todos os testes que eu já fiz ou vi nessa lista.
 
Isso é um caso específico.

 Hum, finalmente uma fundamentação teórica, mesmo que seja do século 
 passado.
Século passado? De quando você acha que é a teoria relacional?

 Aliás, fico imaginando qual é o perfil de quem pode 
 extrair algo de útil de um histograma de tamanho 10, considerando a margem 
 de erro mínima que ele proporciona.
Se os valores forem bem distribuídos a estimativa é boa.

 Bom, pelo exposto acima continuo sem fazer idéia de qual seja a 
 justificativa para um valor tão baixo para o parâmetro 
 default_statistics_target. Quanto ao valor que eu sugeri (1000), minha 
 justificativa é a baixa margem de erro que ele proporciona, que se mostrou 
 bastante justificada para os testes que fiz no meu ambiente para meu uso.
O problema de uma estimativa tão alta assim são (i) inchaço da tabela do
catálogo pg_statistic -- que pode provocar demora na hora de obter os
dados para análise (ii) tempo de processamento dos planos pode aumentar
o tempo de execução da consulta desnecessariamente.

O modelo de custo do PostgreSQL foi desenhado para ser simples e
eficiente. Adicionar processamento desnecessário está fora dos planos do
PostgreSQL. Novamente eu concordo que o valor é baixo (e isto é por uma
razão histórica); ninguém se aventurou a mostrar com distribuições de
dados variadas que este valor não condiz com a realidade atual. É fato
que esta área do SGBD precisa de novas idéias mas que ninguém se
aventurou a propor algo.


-- 
  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


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-26 Por tôpico Mozart Hasse
Bom, algumas observações:

 A questão é que tentei valores das estatisticas justamente pro
 PostgreSQL não despender tempo desnecessário com o planejamento
 (verifiquei colunas estimadas e retornadas como recomendastes)... o caso
 é que o valor que melhor se ajustou foi 1000,

Idem, para todos os casos em que algum dia me dei ao trabalho de otimizar
qualquer consulta em Postgres.

Tempo de Execução: 84195.499 ms *MENOR TEMPO DE TODOS*

O tempo até que é útil, mas considerando a disparidade de resultados, é bom
mandar logo o EXPLAIN completo da query para ver o que ele fez em cada caso.
Se o plano foi o mesmo (entre as estatísticas é possível), a diferença se
deve ao cache. Agora, a diferença entre os tempos com e sem estatísticas só
pode ser explicada por um plano diferente. Sabendo o plano, dá para imaginar
o que o Postgres usou ou deixou de usar para chegar ao plano ideal.

 Bom, agora falando sobre o que eu considero mais importante: é muito
 difícil você conseguir obter bons resultados rodando em um notebook, com
 apenas 800Mhz por core.

O problema não é resultado absoluto, e sim diferença entre resultados no
mesmo ambiente.
Se o importante é a comparação entre resultados, qualquer processador serve.
Se acha que esse processador é lento, seria bom mostrar que parâmetro faria
ele usar outro recurso de forma a executar a consulta num tempo decente.


Mozart Hasse


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-26 Por tôpico Mozart Hasse
Euler,


 Que provas eu preciso montar ? Uma base com tabelas de 5000, 3 e 
 70
 registros, alguns índices e uma dúzia de querys 60 vezes mais lentas do 
 que
 uma base com esse parâmetro preenchido com valores decentes ?

 Sim. Talvez uma tabela com centenas de linhas e outra com milhões de
 linhas também.

*Talvez* ?! Eu fiz a pergunta para saber que tipo de prova, em que formato e 
por qual motivo seria capaz de convencer o definidor do parâmetro 
default_statistics_target que o valor 10 é ridículo. Com esse talvez minha 
impressão é que nem você sabe o que poderia te convencer a mexer nesse 
valor.

Bom, fica a proposta. Quando alguém achar que um teste prático serve para 
estimar um valor padrão para esse parâmetro, que especifique a fim que de 
passemos a discutir os critérios ou aceitemos os resultados.
Ah, e claro, se alguém achar que tem embasamento *teórico* para defender um 
valor desses, eu adoraria saber.

 Não faça isso! As consultas que utilizam uma coluna com o parâmetro com
 esse valor vão demorar bem mais para serem planejadas desnecessariamente
 sem falar em mais trabalho para o ANALYZE.  (...)

 O custo de calcular as estatísticas numa tabela grande até pode parecer
 *relativamente* alto, porém calcular essa informação extra nem se compara
 com o estrago causado por um TABLE SCAN numa tabela com 1.000.000 de 
 registros
 ou mais.

 Eu falei acima em tempo de *planejamento* em nenhum momento mencionei
 execução. É claro que uma coisa puxa a outra. Para que utilizar o valor
 500 se com 30 é a mesma coisa (custa menos para planejar)?

O tempo de planejamento, por menor que seja, faz parte do tempo de execução. 
Já falei anteriormente que não estou nem aí que o Postgres gaste o dobro de 
tempo planejando *todas* as consultas se no final ele fizer um plano 
decente, pois o processamento que ele vai desperdiçar fazendo o plano errado 
nem se compara com o tempo de planejamento.
O que eu expus é que coletar informação insuficiente que leve um plano de 
execução mal escolhido tem consequências catastróficas que justificam e 
muito o custo de coletar muito mais informação.
Quanto ao exemplo: não, a diferença entre as estimativas com valor 500 e 30 
não é pequena. O próprio paper que você citou demonstra isso na teoria e na 
prática, assim como todos os testes que eu já fiz ou vi nessa lista.

 É exatamente para isso que serve o histograma nas estatísticas. Mas ele
 armazena somente uma amostra do histograma (que pode ser grande); e
 estatisticamente você não precisa de valores altos. Se quiser saber como
 o PostgreSQL faz isso é só olhar o artigo do Chaudhuri [1] ou uma breve
 explicação em backend/commands/analyze.c:~1526.

[1] ftp://ftp.research.microsoft.com/users/autoadmin/histogram_conf.pdf

Hum, finalmente uma fundamentação teórica, mesmo que seja do século 
passado. Vejamos o que diz e faz o autor do artigo:
* o tamanho do histograma determina a margem de erro *mínima* que ele terá 
(Teorema 1 item 1). Quanto menor este histograma, obviamente maior será o 
erro que você terá em suas estatísticas. Aqui vemos algo claramente 
contrário a essa idéia de usar valores pequenos para esse parâmetro.
* não há no artigo indicação de valor ideal para o tamanho do histograma. O 
que há são fórmulas que incluem esse valor, junto com outros parâmetros como 
o tamanho da tabela e a margem de erro. Disso me parece que a única 
justificativa para o Postgres sugerir histogramas tão pequenos é aceitar 
margens de erro absurdas, que em de longe me parecem adequadas para a 
maioria dos usuários. Aliás, fico imaginando qual é o perfil de quem pode 
extrair algo de útil de um histograma de tamanho 10, considerando a margem 
de erro mínima que ele proporciona.
* em *t*o*d*o*s* os experimentos realizados pelo autor, os valores sempre 
foram muito acima de 10. Imagino que ele precisou usar valores maiores (50 a 
600)  para ter uma margem de erro suficientemente pequena para embasar 
alguma conclusão.

Bom, pelo exposto acima continuo sem fazer idéia de qual seja a 
justificativa para um valor tão baixo para o parâmetro 
default_statistics_target. Quanto ao valor que eu sugeri (1000), minha 
justificativa é a baixa margem de erro que ele proporciona, que se mostrou 
bastante justificada para os testes que fiz no meu ambiente para meu uso. Um 
exemplo do grau de melhoria proporcionado por um valor tão alto pode ser 
visto na diferença entre os valores previstos e encontrados nos diversos 
valores de testes apresentados neste tópico. A proporção previsto/encontrado 
proporcionada pelo valor 1000 é o tipo de margem de erro que eu julgo 
necessária num histograma de otimizador.

Sem mais para o momento,

Mozart Hasse 


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-25 Por tôpico Sergio Medeiros Santi




Pessoas que, como eu, tem muito apreo pelo
Postgresql e seus mantenedores:

No estava me referindo a ningum em especial, mas  algo que procuro
me lembrar e que recomendo a todos. 

 interessante lembrar como a histria toda comeou: 

a. Algum reportou um estranho problema de performance; 

b. passou uma srie de detalhes e testes (neste ponto me tocou porque
tambm passei por isso e tambm no consegui explicaes plausveis); 

c. membros fizeram sugestes que foram seguidas e os resultados
postados; 

d. aps uma trabalheira de algum o assunto comeou a esmaecer (neste
momento resolvi apimentar a relao para evitar que como outras vezes
essa excelente lista deixasse a peteca cair). 

e. algum sugeriu um processo automtico ou semi na instalao (o que
acho bem razovel por se tratar basicamente de grandezas constantes
como memria); 

f algum sugeriu que isto poderia ser dinmico (o que me parece mais
complexo, mas ainda assim, plausvel); 

g. mais ou menos neste momento comearam alguns comentrios que levavam
a crer que isto era algo to complexo, to difcil, tantas vezes
tentado sem sucesso, ..., que no valia a pena gastar tempo com isto
(neste ponto lembrei: 1. daquele cara "que sem saber que era
impossvel, foi l e fez", 2. daquela do pipoqueiro que formou o filho
em administrao e este grato ao pai resolveu "desenvolver" o negcio e
depois de contratar um o staff, consultorias, agentes de marketing
acabou falindo e 3. tambm que se um assunto no aparece ou  pouco
debatido ele dificilmente ser considerado pelas pessoas que pensam as
caractersticas desejveis em uma nova verso).

Assim sendo e como acredito que se fosse to complexo outros bancos no
teriam ferramentas nesta linha estou dando minha contribuio a que
este assunto no morra, que conste nas estatsticas da lista e que isto
sirva como indicador de features a incluir em futuras verses. Tambm
pretende ser uma palavra de estmulo a todos os que tentam, testam,
demonstram e discutem sem medo de serem taxados de inexperientes.
Talvez dessa massa crtica surjam braos para contribuir com o
desenvolvimento do nosso to querido e porreta Postgresql.

Durante essa discusso algum teve a curiosidade cientfica de
desabilitar suas estatsticas e ver como o planejador reage? Alterou
parmetros e observou como ficou o plano de execuo. Eu, h um bom
tempo atrs, fiz testes deste tipo e como o colega que iniciou esta
thread no consegui concluir muita coisa mas apesar de ter discutido o
assunto nesta lista no tive resposta melhores que esta vez, mas como
ele tenho seqscan e tidscan desabilitados porque nos testes que fiz com
esses cara habilitados os resultados eram desastrosos. Tambm j vi
muita gente reclamando nesta lista de performance pobre aos quais
respondo com base nas experincias que tive e as reclamaes cessam
(quero crer que o problema parou ou ao menos melhorou
significativamente).

Bem, amigos, eu gostaria de ter tempo disponvel para poder grandes
testes de performance e gerar um tutorial de tunning, depois uma
ferramenta, depois (quem sabe) incorpor-la ao Postgresql, mas no
momento preciso aceitar minhas capacidades e tentar contribuir com o
que me for possvel.

Como j  fim de semana espero que o tamanho desta mensagem no
incomode muito.

Um grande abrao a todos e longa vida ao Postgresql!

Euler Taveira de Oliveira escreveu:

  Sergio Medeiros Santi escreveu:

  
  
Talvez o que esteja ocorrendo 
algo que acontece frequentemente conhecido como "soberba", onde as
pessoas formadoras de opinio e que podem influir positivamente no o
fazem, simplesmente porque no tem "tempo" de ouvir suas comunidades.


  
  [No sei se voc est dirigindo esta ltima frase a minha pessoa mas...]

(i) em nenhum momento eu deixei de fornecer informaes ao colega;
(ii) eu "ouo" esta comunidade tanto  verdade que vrias correes de
erros e melhorias surgiram de idias discutidas aqui;
(iii) eu _no_ sou financiado por nenhuma empresa que trabalha com
PostgreSQL e, se fosse, talvez poderia me dedicar mais a funcionalidades
interessantes do ponto de vista do usurio;
(iv) se o tal auto-tuning fosse fcil de fazer com certeza ele j
estaria disponvel;
(v) no h frmula mgica para tuning (vejo que pela recorrncia do tema
na lista talvez alguns dos gurus palestrantes pensassem em palestras
sobre o tema nas prximas conferncias -- Ike-san?).

Voltando a discusso inicial ...


  



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico Leandro DUTRA
2008/10/24 Sergio Medeiros Santi [EMAIL PROTECTED]:
 Esqueci de mencionar, na mensagem anterior, que não quero desviar o foco.
 Tem um companheiro de lista que deve ter consumido um tempo significativo
 testando e tentando medir a eficiência de diferentes abordagens que ainda
 não teve uma resposta.

Como não?  Tenho aqui mais de uma dúzia de mensagens, muitas das quais
são de um bate-e-volta sobre os testes que ainda não terminou.


 Acho que a atitude dele não pode ser considerada
 falta de braços. Talvez o que esteja ocorrendo é algo que acontece
 frequentemente conhecido como soberba, onde as pessoas formadoras de
 opinião e que podem influir positivamente não o fazem, simplesmente porque
 não tem tempo de ouvir suas comunidades.

Não é bom julgar sem conhecimento de causa.  O que é prioridade para
uns não é para outros, e nenhuma organização tem recursos para atender
todos os usuários.  Falta de braços é comum; o que não pode são braços
curtos.

Aliás: desde quando alguém é obrigado a ouvir a comunidade?  Lembre-se
de que são todos voluntários, e a menos que você tenha um contrato de
suporte, não é bom esperar que alguém tenha a obrigação de te atender.
 Devemos, sim, sermos gratos por tudo o que temos.

Não deixe tua irritação com a vida transbordar e afetar quem não tem
nada a ver com teus problemas, só está te fazendo um favor.

-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7344  gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico Sergio Medeiros Santi




O que eu temia est acontecendo. Meu comentrio acabou desviando o foco
quando o objetivo era o contrrio.

E  claro que ningum  obrigado a ouvir uma comunidade. Inclusive
muita comunidade boa sucumbiu motivada por essa "surdez". A falta de
uso e de massa crtica j destruiu uma srie de idias maravilhosas,
no vamos deixar isto acontecer com o PG, por favor. Nem deixar que
nosso ego se sobreponho aos interesses de toda uma comunidade.

Eu acreditei que havia dado inmeras indicaes de apreo e respeito ao
PG e a comunidade que o mantm e  tambm por querer que continue assim
que no fico apenas "rasgando seda", mas sugerindo coisas que alguns
julgam importantes para que se os desenvolvedores conclurem que 
interessante e til.

Finalmente, eu no notei estar irritado, inclusive estou de muito bom
humor, mas posso sem querer ter espelhado alguma coisa ou feito aflorar
algum desafeto. No goste de ser repetitivo, mas quero manifestar
novamente minha satisfao em fazer parte da comunidade de usurios do
PG e de desejar que esta comunidade e o PG cresam em poder e em
sabedoria.

De minha parte no pretendo contribuir para afastar ainda mais o foco e
se no houver motivao encerro aqui minha contribuio a esta thread
sob pena de daqui a pouco estaremos discutindo quem matou Elo ou o
sexo dos anjos. 

Abraos e bom fim de semana a todos

P.S. Meus fins de semana esto muito mais tranquilos depois que adotei
o Postgresql.

Sergio Medeiros Santi



Leandro DUTRA escreveu:

  2008/10/24 Sergio Medeiros Santi [EMAIL PROTECTED]:
  
  
Esqueci de mencionar, na mensagem anterior, que no quero desviar o foco.
Tem um companheiro de lista que deve ter consumido um tempo significativo
testando e tentando medir a eficincia de diferentes abordagens que ainda
no teve uma resposta.

  
  
Como no?  Tenho aqui mais de uma dzia de mensagens, muitas das quais
so de um bate-e-volta sobre os testes que ainda no terminou.


  
  
Acho que a atitude dele no pode ser considerada
falta de braos. Talvez o que esteja ocorrendo  algo que acontece
frequentemente conhecido como "soberba", onde as pessoas formadoras de
opinio e que podem influir positivamente no o fazem, simplesmente porque
no tem "tempo" de ouvir suas comunidades.

  
  
No  bom julgar sem conhecimento de causa.  O que  prioridade para
uns no  para outros, e nenhuma organizao tem recursos para atender
todos os usurios.  Falta de braos  comum; o que no pode so braos
curtos.

Alis: desde quando algum  obrigado a ouvir a comunidade?  Lembre-se
de que so todos voluntrios, e a menos que voc tenha um contrato de
suporte, no  bom esperar que algum tenha a obrigao de te atender.
 Devemos, sim, sermos gratos por tudo o que temos.

No deixe tua irritao com a vida transbordar e afetar quem no tem
nada a ver com teus problemas, s est te fazendo um favor.

  



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico Leandro DUTRA
2008/10/24 Sergio Medeiros Santi [EMAIL PROTECTED]:
 ...muita
 comunidade boa sucumbiu motivada por essa surdez. A falta de uso e de
 massa crítica já destruiu uma série de idéias maravilhosas, não vamos deixar
 isto acontecer com o PG, por favor.

Pode ficar tranqüilo, a comunidade é muito maior que esta lista...

-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7344  gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico Sergio Medeiros Santi




De vez em quando  bom fazer mexer os agu-pes.
Acabei achando o material de um tocaio bem interessante. Parece que
algo est mesmo por acontecer.

Dem uma olhada em
http://www.inf.ufsc.br/erbd2008/palestras/sergio/Sergio.ppt e em
http://www.inf.puc-rio.br/~postgresql/

Enfim uma luz no fim do tnel que no  trem.

Sergio Medeiros Santi



Leandro DUTRA escreveu:

  2008/10/24 Sergio Medeiros Santi [EMAIL PROTECTED]:
  
  
...muita
comunidade boa sucumbiu motivada por essa "surdez". A falta de uso e de
massa crtica j destruiu uma srie de idias maravilhosas, no vamos deixar
isto acontecer com o PG, por favor.

  
  
Pode ficar tranqilo, a comunidade  muito maior que esta lista...

  



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico Leandro DUTRA
2008/10/24 Sergio Medeiros Santi [EMAIL PROTECTED]:
 De vez em quando é bom fazer mexer os aguá-pes. Acabei achando o material de
 um tocaio bem interessante. Parece que algo está mesmo por acontecer.

Tocaio?  Qu'est-ce que c'est ça ?


 Dêem uma olhada em
 http://www.inf.ufsc.br/erbd2008/palestras/sergio/Sergio.ppt e em

Foi o gajo que apresentou isso ano passado no I PgConBR (2007-12)?  Se
sim, será que ele já conseguiu se apresentar ao PGDG?  Ele teve no
passado alguns problemas de comunicação intercultural...


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7344  gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico André Volpato
Fabrizio Mello - Pessoal escreveu:
 Pessoal,

 O amigo Mozart expressou bem o *sentimento de indignação* quanto a 
 esse mistério que são as configurações para *tunning* do nosso 
 elefantinho.

Tuning é uma arte muitas vezes incompreendida. Ter paciência e bom senso 
é essencial, vou tentar ajudar aqui me baseando nos testes e 
experiências que tive.


 Dando continuidade a esse *dilema* vamos a resultados práticos que 
 obtive e, como iremos ver, continuam estranhos...


 Tenho as seguintes tabelas envolvidas no teste:
 - NotaFiscal ( 2.162.878 registros)
 - NotaItem   (28.041.370 registros)
 - Produto(41.911 registros)

Tua base é de pequena pra média, acho que dá pra melhorar bastante esses 
tempos.


 corta

 6) Estatisticas = 0 (desabilitado) nas Colunas das Tabelas NotaFiscal 
 e NotaItem, mas com uma pequena modificação no SELECT: 
 DataMovimentoNota between '2008-04-01' and '2008-04-30'  
 (Selecionado o Mes Inteiro)
 Linhas Estimadas: 13
Linhas Retornadas: 1.266.367
Tempo de Execução: 84195.499 ms *MENOR TEMPO DE TODOS*

 Obs: Agora uma surpresa... ~84seg para retornar 1.266.367, muito menos 
 que os ~13min q levou com as estatisticas setadas pra 1000


Acho que você deveria esquecer um pouco o parâmetro de estatísticas da 
tabela, e voltar a ele assim que a casa estiver arrumada.
Sobre o que o Euler disse do cache do SO, ele está armazenando o 
resultado das querys e está influenciando nesse resultado.
Para zerar o cache, não basta reiniciar o PG, pare o serviço e digite:
# echo 3  /proc/sys/vm/drop_caches

Inicie o banco novamente, mude apenas um parâmetro de cada vez, e repita 
o analyze.

Bom, agora falando sobre o que eu considero mais importante: é muito 
difícil você conseguir obter bons resultados rodando em um notebook, com 
apenas 800Mhz por core.
Não sei qual é o teu ambiente de produção, mas o ideal seria se você 
conseguisse testar em um ambiente parecido.
A velocidade do clock e o tamanho do cache (quase inexistente neste 
notebook) influencia bastante em joins e sorts.

Mande pra gente como é o teu ambiente de produção, inclusive se existem 
partições e RAIDs.
Neste ambiente de testes, com um HD fazendo tudo, fica meio difícil ter 
ganhos maiores.

Sobre o postgresql.conf, habilite todos os planos do planejador. Seq 
scans são muito úteis para filtros e buscas em tabelas pequenas.
Não tente enganar o planejador, tente fazer ele acertar o máximo nas 
estatísticas; não faz sentido que uma query rode mais rápido se o 
planejador estiver errado.
É apenas uma questão de bom senso, *muita* gente boa trabalhou em cima 
de otimizações para o planejador. Ele é mais esperto do que você ;)

Veja também se a versão do PG é a mesma nos ambientes de teste e 
produção. Se for, atualize para a última do 8.2.

PS: Sobre os auto-tunnings, apesar do enorme esforço da comunidade, 
creio que ainda estamos engatinhando. Nenhuma das propostas foi pra 
frente, que eu saiba ...

-- 

[]´s, ACV


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico Leandro DUTRA
2008/10/24 André Volpato [EMAIL PROTECTED]:
 Bom, agora falando sobre o que eu considero mais importante: é muito
 difícil você conseguir obter bons resultados rodando em um notebook, com
 apenas 800Mhz por core.

Até que ponto a velocidade do processador influi?  Na minha
experiência, a quantidade e velocidade de memória disponível,
inclusive os vários níveis de cache e tanto memória volátil quanto de
massa (discos), é muito, mas muito mesmo, mais importante.


 PS: Sobre os auto-tunnings, apesar do enorme esforço da comunidade,
 creio que ainda estamos engatinhando. Nenhuma das propostas foi pra
 frente, que eu saiba ...

Que me lembro, aquele professor que se apresentou ano passado já tinha
coisas interessantes, ele só não conseguiu se comunicar com os
desenvolvedores por falta de traquejo intercultural...


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7344  gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico André Volpato




Leandro DUTRA escreveu:

  2008/10/24 Andr Volpato [EMAIL PROTECTED]:
  
  
Bom, agora falando sobre o que eu considero mais importante:  muito
difcil voc conseguir obter bons resultados rodando em um notebook, com
apenas 800Mhz por core.

  
  
At que ponto a velocidade do processador influi?  Na minha
experincia, a quantidade e velocidade de memria disponvel,
inclusive os vrios nveis de cache e tanto memria voltil quanto de
massa (discos),  muito, mas muito mesmo, mais importante.
  


Em sistemas pequenos, onde as querys cabem na memria, pode ocorrer
muito gargalo de processador, aka 100% de CPU por muito tempo.
Nosso amigo poderia enviar um "dstat" ou similar do servidor pra gente
ter certeza. 
Logicamente, quanto mais discos (rpidos) melhor, mas acho que o ganho
s seria sentido com concorrncia, o que no  o caso.



  
  
PS: Sobre os auto-tunnings, apesar do enorme esforo da comunidade,
creio que ainda estamos engatinhando. Nenhuma das propostas foi pra
frente, que eu saiba ...

  
  
Que me lembro, aquele professor que se apresentou ano passado j tinha
coisas interessantes, ele s no conseguiu se comunicar com os
desenvolvedores por falta de traquejo intercultural...


Sim, eu vi a palestra e tambm achei interessante. Mas vejo o esforo
desse professor se tornar no mximo um contrib, nada que entre no core.

Pensando alto, lembrando do comentrio do Alexandre na palestra de
replicao...
A entramos na velha questo tostines aplicada a manuteno do
PostgreSQL: 
Faltam parmetros de ajuste fino porque poucos se importam, ou existem
poucos que se importam porque faltam parmetros de ajuste fino ?
Bah, era quase isso...

-- 

[]s, ACV


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico Leandro DUTRA
2008/10/24 André Volpato [EMAIL PROTECTED]:
 Sim, eu vi a palestra e também achei interessante. Mas vejo o esforço desse
 professor se tornar no máximo um contrib, nada que entre no core.

Por quê?  Se ele ou algum colaborador conseguirem se colocar no PGDG...

Eu mesmo gostaria de fazer essa intermediação, se tivesse condições.
Hoje, não tenho.


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7344  gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico André Volpato




Leandro DUTRA escreveu:

  2008/10/24 Andr Volpato [EMAIL PROTECTED]:
  
  
Sim, eu vi a palestra e tambm achei interessante. Mas vejo o esforo desse
professor se tornar no mximo um contrib, nada que entre no core.

  
  
Por qu?  Se ele ou algum colaborador conseguirem se colocar no PGDG...

Eu mesmo gostaria de fazer essa intermediao, se tivesse condies.
Hoje, no tenho.


Na verdade eu no vi o pessoal se animar muito com idias de auto configurao, ento o problema maior  convencer os mais conservadores do PGDG.
Eu particularmente acho interessante um auto-tunning baseado no hardware, quantidade de memria, discos, cpu. E tambm no tipo de aplicao.

No quero me estender muito aqui, j que esta thread j foi desviada vrias vezes.. :)


-- 

[]s, ACV


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico Leandro DUTRA
2008/10/24 André Volpato [EMAIL PROTECTED]:
 Na verdade eu não vi o pessoal se animar muito com idéias de auto
 configuração, então o problema maior é convencer os mais conservadores do
 PGDG.

Aí é que você — e a torcida do Corinthians — se engana.

A questão não é falta de interesse, nem conservadorismo; embora
conservadorismo seja altamente desejável em mantenedores de SGBDs.

É simples falta de comunicação.  O cara está preocupado com bits e
bytes, e você chega com um negócio de outro mundo.  Tem de se
explicar, e isso tem de ser feito com certa habilidade.  Eu e Euler
apresentamos um /Hacker Talk/ sobre isso no II PgConBR (2008-09).


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7344  gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico André Volpato




Leandro DUTRA escreveu:

  2008/10/24 André Volpato [EMAIL PROTECTED]:
  
  
Na verdade eu não vi o pessoal se animar muito com idéias de auto
configuração, então o problema maior é convencer os mais conservadores do
PGDG.

  
  
Aí é que você — e a torcida do Corinthians — se engana.
  

Me incluo nessa... :-P


  
A questão não é falta de interesse, nem conservadorismo; embora
conservadorismo seja altamente desejável em mantenedores de SGBDs.
  

Sim, concordo. Entre radicais e conservadores o time do PGDG sempre
achou um equilíbrio.
Como a essência do Postgres é conservadora, questões como
compatibilidade e portabilidade tem um peso enorme.
Ah, ainda bem! :-)


  
É simples falta de comunicação.  O cara está preocupado com bits e
bytes, e você chega com um negócio de outro mundo.  Tem de se
explicar, e isso tem de ser feito com certa habilidade.  Eu e Euler
apresentamos um /Hacker Talk/ sobre isso no II PgConBR (2008-09).
  


Muitas vezes vejo gente tentando convencer o PGDG, nem sempre com
sucesso.
Foi o caso daquela thread que o Guedes mandou, mesmo com argumentos bem
fundamentados e boa comunicação não se consegue convencer a todos.


-- 

[]´s, ACV



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico Leandro DUTRA
2008/10/24 André Volpato [EMAIL PROTECTED]:
 Muitas vezes vejo gente tentando convencer o PGDG, nem sempre com sucesso.
 Foi o caso daquela thread que o Guedes mandou, mesmo com argumentos bem
 fundamentados e boa comunicação não se consegue convencer a todos.

Uai, não enxerguei isso.

Será que lemos as mesmas mensagens?  O que estou lendo é uma discussão
super-produtiva onde não se aceitam as aparências, mas vai-se fundo no
problema...


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7344  gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico André Volpato




Leandro DUTRA escreveu:

  2008/10/24 Andr Volpato [EMAIL PROTECTED]:
  
  
Muitas vezes vejo gente tentando convencer o PGDG, nem sempre com sucesso.
Foi o caso daquela thread que o Guedes mandou, mesmo com argumentos bem
fundamentados e boa comunicao no se consegue convencer a todos.

  
  
Uai, no enxerguei isso.

Ser que lemos as mesmas mensagens?  O que estou lendo  uma discusso
super-produtiva onde no se aceitam as aparncias, mas vai-se fundo no
problema...


Super produtiva, sim, concordo. 
Tomara que alguma coisa dessas mudanas entre no core, mas pelo jeito
ainda demora um pouco.

-- 

[]s, ACV


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico Leandro DUTRA
2008/10/24 André Volpato [EMAIL PROTECTED]:
 Tomara que alguma coisa dessas mudanças entre no core, mas pelo jeito ainda
 demora um pouco.

Essa é a beleza.  Sem pressa, com qualidade.


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7344  gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico Euler Taveira de Oliveira
Leandro DUTRA escreveu:
 2008/10/24 Sergio Medeiros Santi [EMAIL PROTECTED]:
 De vez em quando é bom fazer mexer os aguá-pes. Acabei achando o material de
 um tocaio bem interessante. Parece que algo está mesmo por acontecer.
 
 Tocaio?  Qu'est-ce que c'est ça ?
 
 
 Dêem uma olhada em
 http://www.inf.ufsc.br/erbd2008/palestras/sergio/Sergio.ppt e em
 
 Foi o gajo que apresentou isso ano passado no I PgConBR (2007-12)?  Se
 sim, será que ele já conseguiu se apresentar ao PGDG?  Ele teve no
 passado alguns problemas de comunicação intercultural...
 
 
A idéia dele não foi para frente mas outra pessoa implementou a mesma
coisa de uma maneira menos invasiva (utilizando hooks). É um projeto [1]
 a parte mas que precisa ser lapidado. (Infelizmente eu não tenho tempo
para tal façanha).

[1] http://pgfoundry.org/projects/pgadviser/


-- 
  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


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico Euler Taveira de Oliveira
Sergio Medeiros Santi escreveu:

 Talvez o que esteja ocorrendo é
 algo que acontece frequentemente conhecido como soberba, onde as
 pessoas formadoras de opinião e que podem influir positivamente não o
 fazem, simplesmente porque não tem tempo de ouvir suas comunidades.
 
[Não sei se você está dirigindo esta última frase a minha pessoa mas...]

(i) em nenhum momento eu deixei de fornecer informações ao colega;
(ii) eu ouço esta comunidade tanto é verdade que várias correções de
erros e melhorias surgiram de idéias discutidas aqui;
(iii) eu _não_ sou financiado por nenhuma empresa que trabalha com
PostgreSQL e, se fosse, talvez poderia me dedicar mais a funcionalidades
interessantes do ponto de vista do usuário;
(iv) se o tal auto-tuning fosse fácil de fazer com certeza ele já
estaria disponível;
(v) não há fórmula mágica para tuning (vejo que pela recorrência do tema
na lista talvez alguns dos gurus palestrantes pensassem em palestras
sobre o tema nas próximas conferências -- Ike-san?).

Voltando a discussão inicial ...


-- 
  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


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-24 Por tôpico Euler Taveira de Oliveira
Fabrízio de Royes Mello escreveu:
 Euler Taveira de Oliveira escreveu:
 Sim. Sem isso você está encorajando o PostgreSQL a excluir alguns
 possíveis caminhos que o planejador pode percorrer por questões de pouca
 memória.

 E quais são esses *possíveis caminhos*??? Quais parâmetros interferem???
 
Os caminhos são diversos. Os parâmetros que interferem estão nas seções
'Resource Usage' (Memory) e 'Query Tuning'.

 
 Não, estou me referindo a cache do *SO*; a do PostgreSQL se perde em um
 reínicio do serviço.

 Apesar de eu não acreditar que isso vá fazer diferença vou fazer o que 
 recomendas e refazer os testes...
 
Faz sim.

 Que escolhas dependem de que parâmetros??? Isso é muito subjetivo... 
 terias como exemplificar isso?
 
 Tipo se alterar parametro tal aumenta ou diminui o tempo de 
 planejamento, ou utiliza uma estratégia diferente de planejamento, etc...
 
Isso é tema para um livro. ;) Para que você consiga otimizar consultas
SQL, você deve conhecer os algoritmos de junção (hash join, merge join,
nested loop), algoritmos de agregação, funcionamento de índices
(inclusive os funcionais e parciais) e *principalmente* o modelo de
custo utilizado pelo PostgreSQL (src/backend/optimizer/path/costsize.c
pode ser um bom começo).
Se houvesse uma receita de bolo com certeza alguém já tinha escrito. Há
livros que tratam desse assunto mas nenhum específico ao PostgreSQL. Tem
um livro que trata do assunto de maneira genérica e que eu
particularmente recomendo (SQL Tuning, Dan Tow). Ele aborda alguns dos
pontos que falei acima.

Apesar de já ser tarde, eu vou exemplificar a dinâmica do modelo de
custo do PostgreSQL. Ao alterar o parâmetro random_page_cost, o
algoritmo de junção interna foi alterado. Por quê? Justamente porque ao
favorecer a busca sequencial (diminuindo o random_page_cost) fizemos com
o que o custo do 'merge join' fique mais vantajoso do que um 'hash join'.


regression=# set random_page_cost to 2.5;
SET
regression=# explain analyze select count(*) from tenk1 a inner join
tenk1 b on (a.unique1=b.thousand) where b.unique2  1000 limit 300;
 QUERY PLAN


 Limit  (cost=1330.41..1330.42 rows=1 width=0) (actual
time=163.743..163.748 rows=1 loops=1)
   -  Aggregate  (cost=1330.41..1330.42 rows=1 width=0) (actual
time=163.736..163.737 rows=1 loops=1)
 -  Hash Join  (cost=605.00..1307.78 rows=9052 width=0) (actual
time=66.528..148.729 rows=8999 loops=1)
   Hash Cond: (b.thousand = a.unique1)
   -  Seq Scan on tenk1 b  (cost=0.00..470.00 rows=9052
width=4) (actual time=1.331..21.611 rows=8999 loops=1)
 Filter: (unique2  1000)
   -  Hash  (cost=445.00..445.00 rows=1 width=4)
(actual time=65.043..65.043 rows=1 loops=1)
 -  Seq Scan on tenk1 a  (cost=0.00..445.00
rows=1 width=4) (actual time=0.013..35.482 rows=1 loops=1)
 Total runtime: 163.979 ms
(9 registros)

regression=# set random_page_cost to 2.2;
SET
regression=# explain analyze select count(*) from tenk1 a inner join
tenk1 b on (a.unique1=b.thousand) where b.unique2  1000 limit 300;

QUERY PLAN

--
 Limit  (cost=1234.92..1234.93 rows=1 width=0) (actual
time=143.700..143.705 rows=1 loops=1)
   -  Aggregate  (cost=1234.92..1234.93 rows=1 width=0) (actual
time=143.692..143.693 rows=1 loops=1)
 -  Merge Join  (cost=1.02..1212.29 rows=9052 width=0) (actual
time=0.175..128.241 rows=8999 loops=1)
   Merge Cond: (a.unique1 = b.thousand)
   -  Index Scan using tenk1_unique1 on tenk1 a
(cost=0.00..961.94 rows=1 width=4) (actual time=0.091..3.583
rows=1001 loops=1)
   -  Index Scan using tenk1_thous_tenthous on tenk1 b
(cost=0.00..1000.24 rows=9052 width=4) (actual time=0.059..76.166
rows=8999 loops=1)
 Filter: (b.unique2  1000)
 Total runtime: 143.972 ms
(8 registros)


-- 
  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


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-23 Por tôpico Mozart Hasse
Euler,

 O valor padr�o para este par�metro � med�ocre mesmo. J� houve
v�rias
 discuss�es sobre aumentar este valor para um valor mais condizente com a
 realidade mas por falta de provas (aka testes) -- que isso n�o
aumentar�
 o tempo de planejamento para ter o mesmo benef�cio -- ainda n�o
 decidiram se v�o aument�-lo na pr�xima vers�o.

Que provas eu preciso montar ? Uma base com tabelas de 5000, 3 e 70
registros, alguns índices e uma dúzia de querys 60 vezes mais lentas do que
uma base com esse parâmetro preenchido com valores decentes ?

 Deixe seu default_statistics_target=1000 e veja se melhora.

 N�o fa�a isso! As consultas que utilizam uma coluna com o par�metro
com
 esse valor v�o demorar bem mais para serem planejadas desnecessariamente
 sem falar em mais trabalho para o ANALYZE. Dependendo da distribui��o
 dos valores da coluna e da quantidade de valores distintos valores at�
 no m�ximo 150 ou 200 s�o suficientes; normalmente, utilize entre 30 e
 100 para tabelas maiores *e* que n�o estejam estimando o n�mero de
 tuplas retornadas pr�ximo do valor exato (um EXPLAIN ANALYZE pode te
 dizer isso).

Discordo.

O custo de calcular as estatísticas numa tabela grande até pode parecer
*relativamente* alto, porém calcular essa informação extra nem se compara
com o estrago causado por um TABLE SCAN numa tabela com 1.000.000 de registros
ou mais. 
Não é nada incomum (aliás, chega a ser frequente) na minha aplicação eu
ter 2 ou mais planos ótimos para o mesmo SELECT, sendo que o que deve ser
escolhido depende da distribuição de dados na tabela para um determinado
valor. 

Exemplo: consultar o histórico de estoque (usando a mesmíssima query) de um
parafuso movimentado dúzias de vezes por dia exige um plano (por ex. merge ou
hash join com algum índice de outra tabela) completamente diferente de uma
máquina vendida uma vez por mês (onde provavelmente o plano ideal teria
nested loops). 
Se o Postgres cair na besteira de fazer nested loops com o parafuso ou
merge/hash join com a máquina, era uma vez servidor. Como no meu caso tenho
centenas de consultas para cada gravação, não estou nem aí para quanto
tempo ele leve atualizando quantos índices e estatísticas ele conseguir
manter. Já criei dúzias de índices nas tabelas grandes exatamente para que
uma dessas consultas arrasa-quarteirão nunca aconteça.
Falando em estatísticas, já que me parece óbvio que tabelas grandes
precisem de mais estatísticas, geralmente proporcionais ao número de
registros, por que raios eu preciso informar valores absolutos ao invés de
percentuais? Algo contra o super prático e intuitivo SAMPLING RATE do SQL
Server?

Mozart Hasse


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-23 Por tôpico Leandro DUTRA
2008/10/23 Mozart Hasse [EMAIL PROTECTED]:
 O valor padr�o para este par�metro � med�ocre mesmo. J� houve

Herr Haße, tua mensagem veio em BASE64 com codificação errada...


 v�rias
 discuss�es sobre aumentar este valor para um valor mais condizente com a
 realidade mas por falta de provas (aka testes) -- que isso n�o
 aumentar�
 o tempo de planejamento para ter o mesmo benef�cio -- ainda n�o
 decidiram se v�o aument�-lo na pr�xima vers�o.

 Que provas eu preciso montar ? Uma base com tabelas de 5000, 3 e 70
 registros, alguns índices e uma dúzia de querys 60 vezes mais lentas do que
 uma base com esse parâmetro preenchido com valores decentes ?

Pode começar por aí, desde que esteja bem documentado...

A questão é, a partir de provas tais, achar um equilíbrio entre as
necessidades de pequenos sistemas embutidos e grandes sistemas
corporativos.


 O custo de calcular as estatísticas numa tabela grande até pode parecer
 *relativamente* alto, porém calcular essa informação extra nem se compara
 com o estrago causado por um TABLE SCAN numa tabela com 1.000.000 de registros
 ou mais.

A questão é se vale jogar o valor geral para o alto, ou dar um aumento
moderado geral e só jogar para bem mais alto determinadas tabelas.  E
se é necessário 1000 como você propõe, ou no máximo 300 como o Euler
propôs.

Conversando a gente se entende...


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7344  gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-23 Por tôpico Mozart Hasse
Grande Dutra,

  Que provas eu preciso montar ? Uma base com tabelas de 5000, 3 e
70
  registros, alguns índices e uma dúzia de querys 60 vezes mais lentas do
que
  uma base com esse parâmetro preenchido com valores decentes ?
 
 Pode começar por aí, desde que esteja bem documentado...

Bom, basta à cúpula do Postgres definir um padrão para esse tipo de
informação 
então. Enquanto ficar no julgamento subjetivo valor nenhum vai mudar.

 A questão é, a partir de provas tais, achar um equilíbrio entre as
 necessidades de pequenos sistemas embutidos e grandes sistemas
 corporativos.

Bom, se temos diversos tipos de uso para o Postgres, cada qual com suas
peculiaridades,
por que não criar logo um arquivo de configuração para cada perfil?
Imaginando um mundo 
melhor: o sujeito responderia 3 ou 4 perguntas sobre seu hardware, 1 ou 2
sobre o
uso mais frequente do servidor e o instalador já coloca no lugar um arquivo
.config bem
próximo do que ele precisa. Duas ou 3 perguntas na hora de criar o banco de
dados (resultando 
num monte de SETs que usam essas perguntas e a configuração do servidor para
chegar num 
conjunto de opções decente) também facilitariam muito as coisas para o
DBA.
Claro, isso ainda fica meio longe do mundo perfeito do servidor
auto-configurável, mas
tentar ir nessa direção (ao menos para ir para o mesmo lado dos que estão
quase lá) não 
seria nada mal...

  O custo de calcular as estatísticas numa tabela grande até pode parecer
  *relativamente* alto, porém calcular essa informação extra nem se
compara
  com o estrago causado por um TABLE SCAN numa tabela com 1.000.000 de
registros
  ou mais.
 
 A questão é se vale jogar o valor geral para o alto, ou dar um aumento
 moderado geral e só jogar para bem mais alto determinadas tabelas.  E
 se é necessário 1000 como você propõe, ou no máximo 300 como o Euler
 propôs.

1000 numa tabela pequena gera um pouco de desperdício, mas não é muito, já
que 
a tabela é pequena e o processamento sobre ela não é grande coisa. Agora,
300 numa tabela grande tem boa chance de ser um desastre.

Bom, estamos de novo em julgamentos subjetivos, tentemos colocar alguma
objetividade:
Já que as discussões anteriores sobre aumentar esse valor acabaram por falta
de provas de que um novo valor seria mais interessante, mesmo que contrário
aos que já testaram com valores maiores e encontraram melhores resultados,
que tal propor a essas mentes tão convictas que montem um ambiente em que
esses valores proporcionem um desempenho tão maravilhoso quando comparado ao
resultado de nossos experimentos?
O ônus da prova cabe a quem afirma. Quem afirmou que 10 é um bom valor a
ponto de não mudá-lo nem atendendo a pedidos, que prove.


Mozart Hasse


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-23 Por tôpico Euler Taveira de Oliveira
Mozart Hasse escreveu:

 Que provas eu preciso montar ? Uma base com tabelas de 5000, 3 e 70
 registros, alguns índices e uma dúzia de querys 60 vezes mais lentas do que
 uma base com esse parâmetro preenchido com valores decentes ?
 
Sim. Talvez uma tabela com centenas de linhas e outra com milhões de
linhas também.

 Deixe seu default_statistics_target=1000 e veja se melhora.
 
 N�o fa�a isso! As consultas que utilizam uma coluna com o par�metro
 com
 esse valor v�o demorar bem mais para serem planejadas desnecessariamente
 sem falar em mais trabalho para o ANALYZE. Dependendo da distribui��o
 dos valores da coluna e da quantidade de valores distintos valores at�
 no m�ximo 150 ou 200 s�o suficientes; normalmente, utilize entre 30 e
 100 para tabelas maiores *e* que n�o estejam estimando o n�mero de
 tuplas retornadas pr�ximo do valor exato (um EXPLAIN ANALYZE pode te
 dizer isso).
 
 Discordo.
 
 O custo de calcular as estatísticas numa tabela grande até pode parecer
 *relativamente* alto, porém calcular essa informação extra nem se compara
 com o estrago causado por um TABLE SCAN numa tabela com 1.000.000 de registros
 ou mais. 
Eu falei acima em tempo de *planejamento* em nenhum momento mencionei
execução. É claro que uma coisa puxa a outra. Para que utilizar o valor
500 se com 30 é a mesma coisa (custa menos para planejar)?

 Não é nada incomum (aliás, chega a ser frequente) na minha aplicação eu
 ter 2 ou mais planos ótimos para o mesmo SELECT, sendo que o que deve ser
 escolhido depende da distribuição de dados na tabela para um determinado
 valor. 
 
 Exemplo: consultar o histórico de estoque (usando a mesmíssima query) de um
 parafuso movimentado dúzias de vezes por dia exige um plano (por ex. merge ou
 hash join com algum índice de outra tabela) completamente diferente de uma
 máquina vendida uma vez por mês (onde provavelmente o plano ideal teria
 nested loops). 
É exatamente para isso que serve o histograma nas estatísticas. Mas ele
armazena somente uma amostra do histograma (que pode ser grande); e
estatisticamente você não precisa de valores altos. Se quiser saber como
o PostgreSQL faz isso é só olhar o artigo do Chaudhuri [1] ou uma breve
explicação em backend/commands/analyze.c:~1526.

[1] ftp://ftp.research.microsoft.com/users/autoadmin/histogram_conf.pdf


-- 
  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


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-23 Por tôpico George
Bom, quero contar minha história ...quem sabe posso ajudar ou atrapalhar 


Tive uma tabela na base de dados que faz a seguinte conta

Numero de clientes.. : 1089
Numero médio de equipamentos  por cliente : 4
Numero de eventos que gera cada equipamento por hora:  8 (eventos gerados 
via IP)
Numero de dias acumulado no banco : 1 ano

Tabela Eventos = 1089 *4 * (8*24*365)  =  305.268. 480

Que loucura !

Comecei a ter muitos problemas em relação a consultas destes eventos, porque 
todos os clientes internos e externos a acessavam e ainda bem que não tinha 
update ou delete desta tabela ! U !  Claro tentei várias soluções e 
nada ! Continuava lento que dói.

Tive a idéia infeliz de .

1. Criar um esquema de eventos
2. Mover a tabela eventos para este schema (cli, eqp, dta, eve, dta, hms).
3. Criar tabelas (cli_XX) de herança da tabela de eventos no schema 
eventos
4. Criar tabelas (eqp_XX) de herança das tabelas cli_XX no schema
5. Criar dinamicamente as tabelas de herança no cadastro de clientes e 
equipamentos através de trigger;
6. Alterar todas as funções e trigger para realizar tratamento 
dinamicamente.
7. Alterar a regra de negócio para o banco de dados em relaçãoa eventos.
8. Outras coisitas mais

Resultado ! Consegui atender a necessidade do cliente em questão a 
performance e não tive mais problemas.

Hoje em outro cliente estou desenvolvendo esta mesma regra para um sistema 
de Gestão de Estoque e Financeiro (Saldos, extratos...).

PS. Esqueci de dizer que ainda tem 678 clientes que enviam dados via 
telefone (média de 24 eventos dia).



Entendam não sou DBA, mas sim um simples programador.



Grande Dutra,

  Que provas eu preciso montar ? Uma base com tabelas de 5000, 3 e
70
  registros, alguns índices e uma dúzia de querys 60 vezes mais lentas do
que
  uma base com esse parâmetro preenchido com valores decentes ?

 Pode começar por aí, desde que esteja bem documentado...

Bom, basta à cúpula do Postgres definir um padrão para esse tipo de
informação
então. Enquanto ficar no julgamento subjetivo valor nenhum vai mudar.

 A questão é, a partir de provas tais, achar um equilíbrio entre as
 necessidades de pequenos sistemas embutidos e grandes sistemas
 corporativos.

Bom, se temos diversos tipos de uso para o Postgres, cada qual com suas
peculiaridades,
por que não criar logo um arquivo de configuração para cada perfil?
Imaginando um mundo
melhor: o sujeito responderia 3 ou 4 perguntas sobre seu hardware, 1 ou 2
sobre o
uso mais frequente do servidor e o instalador já coloca no lugar um arquivo
.config bem
próximo do que ele precisa. Duas ou 3 perguntas na hora de criar o banco de
dados (resultando
num monte de SETs que usam essas perguntas e a configuração do servidor para
chegar num
conjunto de opções decente) também facilitariam muito as coisas para o
DBA.
Claro, isso ainda fica meio longe do mundo perfeito do servidor
auto-configurável, mas
tentar ir nessa direção (ao menos para ir para o mesmo lado dos que estão
quase lá) não
seria nada mal...

  O custo de calcular as estatísticas numa tabela grande até pode parecer
  *relativamente* alto, porém calcular essa informação extra nem se
compara
  com o estrago causado por um TABLE SCAN numa tabela com 1.000.000 de
registros
  ou mais.

 A questão é se vale jogar o valor geral para o alto, ou dar um aumento
 moderado geral e só jogar para bem mais alto determinadas tabelas.  E
 se é necessário 1000 como você propõe, ou no máximo 300 como o Euler
 propôs.

1000 numa tabela pequena gera um pouco de desperdício, mas não é muito, já
que
a tabela é pequena e o processamento sobre ela não é grande coisa. Agora,
300 numa tabela grande tem boa chance de ser um desastre.

Bom, estamos de novo em julgamentos subjetivos, tentemos colocar alguma
objetividade:
Já que as discussões anteriores sobre aumentar esse valor acabaram por falta
de provas de que um novo valor seria mais interessante, mesmo que contrário
aos que já testaram com valores maiores e encontraram melhores resultados,
que tal propor a essas mentes tão convictas que montem um ambiente em que
esses valores proporcionem um desempenho tão maravilhoso quando comparado ao
resultado de nossos experimentos?
O ônus da prova cabe a quem afirma. Quem afirmou que 10 é um bom valor a
ponto de não mudá-lo nem atendendo a pedidos, que prove.


Mozart Hasse


___
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


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-23 Por tôpico Leandro DUTRA
2008/10/23 George [EMAIL PROTECTED]:
 1. Criar um esquema de eventos
 2. Mover a tabela eventos para este schema (cli, eqp, dta, eve, dta, hms).
 3. Criar tabelas (cli_XX) de herança da tabela de eventos no schema
 eventos
 4. Criar tabelas (eqp_XX) de herança das tabelas cli_XX no schema
 5. Criar dinamicamente as tabelas de herança no cadastro de clientes e
 equipamentos através de trigger;
 6. Alterar todas as funções e trigger para realizar tratamento
 dinamicamente.
 7. Alterar a regra de negócio para o banco de dados em relaçãoa eventos.

Impressão minha ou você reimplementou particionamento de tabelas na raça?


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7344  gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-23 Por tôpico George
Não, usei inherits !

Exemplo

Create tabpai1 (cod bigint, tip char(3), cba varchar(100));
Create tabfil1 () inherits (tabpai1);
Create tabfil2 () inherits (tabpai2);

Insert into tabfil1 (1234456789,'001',' 
AAABACADAEAFAGAHAJAIAKALAPANAGAFARTACADAEAGA');
Insert into tabfil1 (1234456789,'002',' 
AAABACADAEAFAGAHAJAIAKALAPANAGAFARTACADAEAGA');

Veja os resultados de cada tabela.

No meu caso na tabela cliente tenho uma trigger que verifica se existe a 
tabela e crio dinamicamente no schema eventos a tabela CLI_X. O X é 
o código do cliente.

Exemplo da parte da trigger:

if not exists(select tablename from pg_tables where schemaname = 'eventos' 
and  tablename = trim(cli||new.cod::char(5)) then
v_exec = 'Create table trim(cli||new.cod::varchar) () inherits (eventos)';
execute v_exec;
end if;

Por isso quando entra no sistema cliente dependendo do código irá saber qual 
tabela chamar. Imagine isso no cadastro de produtos e vc criando uma tabela 
de extrato para cada produto e esta mesma tabela atualziando seu saldo !

Espero ter ajudado.

Abraços

George






- Original Message - 
From: Leandro DUTRA [EMAIL PROTECTED]
To: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br
Sent: Thursday, October 23, 2008 6:19 PM
Subject: Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE


2008/10/23 George [EMAIL PROTECTED]:
 1. Criar um esquema de eventos
 2. Mover a tabela eventos para este schema (cli, eqp, dta, eve, dta, hms).
 3. Criar tabelas (cli_XX) de herança da tabela de eventos no schema
 eventos
 4. Criar tabelas (eqp_XX) de herança das tabelas cli_XX no schema
 5. Criar dinamicamente as tabelas de herança no cadastro de clientes e
 equipamentos através de trigger;
 6. Alterar todas as funções e trigger para realizar tratamento
 dinamicamente.
 7. Alterar a regra de negócio para o banco de dados em relaçãoa eventos.

Impressão minha ou você reimplementou particionamento de tabelas na raça?


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7344  gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:[EMAIL PROTECTED]
___
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


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-22 Por tôpico Mozart Hasse
Fabrízio,

O otimizador do Postgres costuma fazer péssimas escolhas em tabelas
grandes quando o default_statistics_target é muito baixo. Cansei de ver ele 
apanhar mais do que cão sem dono do SQL Server por escolher planos ridículos
quando deixei esse valor padrão. 

Deixe seu default_statistics_target=1000 e veja se melhora.

Atenciosamente,

Mozart Hasse


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-22 Por tôpico Euler Taveira de Oliveira
Mozart Hasse escreveu:

 O otimizador do Postgres costuma fazer péssimas escolhas em tabelas
 grandes quando o default_statistics_target é muito baixo. Cansei de ver ele 
 apanhar mais do que cão sem dono do SQL Server por escolher planos ridículos
 quando deixei esse valor padrão. 
 
O valor padrão para este parâmetro é medíocre mesmo. Já houve várias
discussões sobre aumentar este valor para um valor mais condizente com a
realidade mas por falta de provas (aka testes) -- que isso não aumentará
o tempo de planejamento para ter o mesmo benefício -- ainda não
decidiram se vão aumentá-lo na próxima versão.

 Deixe seu default_statistics_target=1000 e veja se melhora.
 
Não faça isso! As consultas que utilizam uma coluna com o parâmetro com
esse valor vão demorar bem mais para serem planejadas desnecessariamente
sem falar em mais trabalho para o ANALYZE. Dependendo da distribuição
dos valores da coluna e da quantidade de valores distintos valores até
no máximo 150 ou 200 são suficientes; normalmente, utilize entre 30 e
100 para tabelas maiores *e* que não estejam estimando o número de
tuplas retornadas próximo do valor exato (um EXPLAIN ANALYZE pode te
dizer isso).


-- 
  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


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-22 Por tôpico Leandro DUTRA
2008/10/22 Euler Taveira de Oliveira [EMAIL PROTECTED]:
 Mozart Hasse escreveu:
 Deixe seu default_statistics_target=1000 e veja se melhora.

 Não faça isso! As consultas que utilizam uma coluna com o parâmetro com
 esse valor vão demorar bem mais para serem planejadas desnecessariamente
 sem falar em mais trabalho para o ANALYZE. Dependendo da distribuição
 dos valores da coluna e da quantidade de valores distintos valores até
 no máximo 150 ou 200 são suficientes; normalmente, utilize entre 30 e
 100 para tabelas maiores *e* que não estejam estimando o número de
 tuplas retornadas próximo do valor exato (um EXPLAIN ANALYZE pode te
 dizer isso).

Euler é cultura!  :-)

E o Mozart levanta um casos interessantes.


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7344  gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:[EMAIL PROTECTED]
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Problema Estranho com Query Lentas e ANALYZE

2008-10-21 Por tôpico Jota
Olá,

Quando você seta para -1 você esta avisando o analyze para ele usar o
valor padrão para default_statistics_target=10.

Eu nunca tive nenhum problema parecido. Mas me parece no mínimo
interessante esta sua questão. Assim que tiver um tempinho vou tentar
simular alguma coisa do tipo.

Você tentou aumentar os valores do default_statistics_target para um
valor maior destas colunas, como, por exemplo 20 ou 30 e refazer os
testes com as consultas e verificar o comportamento das consultas?

Estas suas colunas que estavam com valor 0 desabilitado, como é a
distribuição dos dados?

E qual versão do PostgreSQL você está utilizando?

[]s



2008/10/21 Fabrízio de Royes Mello [EMAIL PROTECTED]:
 Caros Colegas,

 Há algum tempo estava analisando uma base de dados e verifiquei que
 diversas colunas das tabelas dessa base estavam com a coleta de
 estatisticas desabilitada. Na saida de um dump da estrutura da base
 encontrei algo como:

 ALTER TABLE tabela ALTER COLUMN coluna SET STATISTICS 0;

 Essa desativação não estava em TODAS colunas das tabelas da base de
 dados, verifiquei isso facilmente com alguns SQLs, dentre eles:

 SELECT * FROM pg_attribute WHERE attstattarget = 0 AND attnum  0;

 Fiquei surpreso que essas estatisticas estivessem desabilitadas então
 resolvi logo habilitadas (colocando o valor -1 pra buscar da
 configuração do postgresql.conf conforme documentação oficial) mas o que
 fiquei mais surpreso ainda foi com o resultado... foi desastroso pois
 degradou a performance das queries... e naquele final de semana,
 oportunamente, foi executado um REINDEX DATABASE e após um VACUUM
 ANALYZE, este último é executado diariamente...

 Verifiquei todas configurações (shared_mem, work_mem,
 effetive_cache_size, etc...) para ver se conseguiria mudar o resultado
 pois uma simples consulta que demorava de ~3seg começou a demorar
 ~907seg... muita diferença não é mesmo...

 Com isso fui fazer uns EXPLAINs das queries no servidor que habilitei as
 estatisticas para comparar com outro onde as estatisticas ainda estavam
 desabilitadas e, É ÓBVIO, deu diferença no resultado dos EXPLAINs... até
 ai sem problemas, o problema é que com a estatisticas HABILITADAS ficou
 MUITO PIOR... será que não deveria ficar melhor??

 A diferença significativa no resultado dos EXPLAINs é que na base que as
 estatisticas estavam desabilitadas no resultado tinha um BITMAP HEAP
 SCAN resultando num custo bem menor que o da base que as estatisticas
 estavam habilitadas o qual não fazia esse bitmap_scan, fazendo um
 index_scan normal... e não se preocupem que verifiquei e NOS 2
 SERVIDORES as configurações dos métodos do planejador estão iguais:

 enable_bitmapscan = on
 enable_hashagg = on
 enable_hashjoin = on
 enable_indexscan = on
 enable_mergejoin = on
 enable_nestloop = on
 enable_seqscan = off
 enable_sort = on
 enable_tidscan = off



 Com isso tudo, sem entender nada e ter levado uma surra do elefantinho
 resolvi tomar a seguinte medida DRÁSTICA:

 1) Desabilitei as COLUNAS que assim estavam antes do meu ato heróico
 de habilitalas (deixei a base de dados no estado original)
 2) Rodei um DELETE na pg_statistic... isso mesmo... um DELETE nela...
 3) Rodei um ANALYZE na base de dados...

 Meus amigos adivinhem o resultado... as queries voltaram ao normal...
 exatamente como eram antes... tudo rápido q é uma beleza... a query que
 demorava ~907seg antes desse procedimento voltou a demorar apenas ~3seg...

 Agora gostaria de saber se algum dos colegas sabe o porque desse
 comportamento, no mínimo estranho e/ou duvidoso, do planejador do nosso
 amigo PostgreSQL.



 Cordialmente,

 --
 Fabrízio de Royes Mello
 Coordenador Desenvolvimento de Software
 [EMAIL PROTECTED]
 DBSeller Informática Ltda. - http://www.dbseller.com.br
 (51) 3076-5101

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral




-- 
João Paulo
www.dextra.com.br/postgres
PostgreSQL
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral