Auf dieser Seite sind die Messwerte zu den Vektorindizes aufgeführt, die Sie in AlloyDB Omni generieren. Sie können diese Messwerte in der pg_stat_ann_indexes
-Ansicht aufrufen, die verfügbar ist, wenn Sie die alloydb_scann
-Erweiterung installieren.
Weitere Informationen zum Aufrufen der Messwerte finden Sie unter Messwerte für Vektorindexe aufrufen.
Messwerte zur Nutzerfreundlichkeit
Zu den Usability-Messwerten gehören Messwerte, mit denen Sie den Status der Indexnutzung anhand von Messwerten wie der Indexkonfiguration und der Anzahl der Indexscans nachvollziehen können.
Messwertname | Datentyp | Beschreibung |
---|---|---|
relid |
OID |
Eindeutige Kennung der Tabelle, die den Vektorindex enthält |
indexrelid |
OID |
Eindeutige Kennung des Vektorindexes |
schemaname |
NAME |
Name des Schemas, zu dem der Index gehört |
relname |
NAME |
Name der Tabelle, die den Index enthält |
indexrelname |
NAME |
Name des Index |
indextype |
NAME |
Der Typ des Index. Dieser Wert ist immer auf scann festgelegt. |
indexconfig |
TEXT[] |
Konfiguration, z. B. Anzahl der Blätter und Quantizer, die beim Erstellen des Index definiert wurden |
indexsize |
TEXT |
Größe des Index |
indexscan |
BIGINT |
Anzahl der Indexscans, die für den Index gestartet wurden |
Messwerte für die Abstimmung
Mit Tuning-Messwerten erhalten Sie Informationen zur aktuellen Indexoptimierung und können Empfehlungen zur Verbesserung der Abfrageleistung anwenden.
Messwertname | Datentyp | Beschreibung |
---|---|---|
insertcount |
BIGINT |
Anzahl der Einfügevorgänge im Index. Dieser Messwert enthält auch die Anzahl der Zeilen, die vor dem Erstellen des Index vorhanden waren. |
updatecount |
BIGINT |
Anzahl der Aktualisierungsvorgänge am Index. Bei diesem Messwert werden keine HOT-Aktualisierungen berücksichtigt. |
deletecount |
BIGINT |
Anzahl der Löschvorgänge für den Index. |
distribution |
JSONB |
Vektorverteilungen für alle Partitionen des Index. Die folgenden Felder zeigen die Verteilung:
Hinweis:Aufgrund der inhärenten Eigenschaften des K-Means-Clustering-Algorithmus gibt es immer eine gewisse Abweichung bei der Verteilung der Vektoren auf Partitionen, auch wenn der Index anfangs erstellt wird. |
distributionpercentile |
JSONB |
Mit der Vektorindexverteilung können Sie die Verteilung der Vektoren zwischen Partitionen Ihres ScaNN-Index nachvollziehen. Die Partitionen werden basierend auf dem num_leaves -Wert erstellt, der bei der Indexerstellung definiert wurde.Die Vektorindexverteilung enthält Buckets für die 10., 25., 50., 75., 90., 95., 99. und 100. Perzentile. Jeder Bucket enthält die folgenden Werte:
Hinweis:Aufgrund der inhärenten Eigenschaften des K-Means-Clustering-Algorithmus gibt es immer eine gewisse Abweichung bei der Verteilung der Vektoren auf Partitionen, auch wenn der Index anfangs erstellt wird. |
Empfehlung zur Optimierung basierend auf den Messwerten
- Mutation
- Die Messwerte
insertcount
,updatecount
unddeletecount
zeigen zusammen die Änderungen oder Mutationen im Vektor für den Index. - Der Index wird mit einer bestimmten Anzahl von Vektoren und Partitionen erstellt. Wenn Vorgänge wie „Einfügen“, „Aktualisieren“ oder „Löschen“ auf dem Vektorindex ausgeführt werden, wirkt sich das nur auf die anfänglichen Partitionen aus, in denen sich die Vektoren befinden. Daher schwankt die Anzahl der Vektoren in jeder Partition im Laufe der Zeit, was sich möglicherweise auf die Abrufleistung, die QPS oder beides auswirkt.
- Wenn Sie bei Ihren ANN-Suchanfragen im Laufe der Zeit Probleme mit der Geschwindigkeit oder Genauigkeit feststellen, z. B. eine niedrige Abfragerate pro Sekunde oder eine schlechte Wiedererkennung, sollten Sie diese Messwerte prüfen. Eine hohe Anzahl von Mutationen im Vergleich zur Gesamtzahl der Vektoren kann darauf hindeuten, dass ein erneutes Indexieren erforderlich ist.
- Verteilung
- Der Messwert
distribution
zeigt die Vektorverteilungen über alle Partitionen hinweg an. - Wenn Sie einen Index erstellen, wird er mit einer bestimmten Anzahl von Vektoren und festen Partitionen erstellt. Der Partitionierungsprozess und die anschließende Verteilung erfolgen auf der Grundlage dieser Überlegungen. Wenn zusätzliche Vektoren hinzugefügt werden, werden sie auf die vorhandenen Partitionen verteilt. Dies führt zu einer anderen Verteilung als bei der Erstellung des Index. Da bei der endgültigen Verteilung nicht alle Vektoren gleichzeitig berücksichtigt werden, können sich dies auf die Rückrufrate, die Anzahl der Abfragen pro Sekunde oder beides auswirken.
- Wenn Sie einen allmählichen Rückgang der Leistung Ihrer ANN-Suchanfragen feststellen, z. B. längere Antwortzeiten oder eine geringere Genauigkeit der Ergebnisse (gemessen anhand der Abfragen pro Sekunde oder des Recall-Werts), sollten Sie diesen Messwert prüfen und die Indexierung neu durchführen.
- Verteilungsperzentil
- Der Messwert
distributionpercentile
ist eine Vektorindexverteilung in der Ansichtpg_stat_ann_indexes
, mit der Sie die Verteilung der Vektoren zwischen Partitionen Ihres ScaNN-Index nachvollziehen können. Die Partitionen werden basierend auf demnum_leaves
-Wert erstellt, der beim Erstellen des Index definiert wurde. - Wenn Sie einen
alloydb_scann
-Index für die ursprünglichen Zeilen erstellen, indem Sienum_leaves
festlegen, kann der Index die Verteilung der Vektoren auf die Partitionen aufgrund von Datenoperationen (Schiefe-Mutationen) ändern oder die Anzahl der Vektoren kann erheblich zunehmen. Diese Änderungen können zu einer Verschlechterung der Qualität, des Recalls oder beider Faktoren führen. Die Verteilung des Vektorindexes kann Ihnen Aufschluss darüber geben, ob die Mutation zu einer Änderung der Indexverteilung führt. Anhand dieser Informationen können Sie feststellen, ob eine Neuindexierung erforderlich ist oder ob eine Änderung der Konfigurationen für die Suchzeit die Abfrageleistung verbessern kann. - In einem Vektorindex ist die Verteilung der Vektoren auf die Partitionen selten perfekt gleichmäßig. Ein solches Ungleichgewicht wird als ungleichmäßige Verteilung bezeichnet. Ein gewisses Maß an Abweichungen ist oft zu erwarten und bedeutet nicht, dass Sie die Indexierung noch einmal durchführen müssen. Eine nicht homogene Verteilung hat folgende Merkmale:
- Die Varianz der Anzahl der Vektoren ist niedrig. Die Varianz kann berechnet werden als
$(P100(num\_vectors) - p10(num\_vectors))*(\frac{num\_leaves}{total\_num\_row})$ - Die Anzahl der Partitionen mit 0 Vektoren ist gering und liegt möglicherweise unter 30% der Partitionen.
- Die Varianz der Anzahl der Partitionen ist niedrig.
$ variance _{p} = abs(p_{num\_partitions} - num\_leaves * (p_{percentile} - p-1_{percentile})) $, wobei „p“ ein Bucket für die Verteilung des Vektorindexes ist. - Die Anzahl der Vektoren bei einem beliebigen Perzentil ist
$< 8 x (\frac{Anzahl\_Zeilen\_während\_Indexerstellung}{Anzahl\_Blätter})$
Wenn diese Bedingungen nicht erfüllt sind, istREINDEX
möglicherweise erforderlich, je nachdem, wie stark sich die Anzahl der Abfragen pro Sekunde und die Trefferquote auswirken.
- Die Varianz der Anzahl der Vektoren ist niedrig. Die Varianz kann berechnet werden als
- Die folgenden Szenarien sind zwar seltener als eine ungleichmäßige Verteilung, können aber auftreten:
- Ungefähr gleichmäßiger Index: Wenn die meisten Partitionen dieselbe Anzahl von nicht nullwertigen Vektoren haben und die Varianz der Anzahl der Vektoren niedrig ist, handelt es sich um einen ungefähr gleichmäßigen Index.
REINDEX
ist erforderlich, wenn die Anzahlvektoren in jeder Partition beiindex_creation_time
> 8 * Durchschnittsvektor sind. - Sparser Index: Ein sparser Index wird auch verwendet, wenn mehr als 50% der Partitionen leer sind. Ein sparser Index wird beispielsweise erstellt, wenn mehrere Datensätze aus einer Tabelle gelöscht werden. In diesem Szenario sind die Vektoren auf eine kleine Anzahl von Partitionen konzentriert, was die Anzahl der Vektoren in jeder Partition erhöht. Löschen Sie in diesem Fall den Index und erstellen Sie ihn neu.
- Ungefähr gleichmäßiger Index: Wenn die meisten Partitionen dieselbe Anzahl von nicht nullwertigen Vektoren haben und die Varianz der Anzahl der Vektoren niedrig ist, handelt es sich um einen ungefähr gleichmäßigen Index.