Postgresql: O que o valor default_statistics_target realmente significa?


11

Aumentar o valor default_statistics_target pode acelerar seu banco de dados, especialmente após a análise ....

Lendo este artigo, vejo que https://discuss.pivotal.io/hc/en-us/articles/201581033-default-statistics-target-Explained

(...) em curto e em termos básicos, esse parâmetro controla a maneira como as estatísticas são coletadas, com o valor 1 sendo a estatística menos estimada / precisa e o valor 1000 sendo a estatística mais precisa, obviamente com a despesa de tempo / recursos (CPU, memória etc) / espaço. Normalmente, o valor padrão é suficiente para obter um plano preciso, mas se você tiver uma distribuição de dados complexa / ou se uma coluna for referenciada na consulta com bastante frequência, a configuração de um valor mais alto poderá ajudar a obter melhores estatísticas sobre a tabela e, portanto, uma melhor plano para o otimizador executar.

É uma boa explicação, mas, por exemplo, se eu definir default_statistics_target = 1000, o que 1000 realmente significa? São 1000 kilobytes de estatísticas sendo geradas? ou talvez sejam 1000 linhas das tabelas analisadas? Talvez seja 1000 colunas? ou talvez 1000 segundos para cada análise ...

Então, minha pergunta é como esse número está realmente afetando a análise ou o planejador de consultas? Obviamente entendo que default_statistics_target = 1000 terá mais tempo que 100, para executar a análise, e que 1000 gerará estatísticas melhores ...

Respostas:


16

Amostra de 300 * default_statistics_targetlinhas de cada tabela. Ele usará essa amostra para determinar default_statistics_targetos valores mais comuns para armazenar nessa matriz e os default_statistics_targetlimites do histograma para armazenar nessa matriz. Além de algumas outras estatísticas escalares, como o número de valores distintos.

O multiplicador 300 foi escolhido porque alguma teoria estatística diz que é quantas você precisa amostrar por cada histograma vinculado que deseja calcular, para que os limites do histograma amostrados tenham um nível aceitável de incerteza.

A lista de valores mais comum é usada para ajudar o planejador a prever a seletividade de expressões de igualdade, como where state='CA'. Os limites do histograma são usados ​​para ajudar o planejador a prever a seletividade das expressões de desigualdade ou intervalo, comowhere income between 55000 and 64000


6
Para aqueles que estão interessados, este número 300 magia é explicado no código-fonte do postgres aqui eo trabalho de pesquisa referenciado no existe aqui
maahl
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.