Resolución de problemas de índices - Amazon DocumentDB

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.

Resolución de problemas de índices

En los temas siguientes, se explica lo que debe hacer si se produce un error durante la creación de un índice o un índice en segundo plano.

Error al crear un índice

Amazon DocumentDB utiliza el almacenamiento local de una instancia durante el proceso de creación de índices. Puede supervisar el uso de este disco mediante la FreeLocalStorage CloudWatch métrica (CloudWatch -> Metrics -> DocDB -> Instance Metrics). Cuando la generación de un índice consume todo el espacio del disco local y no finaliza, se muestra un error. Cuando migre datos a Amazon DocumentDB, conviene que cree los índices primero y, a continuación, inserte los datos. Para obtener más información sobre las estrategias de migración y la creación de índices, consulte Migración a Amazon DocumentDB en la documentación de Amazon DocumentDB y la entrada de blog: Migrar de MongoDB a Amazon DocumentDB utilizando el método sin conexión.

Cuando cree índices en un clúster existente, si la creación del índice tarda más de lo previsto o no se realiza correctamente, le recomendamos que aumente el tamaño de la instancia para crear el índice y que, una vez creado, reduzca el tamaño. Amazon DocumentDB le permite escalar rápidamente los tamaños de las instancias en cuestión de minutos utilizando AWS Management Console o. AWS CLI Para obtener más información, consulte Administración de clases de instancias. Dado que los precios de las instancias se calculan por segundos, solo pagará por los segundos en que esté utilizando los recursos.

El índice en segundo plano genera problemas de latencia y falla

Las compilaciones de índices en segundo plano en Amazon DocumentDB no se inician hasta que todas las consultas de la instancia principal que se iniciaron antes de que se iniciara la creación del índice terminen de ejecutarse. Si hay una consulta de larga duración, las compilaciones de índices en segundo plano se bloquearán hasta que finalice la consulta y, por lo tanto, pueden tardar más de lo esperado en completarse. Esto es válido incluso si las colecciones están vacías.

Las compilaciones de índices en primer plano no muestran el mismo comportamiento de bloqueo. En cambio, las compilaciones de índices en primer plano controlan exclusivamente la colección hasta que se complete la creación del índice. Por lo tanto, para crear índices en una colección vacía y evitar el bloqueo de consultas de larga duración, le sugerimos que utilice compilaciones de índices en primer plano.

nota

Amazon DocumentDB solo permite una operación de creación de índice en segundo plano en una colección al mismo tiempo. Si se producen operaciones de DDL (Lenguaje de definición de datos) como createIndex() o dropIndex() en la misma colección durante la operación de creación de un índice en segundo plano, esta operación producirá un error.

Incremento de índices de bases de datos

Amazon DocumentDB utiliza el control de simultaneidad multiversión (MVCC) para gestionar las transacciones simultáneas. Cuando los documentos se eliminan o actualizan, sus versiones anteriores permanecen en las colecciones e índices como versiones «inactivas». El proceso de recolección de basura recupera automáticamente el espacio de estas versiones muertas para futuras operaciones.

La sobrecarga de índices se produce cuando los índices de una colección aumentan de tamaño debido a la acumulación de entradas de índice muertas u obsoletas o a la fragmentación de las páginas. El porcentaje informado representa la cantidad de espacio de índice que pueden utilizar las entradas de índice futuras. Esta sobrecarga consume espacio tanto en la memoria caché como en el almacenamiento del búfer. Si desea eliminar la hinchazón, tendrá que reconstruir los índices.

ejemplo Ejemplo

Ejecute el siguiente comando para determinar el almacenamiento no utilizado del índice:

db.coll.aggregate({$indexStats:{}});

El resultado tiene un aspecto similar al siguiente:

{ "name" : "_id_", "key" : { "_id" : 1 }, "host" : "devbox-test.localhost.a2z.com:27317", "size" : NumberLong(827392), "accesses" : { "ops" : NumberLong(40000), "docsRead" : NumberLong(46049), "since" : ISODate("2025-04-03T21:44:51.251Z") }, "cacheStats" : { "blksRead" : NumberLong(264), "blksHit" : NumberLong(140190), "hitRatio" : 99.8121 }, "unusedStorageSize" : { "unusedSizeBytes" : 409600, "unusedSizePercent" : 49.51 } }

Puede reconstruir los índices sin tiempo de inactividad mediante el reIndex comando, que requiere escanear toda la colección. Consulte Mantenimiento de índices mediante reIndex.