"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué mis documentos MongoDB no caducan después de 5 segundos con los índices TTL activos?

¿Por qué mis documentos MongoDB no caducan después de 5 segundos con los índices TTL activos?

Publicado el 2024-11-07
Navegar:338

Why Aren\'t My MongoDB Documents Expiring After 5 Seconds with TTL Indexes in Go?

Usando MongoDB caducan documentos después de un número específico de segundos en marcha

Usando índices TTL, MongoDB le permite caducar automáticamente documentos después de un tiempo especificado duración. Este artículo demuestra cómo lograr esto en Go usando el controlador oficial mongo-go.

Siguiendo la documentación de MongoDB, el código muestra cómo:

  • Crear un índice con expireAfterSeconds opción
  • Insertar datos de muestra con diferentes marcas de tiempo de creación

Sin embargo, el ejemplo proporcionado funciona correctamente y el problema no está relacionado con el código.

Comprensión del comportamiento del índice TTL

El parámetro expireAfterSeconds especifica la duración después del campo creadoAt cuando el documento debe considerarse caducado. Sin embargo, la eliminación de documentos caducados no es inmediata.

Según la documentación de MongoDB:

"El índice TTL no garantiza que los datos caducados se eliminarán inmediatamente después de su vencimiento. Puede haber un retraso entre el momento en que un documento caduca y el momento en que MongoDB elimina el documento de la base de datos."

Tarea en segundo plano para eliminación

MongoDB tiene una tarea en segundo plano que elimina documentos caducados cada 60 segundos. Por lo tanto, los documentos podrán permanecer en la colección hasta 60 segundos después de su vencimiento. Además, si la base de datos tiene una carga pesada, es posible que se necesite más tiempo para eliminar todos los documentos vencidos.

Resolución

En su fragmento de código, espera algunos Los documentos se eliminarán después de 5 segundos (según la opción expireAfterSeconds), pero solo espere unos segundos después de la inserción para su verificación. Para probar correctamente la funcionalidad, debe dejar tiempo suficiente (varios minutos como mínimo) para que se ejecute la tarea en segundo plano y elimine los documentos caducados.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3