用于基于索引的单项检索的 DynamoDB query()和 getItem()

如果我根据索引散列键从表中检索单个项,那么 query()getItem()之间的性能有差异吗?

40696 次浏览

getItem会更快

通过哈希和范围键检索 getItem是1:1的匹配,检索所需的时间(因此性能)受到哈希和内部分片的限制。

查询导致对“所有”范围键的搜索。它增加了计算工作,因此被认为比较慢。

编辑: 只是为了快速比较添加下面的图片从这个 博客日志

Decision diagram which retrieval function to use

在 Amazon 的 DynamoDB 中,无论使用什么访问方法,您的性能都是 保证

正如 Chen Harel 所建议的那样,DynamoDB 服务器本身可能存在 几毫秒差异,但是由于 HTTP 请求 RTT,这些差异是 微不足道

也就是说,当你有足够的信息来发出 GET而不是 QUERY时,它就是 很好的练习

两者之间没有性能差异。两个查询中的哈希计算都是1乘1。 后者,也就是说,get 项只是作为 JPA 存储库/Spring findOne/findById 的类比提供的,以使 Spring Bean 连接/Hibernate 配置中的连接更容易。

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

限制为1的 GetItem 与 Query 的延迟将是等效的。

AWS 讨论链接