当前位置: 首页 > 知识库问答 >
问题:

DynamoDB表扫描的读取容量开销

邹铭
2023-03-14
table.items.where(:MyAttribute => "Some Value").each do |item_data|
   # do something with the item_data
end

我为筛选器使用的属性不是哈希、范围或辅助索引。我最近不得不添加这个属性,出乎意料的是,这就是为什么我没有使用查询。

共有1个答案

惠野
2023-03-14

简而言之,你将被“收费”为扫描的物品总量(而不是返回的物品总量)。与查询(正如您已经提到的)相比,扫描是一个昂贵的操作。

值得一提的是,当您在表上调用扫描时,并不意味着将扫描整个表。如果扫描项的大小超过1MB的限制,扫描将停止,您必须再次调用它来扫描表的下一部分。

这是从官方文件中摘录的:

 类似资料:
  • AWS描述 单个扫描请求可以消耗(1 MB页面大小/4 KB项目大小)/2(最终一致读取)=128次读取操作。https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-query-scan.html 128似乎是Scan命令一次可以读取的最大容量。 然而,当我进行测试时,扫描命令(最终一致,没有任何过滤器选项)总是以11

  • 这是我的用例: 我有一个带有200k对象的JSON Api。数据集看起来有点像这样:日期、自行车型号、以分钟为单位的生产时间。我使用Lambda从JSON Api中读取并通过超文本传输协议请求在DynamoDB中写入。Lambda函数每天运行并使用最新数据更新DynamoDB。 然后,我按日期检索数据,因为我想计算每天的平均生产时间,并将其放在第二个表中。Alexa技能连接到第二个表,并读取每天的

  • 例如,如果我有一个活动表,它的排序键是一个日期字段(updatedAt),并且它有一百万行。如果我执行一个限制为10的扫描(为了得到最近的10个活动),我显然会得到10行,但我会因为读取100万行而被收费吗?成本是我主要关心的问题。

  • 我们有一个设置,其中各种工作节点执行计算并更新DynamoDB表中的相对状态。该表充当工作节点活动的一种历史记录。看门狗节点需要定期扫描表,并构建一个表示工作节点及其作业的当前状态的对象。因此,我们的应用程序能够扫描表并按时间顺序检索数据(即按时间戳排序)是很重要的。表最终会太大,无法扫描到本地内存进行后期排序,所以我们扫描后无法排序。 从AWS留档读取主键: DynamoDB使用分区键值作为内部

  • 对于何时选择GSI或其他方式的全表扫描,是否有任何衡量标准? 我知道两者背后的基本概念,但GSI的定价模型非常依赖于表格本身,我很难决定 更重要的是,如何在不同的表大小下进行扩展,或者多少扫描效率太低,而需要GSI 顺便说一下,我很难找到好的资源来过滤表达式,以便在dynamodb上进行查询和扫描,有什么好的建议吗?(“#v

  • 问题内容: 编辑 以便进一步阅读:问题是我的输入文件已损坏。 我不明白我在做什么错: 我正在使用此代码: 哪个工作正常。现在,由于某种原因,我想换一个扫描仪。我的代码变成: 这次,我们从不输入while,因为r.hasNextLine()始终返回“ false”。关于我在做什么错的任何想法吗? 我精确地说,没有其他更改,文件仍然相同。 编辑 :我还精确地我尝试了另一个文件,并得到相同的结果,这意味

  • 我对DynamoDB的性能有问题,我想澄清一下我有点困惑的地方。 执行扫描表中的100条记录,条件是使用(例如)。如果在表中找到20条记录,DynamoDB是否还扫描其他80条记录? 扫描时分页是如何工作的? 消耗超过分配的RCU和WCU的后果是什么?

  • 问题内容: 我正在玩Scanner类,以进行学习,并且我使用它来读取非常大的文件(大约60.000行,大约不使用Reader类),并且在大约400行后停止读取。我是否必须在Scanner的构造函数中使用Bufferedreader还是问题?我想知道为什么会这样。谢谢。我的代码是输出所有行的常用代码。 问题答案: 此问题通常在64位计算机上或文件大小大于1-2 GB的文件中更常见,并且与堆空间无关。