Time to Live が期限切れの項目が Amazon DynamoDB テーブルから削除されないのはなぜですか?

所要時間1分
0

有効期限 (TTL) が期限切れの項目の一部が、Amazon DynamoDB テーブルからまだ削除されていません。

解決策

DynamoDB TTL 特徴量を使用すると、項目ごとにタイムスタンプを定義して、項目が不要になった時期を判断できます。指定されたタイムスタンプの日時の直後に、DynamoDB はテーブルから項目を削除します。これによって書き込みスループットが消費されることはありません。TTL は、ワークロードのニーズのために最新の状態を維持する項目のみを保持することにより、保存データ量を削減します。TTL には追加費用は発生しません。DynamoDB テーブルで TTL をアクティブ化する場合、項目が期限切れの要件を満たしているかどうかを判断するためにサービスが検索する属性名を特定します。テーブルで TTL をアクティブ化すると、パーティションごとのスキャナーのバックグラウンドプロセスが、テーブル内の項目の有効期限ステータスを自動的かつ継続的に評価します。

期限切れの項目の削除に期待よりも時間がかかる一般的な原因は次のとおりです。

  • 期限切れの項目の実際の削除操作は、テーブルのサイズとアクティビティレベルによって異なる場合があります。TTL はバックグラウンドプロセスであるため、TTL を使用して項目を期限切れにして削除するために使用されるキャパシティはさまざまです。
  • TTL は通常、期限切れの項目を数日以内に削除します。テーブルのサイズとアクティビティレベルによって、期限切れの項目の実際の削除操作は異なる場合があります。TTL ではベストエフォートベースで項目が削除されるため、場合によっては削除に時間がかかることがあります。オブジェクトの削除中、DynamoDB はプロビジョンドキャパシティを使用する代わりに、テーブルのバックエンドキャパシティを使用してオブジェクトを削除します。削除リクエストが多数あり、それらの項目を継続的に削除するのに十分なバックエンドキャパシティがない場合、削除プロセスに時間がかかることがあります。

TTL が正常に動作しているかどうかを確認するには、次の条件を確認します。

  • テーブルで TTL がアクティブ化されていることと、関連する設定が正しいことを確認する。

  • 項目には、テーブルで TTL をアクティブ化したときに指定した属性が含まれている必要があります。

  • TTL 属性の値には、Number のデータタイプがある必要があります。

  • TTL 属性の値は、Unix エポックタイム形式の単位のタイムスタンプである必要があります。詳細については、ウィキペディアの Unix 時間を参照してください。

  • TTL 属性の値は、有効期限が過去 5 年以内の datetimestamp である必要があります。

  • TTL プロセスは、これらのプロセスがテーブルオペレーションに干渉しないように、予備のキャパシティが十分にある場合にのみテーブル上で実行されます。割り当てられたキャパシティのほとんどをテーブルまたはテーブルパーティションが使用している場合、予備のキャパシティが不十分なために TTL プロセスが実行されないことがあります。

期限切れとなっているが、TTL によってまだ削除されていない項目は、読み取り、クエリ、およびスキャンで引き続き表示されます。期限切れの項目を結果セットに含めたくない場合は、それらの項目を除外する必要があります。そのためには、Time to Live の有効期限の値がエポック形式の現在の時間よりも大きい項目のみを返すフィルター式を使用します。詳細については、「スキャンのフィルタ式」を参照してください。

関連情報

DynamoDB の有効期限 (TTL) を使用して項目を期限切れにする

AWS公式
AWS公式更新しました 7ヶ月前
コメントはありません

関連するコンテンツ