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 [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
