2016-11-14 20 views
0

データをAWS DynamoDBに移行するための非同期データ移行ツールを作成しました。 Dynamoの目的地テーブルには膨大なリソースが用意されています。プロビジョニングされた書き込み容量に達していないときにAWS DynamoDB書き込み要求が抑制される

以下は、書き込み容量グラフとスロットルリクエストグラフです。なぜ私たちの書き込み容量に近づいていない場合でも、そのような大量のリクエストが抑制されるのはなぜですか?私は一定の再試行を行うので、すべてのデータは最終的には流れますが、非常にゆっくりです。

Write capacity graph Throttled write requests graph

+0

インポート先のテーブルにグローバルセカンダリインデックスがありますか? –

+0

私はテーブルに約5つのインデックスを持っています。それぞれは、テーブル自体と同じ書き込み容量(それぞれ5000)を持っています。 – Abarnett

+0

gotcha。私はこのドキュメントを見ていました:例えば、グローバルなセカンダリインデックスを照会し、プロビジョニングされた読み取り容量を超えた場合、リクエストは抑制されます。テーブルで大量の書き込みアクティビティを実行するが、そのテーブルのグローバルセカンダリインデックスが十分な書き込み容量を持たない場合は、テーブルの書き込みアクティビティが抑制されます.' http://docs.aws.amazon.com/ amazondynamodb/latest/developerguide/GSI.html#GSI.ThroughputConsiderations –

答えて

2

プロビジョニング書き込みスループットは、あなたのテーブルのすべての破片の間で分散されます。テーブルのサイズとスループットに応じて、データはシャードに分散されます。

(readCapacityUnits/3,000) + (writeCapacityUnits/1,000) = initialPartitions (rounded up) 

10 GBのデータごとにもパーティションが作成されます。

Understand Partition Behaviorを参照してください。

書き込み要求が複数のパーティションキーに分散されていない場合、プロビジョニングされたスループットに達する前に、調整された要求が発生します。

具体的には、テーブルは少なくとも5つの区切りで存在します。つまり、シャードごとに1秒あたり最大1,000単位の書き込み容量を使用できます。

2番目に考慮すべき事項は、アイテムのサイズです。各書込み要求は、1KBのアイテムサイズごとに1書込み容量単位を消費する。

Write Capacity Unitsを参照してください。

要約:書き込み要求または読み取り要求がすべてのシャードに並行してヒットした場合にのみ、プロビジョニングされたスループットの100%を使用できます。そのためには、ワークロードを複数の異なるパーティションキーに分散する必要があります。

関連する問題