如果我根据索引散列键从表中检索单个项,那么 query()和 getItem()之间的性能有差异吗?
query()
getItem()
getItem会更快
getItem
通过哈希和范围键检索 getItem是1:1的匹配,检索所需的时间(因此性能)受到哈希和内部分片的限制。
查询导致对“所有”范围键的搜索。它增加了计算工作,因此被认为比较慢。
编辑: 只是为了快速比较添加下面的图片从这个 博客日志。
在 Amazon 的 DynamoDB 中,无论使用什么访问方法,您的性能都是 保证。
正如 Chen Harel 所建议的那样,DynamoDB 服务器本身可能存在 几毫秒差异,但是由于 HTTP 请求 RTT,这些差异是 微不足道。
也就是说,当你有足够的信息来发出 GET而不是 QUERY时,它就是 很好的练习。
GET
QUERY
两者之间没有性能差异。两个查询中的哈希计算都是1乘1。 后者,也就是说,get 项只是作为 JPA 存储库/Spring findOne/findById 的类比提供的,以使 Spring Bean 连接/Hibernate 配置中的连接更容易。
正如 aws 员工在其中一次讨论中所建议的,我引用如下:
限制为1的 GetItem 与 Query 的延迟将是等效的。
AWS 讨论链接