43.31. pg_statistic
Le catalogue pg_statistic stocke des
données statistiques sur le contenu de la base de données. Les
entrées sont créées par
ANALYZE
, puis utilisées par le
planificateur de requêtes. Il y a une entrée pour chaque colonne de
table qui a été analysée. Les données statistiques sont, par
définition des approximations, même si elles sont à jour.
pg_statistic stocke aussi les données
statistiques des valeurs des expressions d'index. Elles sont décrites
comme si elles étaient de vraies colonnes ; en particulier,
starelid
référence l'index.
Néanmoins, aucune entrée n'est effectuée pour une colonne d'index
ordinaire sans expression car cela est redondant avec l'entrée
correspondant à la colonne sous-jacente de la table.
Comme des statistiques différentes peuvent être appropriées pour des
types de données différents, pg_statistic ne fait qu'un minimum de
suppositions sur les types de statistiques qu'il stocke. Seules des
statistiques extrêmement générales (comme les valeurs NULL) ont des
colonnes dédiées. Tout le reste est stocké dans des
« connecteurs », groupes de
colonnes associées dont le contenu est identifié par un numéro de
code dans l'une des colonnes du connecteur. Pour plus d'information,
voir src/include/catalog/pg_statistic.h.
pg_statistic ne doit pas être lisible
par le public, car même les données statistiques sont sensibles.
(Exemple : les valeurs maximales et minimales d'une colonne de
salaire peuvent être intéressantes).
pg_stats
est une vue sur pg_statistic accessible à tous, qui n'expose que
les informations sur les tables accessibles à l'utilisateur courant.
Tableau 43.31. Colonnes de pg_statistic
|
Nom
|
Type
|
Références
|
Description
|
|
starelid
|
oid
|
pg_class
.oid
|
Table ou index à qui la colonne décrite appartient
|
|
staattnum
|
int2
|
pg_attribute
.attnum
|
Numéro de la colonne décrite
|
|
stanullfrac
|
float4
|
|
Fraction des entrées de la colonne qui ont une valeur NULL
|
|
stawidth
|
int4
|
|
Taille moyenne, en octets, des entrées non NULL
|
|
stadistinct
|
float4
|
|
Nombre de valeurs distinctes non NULL dans la colonne. Une
valeurs positive est le nombre réel de valeurs distinctes.
Une valeur négative est le négatif d'une fraction du nombre
de lignes dans la table (par exemple, une colonne dans
laquelle les valeurs apparaissent environ deux fois en
moyenne peut être représentée par
stadistinct
= -0.5). 0 indique
que le nombre de valeurs distinctes est inconnu.
|
|
stakind
N
|
int2
|
|
Numéro de code indiquant le type de statistiques stockées
dans « le connecteur »
numéro
N
de la ligne
de pg_statistic.
|
|
staop
N
|
oid
|
pg_operator
.oid
|
Opérateur utilisé pour dériver les statistiques stockées
dans « le connecteur »
numéro
N
. Par
exemple, un connecteur d'histogramme montre l'opérateur
<, qui définit l'ordre de tri
des données.
|
|
stanumbers
N
|
float4[]
|
|
Statistiques numériques du type approprié pour
« le connecteur »
numéro
N
ou NULL si
le type de connecteur n'implique pas de valeurs numériques.
|
|
stavalues
N
|
anyarray
|
|
Valeurs de données de la colonne du type approprié pour
« le connecteur »
numéro
N
ou NULL si
le type de connecteur ne stocke aucune valeur de données.
Chaque valeur d'élément du tableau est en fait du type de
données de la colonne indiquée, si bien qu'il n'y a aucun
moyen de définir le type de ces colonnes plus précisément
qu'avec le type anyarray (tableau
quelconque).
|