O catálogo pg_statistic armazena dados estatísticos sobre o conteúdo do banco de dados. As entradas são criadas pelo ANALYZE, e posteriormente usadas pelo planejador de consultas. Note que todos os dados estatísticos são inerentemente aproximados, mesmo supondo que estejam atualizados.
Normalmente, há uma entrada, com
stainherit = false,
para cada coluna da tabela que foi analisada.
Se a tabela tiver filhas de herança ou partições, também será criada
uma segunda entrada com
stainherit = true.
Esta linha representa as estatísticas da coluna na árvore de herança,
ou seja, estatísticas para os dados que se veria com
SELECT ,
enquanto a linha
coluna FROM
tabela*stainherit = false
representa os resultados de
SELECT .
coluna FROM ONLY
tabela
pg_statistic também armazena
dados estatísticos sobre os valores das expressões de índice.
Elas são descritas como se fossem colunas de dados reais; em
particular, starelid faz referência ao índice.
Entretanto, nenhuma entrada é feita para uma coluna de índice
não-expressão comum, porque seria redundante com a entrada para a
coluna da tabela subjacente.
No momento, as entradas para expressões de índice sempre têm
stainherit = false.
Como podem ser apropriados diferentes tipos de estatísticas para
diferentes tipos de dados, pg_statistic
foi projetado para não assumir muito sobre que tipo de estatísticas
armazena.
Apenas estatísticas extremamente gerais (como nulidade) recebem
colunas dedicadas em pg_statistic.
Todo o resto é armazenado em “encaixes”
(slots), que são grupos de colunas
associadas cujo conteúdo é identificado por um número de código
em uma das colunas do encaixe.
Para obter mais informações veja o arquivo
src/include/catalog/pg_statistic.h.
pg_statistic não deve ser poder
ser lido por todos (public), porque até mesmo
informações estatísticas sobre o conteúdo de uma tabela podem ser
consideradas confidenciais.
(Por exemplo: os valores mínimo e máximo de uma coluna de salário
podem ser bastante interessantes.)
pg_stats é uma visão publicamente legível de
pg_statistic que mostra apenas
informações sobre as tabelas legíveis pelo usuário corrente.
Tabela 52.51. Colunas de pg_statistic
Coluna Tipo de dados Descrição |
|---|
A tabela ou índice que a coluna descrita pertence |
O número da coluna descrita |
Se verdade, as estatísticas incluem valores de tabelas filhas, e não apenas os valores na relação especificada. |
A fração das entradas da coluna que são nulas |
A largura média armazenada, em bytes, das entradas não nulas |
O número de valores de dados não nulos distintos na coluna.
Um valor maior que zero é o número real de valores distintos.
Um valor menor que zero é o negativo de um multiplicador para
o número de linhas na tabela; por exemplo, uma coluna na qual
cerca de 80% dos valores são não nulos, e cada valor não nulo
aparece cerca de duas vezes em média, poderia ser representada
por |
Um número de código que indica o tipo de estatísticas armazenadas
no |
Operador usado para derivar as estatísticas armazenadas no
|
A ordenação usada para derivar as estatísticas armazenadas no
|
Estatísticas numéricas do tipo apropriado para o
|
Valores de dados de coluna do tipo apropriado para o
|