Time to Live가 만료된 항목이 Amazon DynamoDB 테이블에서 삭제되지 않는 이유는 무엇인가요?

2분 분량
0

Time to Live(TTL)가 만료된 일부 항목이 Amazon DynamoDB 테이블에서 삭제되지 않습니다.

해결 방법

DynamoDB TTL 기능을 사용하면 아이템별 타임스탬프를 정의하여 항목이 더 이상 필요하지 않게 되는 시점을 결정할 수 있습니다. 지정된 타임스탬프의 날짜 및 시간 직후, DynamoDB는 쓰기 스루풋을 소비하지 않으면서 테이블에서 항목을 삭제합니다. TTL은 워크로드의 요구 사항에 부합하는 항목만 유지하여 저장되는 데이터 볼륨을 줄이기 위한 수단으로서 추가 비용 없이 제공됩니다. DynamoDB 테이블에서 TTL을 활성화할 때는 만료될 수 있는 항목인지 여부를 확인하기 위해 서비스가 확인해야 할 구체적인 속성 이름을 지정해야 합니다. 테이블에 대해 TTL을 활성화하면 파티션별 스캐너 백그라운드 프로세스가 테이블에 있는 항목의 만료 상태를 자동으로 계속 평가합니다.

만료된 항목을 삭제하는 데 시간이 오래 걸리는 일반적인 원인은 다음과 같습니다.

  • 만료된 항목의 실제 삭제 작업은 테이블의 크기와 작업 수준에 따라 달라질 수 있습니다. TTL은 백그라운드 프로세스이므로 TTL을 사용하여 항목을 만료하고 삭제하는 데 사용되는 용량은 그 성격상 가변적입니다.
  • TTL 프로세스는 일반적으로 만료 후 48시간 이내에 만료된 항목을 삭제합니다. 하지만 이 타임라인은 SLA로 보장되지 않습니다. TTL 삭제 작업은 상황에 따라 최대한 빠르게 수행되며 경우에 따라 삭제하는 데 더 오래 걸릴 수 있습니다. TTL을 사용하여 객체를 삭제하는 동안, DynamoDB는 프로비저닝된 용량이 아니라 테이블의 백엔드 용량을 사용하여 객체를 삭제합니다. 삭제 요청 건수가 많고 만료된 항목을 지속적으로 삭제하는 데 사용할 백엔드 용량이 충분하지 않으면 삭제 프로세스에 시간이 더 오래 걸릴 수 있습니다.

TTL이 제대로 작동하는지 확인하려면 다음을 수행합니다.

  • 테이블에 대해 TTL을 활성화했으며 관련 설정이 올바른지 확인합니다.
  • 테이블에 대해 TTL을 활성화할 때 지정한 속성이 항목에 포함되어 있어야 합니다.
  • TTL 속성의 값이 숫자 데이터 형식이어야 합니다.
  • TTL 속성의 값이 Unix epoch 시간 형식(초 단위)의 타임스탬프여야 합니다.
  • TTL 속성 값이 지난 5년 이내에 만료된 datetimestamp여야 합니다.
  • TTL 프로세스는 이러한 프로세스가 테이블 작업을 방해하지 않도록 여유 용량이 충분한 경우에만 테이블에 대해 실행됩니다. 할당된 용량이 대부분 테이블 또는 테이블 파티션에 사용되는 경우 예비 용량이 부족하여 TTL 프로세스가 실행되지 않을 수 있습니다.

만료되었지만 아직 TTL에 의해 삭제되지 않은 항목은 읽기, 쿼리 및 스캔을 실행할 때 계속 표시됩니다. 결과 집합에서 만료된 항목을 제외하려면 해당 항목을 필터링해야 합니다. 이렇게 하려면 Time to Live 만료 값이 epoch 형식의 현재 시간보다 큰 항목만 반환하는 필터 식을 사용합니다. 자세한 내용은 Filter expressions for scan(스캔을 위한 필터 표현식)을 참조하세요.


관련 정보

DynamoDB TTL(Time to Live)을 사용하여 아이템 만료

AWS 공식
AWS 공식업데이트됨 7달 전