在云存储系统中,对AWS的要求很高。扫描过程需要更快。那么扫描过程是如何工作的,哪一种(扫描/并行扫描)在哪种情况下更好?
发布于 2016-12-21 17:41:17
1.扫描在AWS DynamoDB?中的工作方式
Ans:
i)扫描操作返回一个或多个项。
( ii)默认情况下,扫描操作按顺序进行。
默认情况下,扫描在访问表中的数据时使用最终一致的读取。
( iv)如果扫描项目的总数超过1MB的最大数据集大小限制,则停止扫描并将结果作为LastEvaluatedKey值返回给用户,以便在后续操作中继续扫描。
(5)默认情况下,扫描操作执行最终一致的读取,并且它可以返回多达1MB(一页)的数据。因此,单个扫描请求可以使用
(1 MB page size / 4 KB item size) / 2 (eventually consistent reads) = 128 read operations.2. AWS DynamoDB?中并行扫描的工作方式
Ans:
( i)为了在大型表或辅助索引上实现更快的性能,应用程序可以请求并行扫描操作。
( ii)您可以并行运行多个工作线程或进程。每个工作人员将能够与其他工作人员同时扫描一个表的单独部分。DynamoDB的扫描函数现在接受另外两个参数:
(3)两个参数在一起使用时,将扫描限制在表中的某一特定项块上。还可以使用现有的限制参数来控制单个扫描请求返回了多少数据。
3. AWS DyanmoDB?中的扫描与并行扫描
Ans:
一次扫描操作只能读取一个分区。因此,为了一次在多个分区上进行更快的读取,需要并行扫描。
(2)顺序扫描可能并不总是能够充分利用规定的读取吞吐量。所以这里需要并行扫描。
( iii)并行扫描,为某些类型的查询和扫描减少4倍的成本。
4.何时选择并行扫描?
Ans:
如果满足以下条件,则并行扫描可能是正确的选择:
5.在扫描之前应用过滤器表达式吗?
Ans:不,在项目已经读取之后应用FilterExpression;过滤过程不消耗任何额外的读取容量单位。
资源链接:
发布于 2020-01-15 18:46:28
解决什么时候应该在常规扫描上使用并行扫描的问题.
我的经验是,当表中的数据超过2MB时,并行扫描要比常规扫描更快,而且粗略地说,您似乎通过在表中每1MB运行一个段来优化性能。
我有三张桌子,每张都有按需供应。包含300项和70 of数据的小表格。包含1,800项和4MB数据的小表。以及一个包含110万项和1.05GB数据的大型表。
我可以通过将这个命令放入一个名为scan.sh的shell脚本来计时常规扫描
aws dynamodb scan --table-name MyTable --select COUNT然后执行
time scan.sh我可以将shell脚本中的命令替换为
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。
有趣的结果是那张大桌子。根据并行扫描中的段数,执行扫描的时间如下:
https://stackoverflow.com/questions/41268702
复制相似问题