pg_stat_ann_indexes
disponible lorsque vous installez l'extension alloydb_scann
.
Pour en savoir plus sur l'affichage des métriques, consultez Afficher les métriques d'index vectoriel.
Métriques d'usabilité
Les métriques d'usabilité incluent des métriques qui vous aident à comprendre l'état de l'utilisation de l'index avec des métriques telles que la configuration de l'index et le nombre d'analyses d'index.
Nom de la métrique | Type de données | Description |
---|---|---|
relid |
OID |
Identifiant unique de la table contenant l'index vectoriel |
indexrelid |
OID |
Identifiant unique de l'index vectoriel |
schemaname |
NAME |
Nom du schéma propriétaire de l'index |
relname |
NAME |
Nom de la table contenant l'index |
indexrelname |
NAME |
Nom de l'index |
indextype |
NAME |
Type d'index. Cette valeur est toujours définie sur scann . |
indexconfig |
TEXT[] |
Configuration, telle que le nombre de feuilles et le quantificateur, définie pour l'index lors de sa création |
indexsize |
TEXT |
Taille de l'index |
indexscan |
BIGINT |
Nombre d'analyses d'index lancées sur l'index |
partitioncount |
BIGINT |
Nombre de partitions (nœuds feuilles) dans l'arborescence. |
Métriques de réglage
Les métriques d'ajustement fournissent des insights sur l'optimisation actuelle de votre index. Vous pouvez ainsi appliquer des recommandations pour améliorer les performances des requêtes.
Nom de la métrique | Type de données | Description |
---|---|---|
insertcount |
BIGINT |
Nombre d'opérations d'insertion dans l'index. Cette métrique inclut également le nombre de lignes qui existaient avant la création de l'index. |
updatecount |
BIGINT |
Nombre d'opérations de mise à jour sur l'index. Cette métrique ne tient pas compte des mises à jour HOT. |
deletecount |
BIGINT |
Nombre d'opérations de suppression sur l'index. |
distribution |
JSONB |
Distributions vectorielles dans toutes les partitions de l'index. Les champs suivants affichent la distribution :
Remarque : En raison des caractéristiques inhérentes à l'algorithme de clustering K-means, il y aura toujours un certain degré de variance dans la distribution des vecteurs entre les partitions, même lorsque l'index est créé initialement. |
distributionpercentile |
JSONB |
La distribution de l'index vectoriel vous aide à comprendre la distribution des vecteurs entre les partitions de votre index ScaNN. Les partitions sont créées en fonction de la valeur num_leaves définie lors de la création de l'index.La distribution de l'index vectoriel contient des buckets pour les centiles 10, 25, 50, 75, 90, 95, 99 et 100. Chaque bucket contient les valeurs suivantes :
Remarque : En raison des caractéristiques inhérentes à l'algorithme de clustering K-means, il existe toujours un certain degré de variance dans la distribution des vecteurs entre les partitions, même lorsque l'index est créé initialement. |
Recommandation d'optimisation basée sur les métriques
- Mutation
- Les métriques
insertcount
,updatecount
etdeletecount
indiquent ensemble les modifications ou les mutations du vecteur pour l'index. - L'index est créé avec un nombre spécifique de vecteurs et de partitions. Lorsque des opérations telles que l'insertion, la mise à jour ou la suppression sont effectuées sur l'index vectoriel, elles n'affectent que l'ensemble initial de partitions dans lesquelles résident les vecteurs. Par conséquent, le nombre de vecteurs dans chaque partition fluctue au fil du temps, ce qui peut avoir un impact sur le rappel, les RPS ou les deux.
- Si vous rencontrez des problèmes de lenteur ou de précision (par exemple, un faible RPS ou un mauvais rappel) dans vos requêtes de recherche ANN au fil du temps, pensez à examiner ces métriques. Un nombre élevé de mutations par rapport au nombre total de vecteurs peut indiquer qu'une réindexation est nécessaire.
- Distribution
- La métrique
distribution
affiche les distributions de vecteurs dans toutes les partitions. - Lorsque vous créez un index, il est créé avec un nombre spécifique de vecteurs et de partitions fixes. Le processus de partitionnement et la distribution ultérieure sont basés sur cette considération. Si des vecteurs supplémentaires sont ajoutés, ils sont partitionnés entre les partitions existantes, ce qui entraîne une distribution différente de celle qui existait lors de la création de l'index. Étant donné que la distribution finale ne prend pas en compte tous les vecteurs simultanément, le rappel, les RPS ou les deux peuvent être affectés.
- Si vous constatez une baisse progressive des performances de vos requêtes de recherche ANN, comme des temps de réponse plus lents ou une précision réduite des résultats (mesurée par les RPS ou le rappel), pensez à vérifier cette métrique et à réindexer.
- Centile de distribution
- La métrique
distributionpercentile
est une distribution d'index vectoriel dans la vuepg_stat_ann_indexes
qui vous aide à comprendre la distribution des vecteurs entre les partitions de votre index ScaNN. Les partitions sont créées en fonction de la valeurnum_leaves
définie lors de la création de l'index. - Lorsque vous créez un index
alloydb_scann
sur l'ensemble initial de lignes en définissantnum_leaves
, l'index peut modifier la distribution des vecteurs dans les partitions en raison des opérations sur les données (mutations d'inclinaison), ou le nombre de vecteurs peut augmenter de manière significative. Ces modifications peuvent entraîner une dégradation du RPS, du rappel ou des deux. La distribution de l'index vectoriel peut vous donner des signaux si la mutation entraîne une modification de la distribution de l'index. Ces informations peuvent vous aider à déterminer si une réindexation est nécessaire ou si une modification des configurations du temps de recherche peut améliorer les performances des requêtes. - Dans un index vectoriel, la distribution des vecteurs entre les partitions est rarement parfaitement uniforme. Ce déséquilibre est appelé distribution non uniforme. Un certain degré de non-uniformité est souvent attendu et ne signifie pas que vous devez réindexer. Une distribution non uniforme présente les caractéristiques suivantes :
- La variance du nombre de vecteurs est faible. La variance peut être calculée comme suit :
$(P100(num\_vectors) - p10(num\_vectors))*(\frac{num\_leaves}{total\_num\_row})$ - Le nombre de partitions avec 0 vecteur est faible et peut être inférieur à 30 % des partitions.
- La variance du nombre de partitions est faible.
$ variance _{p} = abs(p_{num\_partitions} - num\_leaves * (p_{percentile} - p-1_{percentile})) $ où "p" est un bucket de distribution d'index de vecteur. - Le nombre de vecteurs à un centile donné est
$< 8 x (\frac{num\_rows\ during\ index\ creation\ time}{ num\_leaves})$
Lorsque ces conditions ne sont pas remplies,REINDEX
peut être nécessaire en fonction de l'impact sur les requêtes par seconde et le rappel.
- La variance du nombre de vecteurs est faible. La variance peut être calculée comme suit :
- Les scénarios suivants, bien que moins courants qu'une distribution non uniforme, peuvent se produire :
- Index uniforme approximatif : lorsque la plupart des partitions ont le même nombre de vecteurs non nuls et que la variance du nombre de vecteurs est faible, il s'agit d'un index uniforme approximatif.
REINDEX
est obligatoire si le nombre de vecteurs dans chaque partition est supérieur à 8 * vecteur moyen àindex_creation_time
. - Index creux : un index creux se produit également lorsque plus de 50 % des partitions sont vides. Par exemple, un index clairsemé est créé lorsque plusieurs suppressions ont lieu dans une table. Dans ce scénario, les vecteurs sont concentrés dans un petit nombre de partitions, ce qui augmente le nombre de vecteurs dans chaque partition. Dans ce cas, supprimez l'index et recréez-le.
- Index uniforme approximatif : lorsque la plupart des partitions ont le même nombre de vecteurs non nuls et que la variance du nombre de vecteurs est faible, il s'agit d'un index uniforme approximatif.