

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Índices poco utilizados y redundantes
<a name="anti-pattern-low-used-redundant-indexes"></a>

## Descripción general de
<a name="low-indexes-overview"></a>

Los índices mejoran el rendimiento general de las consultas de las cargas de trabajo, pero conllevan costes. Cada índice consume almacenamiento y I/O recursos, y las operaciones de escritura deben actualizar todos los índices de la colección. Si la base de datos contiene índices redundantes, infrautilizados o no utilizados, se generará una sobrecarga para el clúster y se reducirá el rendimiento. Varios índices innecesarios crean un antipatrón que provoca problemas de rendimiento, un aumento de los costes de almacenamiento y una mayor sobrecarga operativa.

**Escenarios de indexación subóptimos**
+ **Índices no utilizados: índices** creados para consultas únicas o en iteraciones de productos anteriores a las que ya no se accede mediante los patrones de consulta actuales. Para identificar los índices no utilizados de una colección, puede utilizar IndexStats. Para obtener más información, consulte [¿Cómo analizo el uso de los índices e identifico los índices no utilizados?](user_diagnostics.md#user-diag-index-usage).
+ **Índices redundantes: varios índices que** cubren patrones clave superpuestos o patrones de consulta idénticos. Ejemplo: un índice de clave única en el atributo A se vuelve redundante cuando un índice compuesto cubre tanto el atributo A como el B, ya que el índice compuesto puede gestionar consultas solo sobre el atributo A.
+ **Over-Indexing**: Crear índices «por si acaso» sin analizar los patrones de consulta reales ni los requisitos de rendimiento.
+ Índices de **cardinalidad baja: índices** en campos con pocos valores distintos (por ejemplo, campos booleanos o indicadores de estado) que proporcionan un beneficio mínimo de optimización de las consultas.

## Impacto en el rendimiento del clúster
<a name="low-indexes-impact"></a>
+ **Almacenamiento y E/S**: cada índice consume espacio de almacenamiento y recursos de E/S, lo que contribuye a los costos generales. Si un índice no se utiliza o es redundante, representa un coste innecesario para el clúster.
+ **Rendimiento de escritura reducido**: las operaciones de inserción, actualización y eliminación deben mantener los índices, lo que genera una sobrecarga que consume recursos. Los índices redundantes o no utilizados añaden una sobrecarga innecesaria a estas operaciones.
+ **Presión de memoria y CPU**: los índices compiten por la memoria del grupo de búferes y pueden desalojar los datos a los que se accede con frecuencia si el conjunto de trabajo no cabe en la memoria de la instancia, lo que resulta en un nivel subóptimo. BufferCacheHitRatio El sistema también consume recursos de la CPU manteniendo las estructuras de índice.

## Herramientas disponibles para identificar las oportunidades de optimización de índices
<a name="low-indexes-tools"></a>
+ Herramienta de revisión de índices:
+ Herramienta de detección de cardinalidad de índices

**Recopilación del kit de herramientas:**

```
git clone https://github.com/awslabs/amazon-documentdb-tools.git
```

**1. Herramienta de revisión de índices**

La herramienta de revisión de índices analiza todas las colecciones e índices para proporcionar una lista de los índices y sus patrones de uso e identifica los índices redundantes en el clúster de Amazon DocumentDB. Ejecute esta herramienta en todas las instancias del clúster para realizar un análisis exhaustivo. Para obtener más información, consulte la [herramienta de revisión de índices](https://github.com/awslabs/amazon-documentdb-tools/tree/master/performance/index-review).

**Uso**:

```
cd performance/index-review/

python3 index-review.py --server-alias <server-alias> --uri <mongodb-uri>
```

**Archivos de salida**
+ `{server-alias}-collections.csv`: Collection-level estadísticas
+ `{server-alias}-indexes.csv`: Métricas detalladas de uso del índice
+ `{server-alias}-{timestamp}-index-review.json`: Datos sin procesar para su posterior análisis

**nota**  
Ejecute para cada instancia del clúster con un alias independiente para generar estadísticas de cada instancia y, a continuación, ejecute la herramienta para obtener un análisis acumulativo

Por ejemplo: `python3 index-review.py --files "{server-alias}-{timestamp}-index-review.json, {server-alias}-{timestamp}-index-review.json" --server-alias full-review`

**2. Herramienta de detección de cardinalidad de índices**

Esta herramienta identifica los índices con baja cardinalidad que son ineficientes para el rendimiento de las consultas.

**Uso**

```
cd performance/index-cardinality-detection/

python3 detect-cardinality.py --uri <mongodb-uri>
```

**Parámetros**
+ `--threshold`: porcentaje de umbral de cardinalidad (predeterminado: 1%)
+ `--sample-count`: Número de documentos para muestrear (predeterminado: 100.000)
+ `--max-collections`: Número máximo de colecciones que se pueden escanear por base de datos (predeterminado: 100)

Para obtener más información, consulte [https://aws.amazon.com/blogs/database/detect-and-fix-low-cardinality-indexes-in-amazon-documentdb/](https://aws.amazon.com/blogs/database/detect-and-fix-low-cardinality-indexes-in-amazon-documentdb/)

## Estrategias de remediación
<a name="low-indexes-remediation"></a>

**1. Eliminación de índices redundantes y no utilizados**

```
// Example: Drop unused index
db.collection.dropIndex("unused_index_name")
```

**nota**  
Los índices nunca deben descartarse sin consultarlos con todas las partes interesadas y comprobar su rendimiento.

**2. Optimización del índice de baja cardinalidad**
+ Utilice índices parciales con filtros
+ Convierta índices únicos de baja cardinalidad en índices compuestos