web-dev-qa-db-ja.com

時間がかかるGSIの作成

DynamoDBですでに20億行近くの行が作成されたテーブルがあります。

クエリの要件のため、グローバルセカンダリインデックス(GSI)を作成する必要がありました。 GSI作成のプロセスは36時間前に開始されましたが、まだ完了していません。ポータルでは、アイテム数が約1億であることが示されています。長い道のりです。

質問:

  1. 十分なWCUとRCUが割り当てられている場合、なぜこれほど長い時間がかかるのですか(実際には30k)。
  2. 私が使用したGSIパーティションキーは、値が反復的なものであり、それがGSIの作成に時間がかかる理由である可能性があります(理想的なシナリオは、複数のパーティションにまたがる項目に対して繰り返されないパーティションキーを選択することです)。
  3. プロセスがオンのときにGSIの作成を中止する方法はありますか? AWSコンソールからは許可されません。

ありがとう。

11
Dixit Gokhale

GSIには独自のWCUとRCUがあり、プライマリインデックスとは区別されています。これは、GSIに十分なWCUがないためでしょうか?

グローバルセカンダリインデックスの作成に時間がかかりすぎる場合(既存の大きなテーブルにインデックスを追加する場合によくあることです)、次の手順に従って追加の書き込み容量をプロビジョニングできます。

DynamoDBコンソールを開きます。

ナビゲーションペインから[テーブル]を選択し、リストからテーブルを選択します。

[インデックス]タブを選択します。

インデックスの書き込み容量を増やして、[保存]を選択します。

約1分後、[Metrics]タブからOnlineIndexPercentageProgressメトリックをチェックして、グローバルセカンダリインデックスの作成が問題なく進行しているかどうかを確認します。

編集:上記から AWSナレッジセンター

'OnlineIndexPercentageProgress'の手順:

グローバルセカンダリインデックスの作成が始まります。 [メトリック]タブで進行状況を監視できます。

[指標]タブを選択します。

[すべてのCloudWatchメトリクスを表示]を選択します。

CloudWatchコンソールで、DynamoDBを選択します。 [検索指標]ボックスに、OnlineIndexPercentageProgressと入力します。注:検索で空のリストが返された場合は、メトリックが入力されるまで約1分待ちます。

進行状況を確認するには、インデックスの名前を選択してください。

6
F_SO_K