"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go에서 TTL 인덱스를 사용하면 MongoDB 문서가 5초 후에도 만료되지 않는 이유는 무엇입니까?

Go에서 TTL 인덱스를 사용하면 MongoDB 문서가 5초 후에도 만료되지 않는 이유는 무엇입니까?

2024-11-07에 게시됨
검색:111

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

Go에서 지정된 시간(초) 후에 MongoDB 만료 문서 사용

TTL 인덱스를 사용하면 MongoDB를 사용하여 지정된 시간 이후에 문서를 자동으로 만료할 수 있습니다. 지속. 이 문서에서는 공식 mongo-go-driver를 사용하여 Go에서 이를 달성하는 방법을 보여줍니다.

MongoDB 문서에 따라 코드는 다음 방법을 보여줍니다.

  • expireAfterSeconds를 사용하여 인덱스를 생성합니다. 옵션
  • 다양한 생성 타임스탬프를 사용하여 샘플 데이터 삽입

그러나 제공된 예제는 올바르게 작동하고 있으며 문제는 코드와 관련이 없습니다.

TTL 인덱스 동작 이해

expiredAfterSeconds 매개변수는 문서가 만료된 것으로 간주되어야 하는 CreateAt 필드 이후의 기간을 지정합니다. 그러나 만료된 문서는 즉시 삭제되지 않습니다.

MongoDB 문서에 따르면:

"TTL 인덱스는 만료된 데이터가 만료 즉시 삭제된다는 것을 보장하지 않습니다. 지연이 있을 수 있습니다. 문서가 만료되는 시간과 MongoDB가 데이터베이스에서 문서를 제거하는 시간 사이입니다."

삭제를 위한 백그라운드 작업

MongoDB에는 만료된 문서를 제거하는 백그라운드 작업이 있습니다 60초마다. 따라서 문서는 만료된 후에도 최대 60초 동안 컬렉션에 남아 있을 수 있습니다. 또한 데이터베이스의 로드가 심한 경우 만료된 모든 문서를 삭제하는 데 추가 시간이 걸릴 수 있습니다.

해결책

코드 조각에서 다음과 같은 문제가 발생할 것으로 예상됩니다. 문서는 5초 후에 삭제되지만(expiredAfterSeconds 옵션 기준), 확인을 위해 삽입 후 몇 초만 기다립니다. 기능을 올바르게 테스트하려면 백그라운드 작업이 실행되고 만료된 문서를 삭제하는 데 충분한 시간(최소 몇 분)을 허용해야 합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3