首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AWS DynamoDB中扫描还是并行扫描?

在AWS DynamoDB中扫描还是并行扫描?
EN

Stack Overflow用户
提问于 2016-12-21 17:37:28
回答 2查看 12.8K关注 0票数 6

在云存储系统中,对AWS的要求很高。扫描过程需要更快。那么扫描过程是如何工作的,哪一种(扫描/并行扫描)在哪种情况下更好?

  1. 扫描在AWS DynamoDB中是如何工作的?
  2. 在AWS DynamoDB中并行扫描是如何工作的?
  3. 在AWS DyanmoDB中扫描还是并行扫描?
  4. 什么时候并行扫描将是首选?
  5. 是否在扫描前应用过滤器表达式?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-21 17:41:17

1.扫描在AWS DynamoDB?中的工作方式

Ans:

i)扫描操作返回一个或多个项。

( ii)默认情况下,扫描操作按顺序进行。

默认情况下,扫描在访问表中的数据时使用最终一致的读取。

( iv)如果扫描项目的总数超过1MB的最大数据集大小限制,则停止扫描并将结果作为LastEvaluatedKey值返回给用户,以便在后续操作中继续扫描。

(5)默认情况下,扫描操作执行最终一致的读取,并且它可以返回多达1MB(一页)的数据。因此,单个扫描请求可以使用

代码语言:javascript
复制
(1 MB page size / 4 KB item size) / 2 (eventually consistent reads) = 128 read operations.

2. AWS DynamoDB?中并行扫描的工作方式

Ans:

( i)为了在大型表或辅助索引上实现更快的性能,应用程序可以请求并行扫描操作。

( ii)您可以并行运行多个工作线程或进程。每个工作人员将能够与其他工作人员同时扫描一个表的单独部分。DynamoDB的扫描函数现在接受另外两个参数:

  • TotalSegments表示将并发访问该表的工人数量。
  • 表示要由调用工作者访问的表段。

(3)两个参数在一起使用时,将扫描限制在表中的某一特定项块上。还可以使用现有的限制参数来控制单个扫描请求返回了多少数据。

3. AWS DyanmoDB?中的扫描与并行扫描

Ans:

一次扫描操作只能读取一个分区。因此,为了一次在多个分区上进行更快的读取,需要并行扫描。

(2)顺序扫描可能并不总是能够充分利用规定的读取吞吐量。所以这里需要并行扫描。

( iii)并行扫描,为某些类型的查询和扫描减少4倍的成本。

4.何时选择并行扫描?

Ans:

如果满足以下条件,则并行扫描可能是正确的选择:

  • 表的大小是20 GB或更大。
  • 表的规定读取吞吐量没有得到充分利用。
  • 顺序扫描操作太慢了。

5.在扫描之前应用过滤器表达式吗?

Ans:不,在项目已经读取之后应用FilterExpression;过滤过程不消耗任何额外的读取容量单位。

资源链接:

  1. 扫瞄
  2. 并行扫描
  3. 示例-使用Java进行并行扫描
  4. 亚马逊DynamoDB -并行扫描,4倍廉价阅读,其他好消息
  5. 避免阅读活动的突然爆发
票数 19
EN

Stack Overflow用户

发布于 2020-01-15 18:46:28

解决什么时候应该在常规扫描上使用并行扫描的问题.

我的经验是,当表中的数据超过2MB时,并行扫描要比常规扫描更快,而且粗略地说,您似乎通过在表中每1MB运行一个段来优化性能。

我有三张桌子,每张都有按需供应。包含300项和70 of数据的小表格。包含1,800项和4MB数据的小表。以及一个包含110万项和1.05GB数据的大型表。

我可以通过将这个命令放入一个名为scan.sh的shell脚本来计时常规扫描

代码语言:javascript
复制
aws dynamodb scan --table-name MyTable --select COUNT

然后执行

代码语言:javascript
复制
time scan.sh

我可以将shell脚本中的命令替换为

代码语言:javascript
复制
aws dynamodb scan --table-name MyTable --total-segments 4 --segment 0 --select COUNT

上面的命令在4个段中运行扫描,并且只执行4个段中的一个。我在我的应用程序中使用DynamoDBMapper (Java ),而SDK负责并行运行不同的线程。

在我的小桌子上,每次扫描都需要1.4秒,并行扫描也没有什么区别。在我的小桌子上,常规扫描需要1.8s,并行扫描是最优的,有4个片段,运行时间为1.4s。

有趣的结果是那张大桌子。根据并行扫描中的段数,执行扫描的时间如下:

  • 1段- 120秒
  • 4段30秒
  • 8段15秒
  • 16节8秒
  • 32段5秒
  • 64段3秒
  • 128段1.9 s
  • 256段1.6s
  • 512段- 1.4s
  • 1024段- 1.4s
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41268702

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档