DynamoDB query()与getItem()基于索引进行单项检索

ens*_*are 42 amazon-web-services amazon-dynamodb

如果我是根据索引的哈希键从我的表中检索单个项目,那么query()或getItem()之间是否存在性能差异?

Che*_*rel 33

getItem将
通过散列更快地获取getItem,并且范围键是1:1拟合,检索它所花费的时间(因此性能)受内部散列和分片的限制.
查询结果是搜索"所有"范围键.它增加了计算工作,因此被认为更慢.

  • @SebastianNielsen 回到过去(这个答案来自 2012 年!)DynamoDB 将其称为 <Hash,Range>。然后,在文档 api 发布前后,话题转移到 <Partition,Sort>.. (2认同)

yad*_*taf 20

在亚马逊的DynamoDB中,无论访问方法如何,您的表现都是有保证的.(你买单).

根据Chen Harel的建议,DynamoDB服务器本身可能有几毫秒的差异,但由于HTTP请求RTT,这些差异可以忽略不计.

这就是说,发布一个很好的做法,GET而不是QUERY当你有足够的信息时这样做.

  • 即使在HTTP请求的上下文中,这几毫秒也可以在规模上产生巨大差异.DynamoDB的2-3ms额外延迟可能意味着在Web服务器和后端服务之间保持打开请求的时间为2-3ms,从而占用资源. (8认同)
  • 人们正在考虑性能,这很好。当我们谈论 2-3ms 的优化时,世界上真正需要考虑这种优化的 Web 服务并不多。99% 的网络服务甚至都不会注意到这个小小的延迟。 (3认同)

小智 10

正如 aws 员工在一次讨论中所建议的那样,我引用:

使用 limit=1 的 GetItem 与 Query 的延迟将是等效的。

AWS 讨论链接

  • 链接已过时 (6认同)