グローバルセカンダリインデックス (GSI) でスロットリングが発生しています。
簡単な説明
GSI でのスロットリングは、ベーステーブルにさまざまな形で影響します。その影響は、スロットリングが読み取りアクティビティ用か書き込みアクティビティ用かによって異なります:
- GSI の読み取り容量が不十分な場合、スロットリングはベーステーブルに影響しません。
- GSI の書き込み容量が不十分な場合、スロットリングが発生すると、ベーステーブルまたはその GSI のいずれかで書き込み操作が失敗します。
詳細については、「DynamoDB でのグローバルセカンダリインデックスの使用」を参照してください。
解決策
スロットリングを防ぐには、次の手順を行ってください:
- 各 GSI のプロビジョニング済み書き込み容量が、ベーステーブルのプロビジョニング済み書き込み容量以上であることを確認してください。GSI のプロビジョニング済みスループットを変更するには、UpdateTable 操作を使用します。ベーステーブルの自動スケーリングをオンにした場合は、同じ設定を GSI に適用するのがベストプラクティスです。これを行うには、DynamoDB コンソールで [ベーステーブルからコピー] を選択します。最適なパフォーマンスを得るには、[すべてのグローバルセカンダリインデックスに同じ読み取り/書き込み容量設定を使用する] をオンにしてください。これにより、DynamoDB Auto Scaling では、ベーステーブルのすべてのグローバルセカンダリインデックスを均一にスケーリングできます。詳細については、「既存テーブルでの DynamoDB Auto Scaling の有効化」を参照してください。
- GSI のパーティションキーが、読み取り操作と書き込み操作をパーティション間で可能な限り均等に分散するようにしてください。これにより、ホットパーティションを防ぎ、結果的にスロットリングを防ぐことができます。詳細については、「ワークロードを分散するためのパーティションキーの設計」を参照してください。
- 最も頻繁にスロットリングされるキーを特定するには、Amazon CloudWatch Contributor Insights for DynamoDB を使用してください。