GetItem / BatchGetItem如何与效率方面的查询和扫描DynamoDB表进行比较?

时间:2016-09-13 17:26:04

标签: performance amazon-web-services amazon-dynamodb

具体来说,何时使用其中一种更好?我现在正在使用BatchGetItem,它看起来非常慢。

1 个答案:

答案 0 :(得分:9)

在检索单个项目的效率方面,您知道分区键(如果在表中使用了排序键,则排序键),GetItem比查询或扫描更有效。 BatchGetItem是一种检索大量您知道分区/排序密钥的项目的便捷方式,它在网络流量节省方面效率更高。

但是,如果您只有项目的部分信息,那么您无法使用GetItem / BatchGetItem,您必须扫描或查询您关注的项目。在这种情况下,查询将比扫描更有效,因为通过查询,您已经将表空间缩小到单个分区键值。过滤表达式并没有真正为效率做出贡献,但它们可以为您节省一些网络流量。

还需要检索大量项目。如果您需要使用相同分区键的大量项目,则查询会比多个GetItem(或BatchGetItem调用)更有效。此外,如果您需要检索构成表格重要部分的项目,则可以选择扫描。