Questa pagina elenca le metriche relative agli indici di vettori generati in AlloyDB Omni. Puoi visualizzare queste metriche utilizzando la visualizzazione pg_stat_ann_indexes
disponibile quando installi l'estensione alloydb_scann
.
Per ulteriori informazioni sulla visualizzazione delle metriche, consulta Visualizzare le metriche degli indici di vettore.
Metriche di usabilità
Le metriche di usabilità includono metriche che ti aiutano a comprendere lo stato di utilizzo dell'indice, ad esempio la configurazione dell'indice e il numero di scansioni dell'indice.
Nome metrica | Tipo di dati | Descrizione |
---|---|---|
relid |
OID |
Identificatore univoco della tabella contenente l'indice del vettore |
indexrelid |
OID |
Identificatore univoco dell'indice del vettore |
schemaname |
NAME |
Nome dello schema proprietario dell'indice |
relname |
NAME |
Nome della tabella contenente l'indice |
indexrelname |
NAME |
Nome dell'indice |
indextype |
NAME |
Tipo di indice. Questo valore è sempre impostato su scann |
indexconfig |
TEXT[] |
Configurazione, ad esempio il numero di foglie e il quantizzatore, definita per l'indice al momento della sua creazione |
indexsize |
TEXT |
Dimensioni dell'indice |
indexscan |
BIGINT |
Numero di scansioni dell'indice avviate nell'indice |
Metriche di ottimizzazione
Le metriche di ottimizzazione forniscono informazioni sull'ottimizzazione dell'indice corrente, consentendoti di applicare consigli per migliorare le prestazioni delle query.
Nome metrica | Tipo di dati | Descrizione |
---|---|---|
insertcount |
BIGINT |
Numero di operazioni di inserimento nell'indice. Questa metrica include anche il numero di righe esistenti prima della creazione dell'indice. |
updatecount |
BIGINT |
Numero di operazioni di aggiornamento nell'indice. Questa metrica non tiene conto degli aggiornamenti HOT. |
deletecount |
BIGINT |
Numero di operazioni di eliminazione nell'indice. |
distribution |
JSONB |
Distribuzioni di vettori in tutte le partizioni dell'indice. I seguenti campi mostrano la distribuzione:
Nota: a causa delle caratteristiche intrinseche dell'algoritmo di clustering K-means, ci sarà sempre un certo grado di varianza nella distribuzione dei vettori tra le partizioni, anche quando l'indice viene creato inizialmente. |
distributionpercentile |
JSONB |
La distribuzione dell'indice vettoriale ti aiuta a comprendere la distribuzione dei vettori tra le partizioni dell'indice ScaNN. Le partizioni vengono create in base al valore num_leaves definito durante la creazione dell'indice.La distribuzione dell'indice di vettore contiene bucket per i percentile 10, 25, 50, 75, 90, 95, 99 e 100. Ogni bucket contiene i seguenti valori:
Nota: a causa delle caratteristiche intrinseche dell'algoritmo di clustering K-means, esiste sempre un certo grado di varianza nella distribuzione dei vettori tra le partizioni, anche quando l'indice viene creato inizialmente. |
Suggerimento di ottimizzazione in base alle metriche
- Mutazione
- Le metriche
insertcount
,updatecount
edeletecount
insieme mostrano le variazioni o le mutazioni nel vettore per l'indice. - L'indice viene creato con un numero specifico di vettori e partizioni. Quando vengono eseguite operazioni come inserimento, aggiornamento o eliminazione sull'indice di vettori, queste influiscono solo sull'insieme iniziale di partizioni in cui risiedono i vettori. Di conseguenza, il numero di vettori in ogni partizione fluttua nel tempo, con un potenziale impatto sul richiamo, sul QPS o su entrambi.
- Se nel tempo riscontri problemi di lentezza o accuratezza, ad esempio un QPS basso o un recupero scarso, nelle query di ricerca ANN, ti consigliamo di esaminare queste metriche. Un numero elevato di mutazioni rispetto al numero totale di vettori potrebbe indicare la necessità di eseguire nuovamente l'indicizzazione.
- Distribuzione
- La metrica
distribution
mostra le distribuzioni dei vettori in tutte le partizioni. - Quando crei un indice, questo viene creato con un numero specifico di vettori e partizioni fisse. Il processo di partizione e la distribuzione successiva avvengono in base a questa considerazione. Se vengono aggiunti altri vettori, questi vengono suddivisi tra le partizioni esistenti, con una distribuzione diversa rispetto a quella al momento della creazione dell'indice. Poiché la distribuzione finale non prende in considerazione tutti i vettori contemporaneamente, il richiamo, il QPS o entrambi potrebbero essere interessati.
- Se noti un calo graduale delle prestazioni delle query di ricerca ANN, ad esempio tempi di risposta più lenti o una minore accuratezza dei risultati (misurata in base a QPS o richiamo), ti consigliamo di controllare questa metrica e di eseguire nuovamente l'indicizzazione.
- Percentile di distribuzione
- La metrica
distributionpercentile
è una distribuzione dell'indice vettoriale nella visualizzazionepg_stat_ann_indexes
che ti aiuta a comprendere la distribuzione dei vettori tra le partizioni dell'indice ScaNN. Le partizioni vengono create in base al valorenum_leaves
definito durante la creazione dell'indice. - Quando crei un indice
alloydb_scann
sull'insieme iniziale di righe impostandonum_leaves
, l'indice può modificare la distribuzione dei vettori nelle partizioni a causa di operazioni sui dati (mutazioni di scostamento) oppure il numero di vettori potrebbe aumentare in modo significativo. Queste modifiche possono comportare il degrado del QPS, del recupero o di entrambi. La distribuzione dell'indice vettoriale può fornirti indicatori se la mutazione causa una variazione nella distribuzione dell'indice. Queste informazioni possono aiutarti a determinare se è necessario eseguire un nuovo indicizzazione o se una modifica delle configurazioni dei tempi di ricerca può contribuire a migliorare il rendimento delle query. - In un indice di vettori, la distribuzione dei vettori tra le partizioni è raramente perfettamente uniforme. Questo squilibrio è definito distribuzione non uniforme. Spesso è previsto un certo grado di non uniformità e non è necessario eseguire nuovamente l'indicizzazione. Una distribuzione non uniforme presenta le seguenti caratteristiche:
- La varianza del numero di vettori è bassa. La varianza può essere calcolata come
$(P100(num\_vectors) - p10(num\_vectors))*(\frac{num\_leaves}{total\_num\_row})$ - Il numero di partizioni con 0 vettori è basso e potrebbe essere inferiore al 30% delle partizioni.
- La varianza del numero di partizioni è bassa.
$ variance _{p} = abs(p_{num\_partitions} - num\_leaves * (p_{percentile} - p-1_{percentile})) $ dove "p" è un bucket di distribuzione dell'indice vettoriale. - Il numero di vettori in qualsiasi percentile è
$< 8 x (\frac{num\_rows\ during\ index\ creation\ time}{ num\_leaves})$
Quando queste condizioni non sono soddisfatte, potrebbe essere necessarioREINDEX
in base all'entità dell'impatto su QPS e sul recupero.
- La varianza del numero di vettori è bassa. La varianza può essere calcolata come
- Possono verificarsi i seguenti scenari, anche se meno comuni della distribuzione non uniforme:
- Indice uniforme approssimativo:quando la maggior parte delle partizioni ha lo stesso numero di vettori diversi da zero e la varianza del numero di vettori è bassa, si tratta di un indice uniforme approssimativo.
REINDEX
è obbligatorio se i vettori di numeri in ogni partizione sono $> 8 * vettore medio$ inindex_creation_time
. - Indice sparso:un indice sparso si verifica anche quando più del 50% delle partizioni è vuoto. Ad esempio, l'indice sparso viene creato quando si verificano più eliminazioni in una tabella. Questo scenario fa sì che i vettori vengano concentrati in un numero ridotto di partizioni, il che aumenta il numero di vettori in ogni partizione. In questo caso, elimina l'indice e ricrealo.
- Indice uniforme approssimativo:quando la maggior parte delle partizioni ha lo stesso numero di vettori diversi da zero e la varianza del numero di vettori è bassa, si tratta di un indice uniforme approssimativo.