42.27. pg_statistic

O catálogo pg_statistic armazena dados estatísticos sobre o conteúdo do banco de dados. As entradas são criadas pelo comando ANALYZE e depois utilizadas pelo planejador de comandos. Existe uma entrada para cada coluna de tabela que foi analisada. Deve ser observado que todos os dados estatísticos são inerentemente aproximados, mesmo assumindo que estejam atualizados.

O catálogo pg_statistic também armazena dados estatísticos sobre os valores das expressões de índice, que são descritos como se fossem colunas de dados reais; particularmente, starelid referencia o índice. Entretanto, não é criada nenhuma entrada para uma coluna de índice comum que não é uma expressão, uma vez que seria redundante com a coluna da tabela subjacente.

Uma vez que podem ser apropriados tipos de estatística diferentes para tipos de dado diferentes, o catálogo pg_statistic foi projetado para não assumir muita coisa sobre que tipo de estatística será armazenado. Somente estatísticas extremamente gerais (como nulidade) recebem colunas dedicadas em pg_statistic. Tudo mais é armazenado em encaixes (slots), que são grupos de colunas associadas cujo conteúdo é identificado por um código numérico em uma das colunas do encaixe. Para obter informações adicionais deve ser consultado o arquivo src/include/catalog/pg_statistic.h.

O catálogo pg_statistic não deve poder ser visto por todos, uma vez que mesmo informações estatísticas sobre o conteúdo da tabela podem ser consideradas confidenciais (Exemplo: os valores mínimo e máximo da coluna salário podem ser bastante interessantes). pg_stats é uma visão de pg_statistic que pode ser lida por todos, e mostra apenas informações sobre as tabelas que podem ser lidas pelo usuário corrente.

Tabela 42-27. Colunas de pg_statistic

Nome Tipo Referencia Descrição
starelid oid pg_class.oid Tabela ou índice que a coluna descrita pertence
staattnum int2 pg_attribute.attnum Número da coluna descrita
stanullfrac float4   Fração das entradas nulas na coluna
stawidth int4   Largura armazenada média, em bytes, das entradas não-nulas
stadistinct float4   Número de valores de dado não-nulos distintos na coluna. Um valor maior do que zero é o número real de valores distintos. Um valor menor do que zero é o negativo da fração do número de linhas da tabela (por exemplo, uma coluna em que cada valor aparece duas vezes, em média, pode ser representada por stadistinct = -0.5). O valor zero significa que o número de valores distintos é desconhecido.
stakindN int2   Código numérico indicando o tipo de estatística armazenada no N-ésimo "encaixe" da linha de pg_statistic.
staopN oid pg_operator.oid Operador utilizado para derivar as estatísticas armazenadas no N-ésimo "encaixe". Por exemplo, em um encaixe tipo histograma é mostrado o operador < que define a ordem de classificação dos dados.
stanumbersN float4[]   Estatísticas numéricas do tipo apropriado para o N-ésimo "encaixe", ou nulo se o tipo do encaixe não envolve valores numéricos.
stavaluesN anyarray   Valores dos dados da coluna, do tipo apropriado, para o N-ésimo "encaixe", ou nulo se o tipo do encaixe não armazena nenhum valor de dado. Cada valor do elemento da matriz é do tipo de dado específico da coluna, portanto não há como definir o tipo de dado desta coluna de forma mais específica que anyarray.
SourceForge.net Logo CSS válido!