当我扫描数据时,1段的限制为1MB。在dynamodb中以异步并行方式显示一个段中的所有数据。
答案 0 :(得分:1)
进行并行扫描时,每个Scan API调用最多返回1MB数据。因此,如果您足够增加段数,您将能够在一次旅行中获得所有数据。根据文档,maximum number of segments is 1 million。这意味着只要您的表上有足够的预设读取吞吐量,并且表的大小小于976GB,就可以在一次往返中读取整个表。如果ConsistentRead = false,则每个1MB页面将产生128 RCU。因此,如果每个分区最多支持每秒3000次读取,则每个分区可以支持并行读取多达23个段。将每个分区的100个段除以23个段,可以生成43479个分区,以支持同时读取976GB。
要创建一个包含43479个分区或更多分区的表,请找到下一个最大功率为2.在这种情况下,下一个最大功率2到43479是2 ^ 16 = 65536。使用65536 * 750 = 49152000 WPS和49152000 RPS配置表,以创建65536个分区。此并行扫描的瞬时RCU消耗将为128 * 1000000 = 1.28亿RCU,因此在执行并行扫描之前,您需要以1.28亿RPS重新配置表。
要使其中任何一项正常运行,您需要增加帐户级和表级配置容量限制。否则,在us-east-1中,默认为table provisioning limits are 40k rps and 40k wps per table。如果以每秒40k读取速率配置表,则最多可以并行读取312个段,即312 MB。