pg_stat_ann_indexes
vista que está disponible cuando instala la extensión alloydb_scann
.
Para obtener más información sobre cómo ver las métricas, consulta Ver métricas de índice vectorial.
Métricas de usabilidad
Las métricas de usabilidad incluyen métricas que le ayudan a comprender el estado de la utilización de índices con métricas, como la configuración de índices y el número de análisis de índices.
Nombre de la métrica | Tipo de datos | Descripción |
---|---|---|
relid |
OID |
Identificador único de la tabla que contiene el índice vectorial |
indexrelid |
OID |
Identificador único del índice vectorial. |
schemaname |
NAME |
Nombre del esquema propietario del índice. |
relname |
NAME |
Nombre de la tabla que contiene el índice |
indexrelname |
NAME |
Nombre del índice |
indextype |
NAME |
Tipo de índice. Este valor siempre es scann . |
indexconfig |
TEXT[] |
Configuración, como el recuento de hojas y el cuantificador, definida para el índice cuando se creó |
indexsize |
TEXT |
Tamaño del índice |
indexscan |
BIGINT |
Número de análisis de índice iniciados en el índice |
Métricas de ajuste
Las métricas de ajuste te ofrecen información valiosa sobre la optimización de tus índices, lo que te permite aplicar recomendaciones para mejorar el rendimiento de las consultas.
Nombre de la métrica | Tipo de datos | Descripción |
---|---|---|
insertcount |
BIGINT |
Número de operaciones de inserción en el índice. Esta métrica también incluye el número de filas que había antes de crear el índice. |
updatecount |
BIGINT |
Número de operaciones de actualización en el índice. Esta métrica no tiene en cuenta las actualizaciones HOT. |
deletecount |
BIGINT |
Número de operaciones de eliminación en el índice. |
distribution |
JSONB |
Distribuciones de vectores en todas las particiones del índice. Los siguientes campos muestran la distribución:
Nota: Debido a las características inherentes del algoritmo de clustering K-means, siempre habrá cierto grado de varianza en la distribución de vectores entre particiones, incluso cuando se cree el índice inicialmente. |
distributionpercentile |
JSONB |
La distribución del índice vectorial te ayuda a comprender la distribución de los vectores entre las particiones de tu índice de ScaNN. Las particiones se crean en función del valor de num_leaves definido durante la creación del índice.La distribución del índice vectorial contiene contenedores para los percentiles 10, 25, 50, 75, 90, 95, 99 y 100. Cada segmento contiene los siguientes valores:
Nota: Debido a las características inherentes del algoritmo de clustering K-means, siempre hay cierto grado de varianza en la distribución de vectores entre particiones, incluso cuando se crea el índice inicialmente. |
Recomendación de ajuste basada en las métricas
- Mutation
- Las métricas
insertcount
,updatecount
ydeletecount
muestran los cambios o las mutaciones en el vector del índice. - El índice se crea con un número específico de vectores y particiones. Cuando se realizan operaciones como insertar, actualizar o eliminar en el índice vectorial, solo afectan al conjunto inicial de particiones en las que residen los vectores. Por lo tanto, el número de vectores de cada partición fluctúa a lo largo del tiempo, lo que puede afectar al recuerdo, a las QPS o a ambos.
- Si observas que las consultas de búsqueda de ANN son lentas o imprecisas (por ejemplo, si el QPS es bajo o la recuperación es deficiente) con el tiempo, te recomendamos que revises estas métricas. Un número elevado de mutaciones en relación con el número total de vectores podría indicar la necesidad de volver a indexar.
- Distribución
- La métrica
distribution
muestra las distribuciones de vectores en todas las particiones. - Cuando creas un índice, se crea con un número específico de vectores y particiones fijas. El proceso de partición y la distribución posterior se realizan en función de esta consideración. Si se añaden vectores adicionales, se particionan entre las particiones existentes, lo que da como resultado una distribución diferente a la que había cuando se creó el índice. Como la distribución final no tiene en cuenta todos los vectores simultáneamente, puede que se vean afectados la recuperación, las consultas por segundo o ambos.
- Si observa un descenso gradual en el rendimiento de sus consultas de búsqueda de ANN, como tiempos de respuesta más lentos o una menor precisión en los resultados (medida por QPS o recuperación), le recomendamos que compruebe esta métrica y vuelva a indexar.
- Percentil de distribución La métrica
distributionpercentile
es una distribución de índices de vectores en la vistapg_stat_ann_indexes
que te ayuda a entender la distribución de vectores entre las particiones de tu índice ScaNN. Las particiones se crean en función del valornum_leaves
definido durante la creación del índice.- Cuando creas un índice
alloydb_scann
en el conjunto inicial de filas definiendonum_leaves
, el índice puede cambiar la distribución de los vectores en las particiones debido a las operaciones de datos (mutaciones de sesgo) o el número de vectores puede aumentar significativamente. Estos cambios pueden provocar una degradación de las QPS, del recuerdo o de ambos. La distribución del índice vectorial puede proporcionarte señales si la mutación provoca un cambio en la distribución del índice. Esta información puede ayudarte a determinar si es necesario volver a indexar o si un cambio en las configuraciones del tiempo de búsqueda puede mejorar el rendimiento de las consultas. - En un índice vectorial, la distribución de los vectores entre las particiones rara vez es perfectamente uniforme. Este desequilibrio se denomina distribución no uniforme. A menudo se espera un cierto grado de no uniformidad, lo que no significa que tengas que volver a indexar. Una distribución no uniforme tiene las siguientes características:
- La varianza del número de vectores es baja. La varianza se puede calcular como
$(P100(num\_vectors) - p10(num\_vectors))*(\frac{num\_leaves}{total\_num\_row})$ - El número de particiones con 0 vectores es bajo y puede ser inferior al 30% de las particiones.
- La varianza del número de particiones es baja.
$ varianza _{p} = abs(p_{num\_partitions} - num\_leaves * (p_{percentile} - p-1_{percentile})) $ donde "p" es un contenedor de distribución de índice de vector. - El número de vectores en cualquier percentil es
$< 8 x (\frac{num\_rows\ during\ index\ creation\ time}{ num\_leaves})$
Si no se cumplen estas condiciones, es posible que se requieraREINDEX
en función de la cantidad de consultas por segundo y de la retención afectadas.
- La varianza del número de vectores es baja. La varianza se puede calcular como
- Aunque son menos habituales que la distribución no uniforme, pueden darse las siguientes situaciones:
- Índice uniforme aproximado: cuando la mayoría de las particiones tienen el mismo número de vectores distintos de cero y la varianza del número de vectores es baja, se trata de un índice uniforme aproximado.
REINDEX
es obligatorio si el número de vectores de cada partición es $> 8 * average vector$ enindex_creation_time
. - Índice disperso: también se produce un índice disperso cuando más del 50% de las particiones están vacías. Por ejemplo, se crea un índice disperso cuando se producen varias eliminaciones en una tabla. En este caso, los vectores se concentran en un número reducido de particiones, lo que aumenta el número de vectores de cada partición. Cuando esto ocurra, elimina el índice y vuelve a crearlo.
- Índice uniforme aproximado: cuando la mayoría de las particiones tienen el mismo número de vectores distintos de cero y la varianza del número de vectores es baja, se trata de un índice uniforme aproximado.