パフォーマンス
リトライインターバルの設定
次のプロパティを設定すると、"maximum throughput exceeded" などの一時的なエラーを返す代わりに、クエリを再試行できます。
- RetryWaitTime:リクエストを再試行するために本製品 が待機する最小時間(ミリ秒数)。
- MaximumRequestRetries:リクエストをリトライする最大回数。
また、CData JDBC Driver for Amazon DynamoDB には、クエリに応じて使い分けることができるPartiQL とScan という2つの独立したAPI があります。使用されるAPI は、実行されるクエリによって異なります。
PartiQL
PartiQL は、INSERT/update/delete リクエストクエリ、およびフィルタを含むselect クエリで使用されます。これは、PartiQL API に、従来のScan エンドポイントよりも高度なフィルタリング機能が含まれているためです。 一般的に、結果のかなりの部分がフィルタリングされているクエリは、フィルタリングがほとんどされていないクエリよりも実行速度が速くなることが予想されます。効果的なページングの使用
Pagesize プロパティを使うと、アイテムのサイズおよびAmazon DynamoDB の1MB のページサイズを基に、プロビジョニングされたスループットの使用を最適化できます。このプロパティを、返すアイテム数に設定します。
一般的に、ページサイズが小さくなると、スロットルの原因となるスループットのスパイクが低減します。また、リクエスト間にポーズも挿入されます。この間隔はリクエストのディストリビューションを均等化し、スロットルを回避することでより多くのリクエストを成功するようにします。
Scans
Scan はフィルタを含まないSELECT クエリで発生します。この場合、すべての結果を取得する必要があるため、PartiQL API を使用するメリットはありません。 Scan を実行するとすべての結果が取得されますが、API には、フィルタリングされていないPartiQL クエリよりも優れたパフォーマンスを発揮する重要な機能があります:マルチスレッドです。ThreadCount 接続プロパティを設定することで、Scan リクエスト実行時に使用するスレッド数を変更できます。使用するスレッド数が増えると、より多くのメモリが使用されますが、各スレッドの結果はより速くなります。 デフォルトは4です。この機能は、高スループットまたは変動するスループットがプロビジョニング済みのテーブルに最適です。
単一のスレッドでテーブルの最大スループットを超えてしまうようなケースでは、シングルスレッドのPartiQL API よりもScan を使うメリットはありません。 Amazon DynamoDB は、最大スループットを超えなくなるまで、すべてのスレッドを単純に制御します。