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'utilisabilité
Les métriques d'utilisabilité incluent des métriques qui vous aident à comprendre l'état d'utilisation de l'index, 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 |
Métriques de réglage
Les métriques de réglage fournissent des insights sur l'optimisation actuelle de votre index, ce qui vous permet d'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 sur 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 sur 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-moyennes, 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 d'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 d'index vectoriel contient des buckets pour les 10e, 25e, 50e, 75e, 90e, 95e, 99e et 100e centiles. Chaque bucket contient les valeurs suivantes :
Remarque : En raison des caractéristiques inhérentes à l'algorithme de clustering k-moyennes, 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 de réglage basée sur les métriques
- Mutation
- Les
insertcount,updatecount, etdeletecountmétriques indiquent ensemble les modifications ou les mutations dans le vecteur de 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, le RPS ou les deux.
- Si vous rencontrez des problèmes de lenteur ou de précision, tels qu'un faible RPS ou un rappel médiocre, dans vos requêtes de recherche ANN au fil du temps, envisagez de consulter 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
distributionaffiche les distributions vectorielles sur 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 se produisent en fonction de 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, le RPS ou les deux peuvent être affectés.
- Si vous constatez une baisse progressive des performances de vos requêtes de recherche ANN, par exemple des temps de réponse plus lents ou une précision réduite dans les résultats (mesurée par le RPS ou le rappel), envisagez de vérifier cette métrique et de réindexer.
- Centile de distribution
- La métrique
distributionpercentileest une distribution d'index vectoriel dans la vuepg_stat_ann_indexesqui vous aide à comprendre la distribution des vecteurs entre les partitions de votre index ScaNN. Les partitions sont créées en fonction de la valeurnum_leavesdéfinie lors de la création de l'index. - Lorsque vous créez un index
alloydb_scannsur l'ensemble initial de lignes en définissantnum_leaves, l'index peut modifier la distribution des vecteurs entre les partitions en raison d'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 d'index vectoriel peut vous indiquer si la mutation entraîne une modification de la distribution d'index. Ces informations peuvent vous aider à déterminer si une réindexation est nécessaire ou si une modification des configurations de 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 vectoriel. - Le nombre de vecteurs à n'importe quel centile est
$< 8 x (\frac{num\_rows\ during\ index\ creation\ time}{ num\_leaves})$
Lorsque ces conditions ne sont pas remplies,REINDEXpeut être nécessaire en fonction de l'impact sur le RPS 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 que la 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.
REINDEXest requis si le nombre de vecteurs dans chaque partition est $> 8 * average vector$ àindex_creation_time. - Index creux : un index creux se produit également lorsque plus de 50% des partitions sont vides. Par exemple, un index creux est créé lorsque plusieurs suppressions se produisent 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.