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

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-30 21:50:30990검색

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

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

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

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

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

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

TTL 인덱스 동작 이해

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

MongoDB 문서에 따르면

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

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

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

해결 방법

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

위 내용은 Go에서 TTL 인덱스를 사용하면 MongoDB 문서가 5초 후에도 만료되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.