改进DynamoDB写操作

时间:2017-08-02 00:07:51

标签: amazon-web-services amazon-dynamodb

我试图调用dynamodb写操作来写大约6万条记录。

我试图为预配置写入容量提供1000个写入容量单位。但是我的写作操作仍然需要很多时间。此外,当我检查指标时,我仍然可以看到消耗的写入容量单位为每秒10左右。

我的记录大小肯定不到1KB。

有没有办法可以加快dynamodb的写操作?

3 个答案:

答案 0 :(得分:1)

DynamoDB性能与大多数数据库一样,在很大程度上取决于它的使用方式。

根据您的问题,您可能只使用一个DynamoDB分区。每个分区can support up to 1000 write容量单位和最多10GB的数据。

但是,您还提到您的指标每秒仅显示10个写入单位。这非常低。在AWS控制台中检查表中可见的所有指标。这是DynamoDB页面下每个表的选项卡。检查限制和任何错误。检查消耗的容量是否低于图表上的预配容量。

您的流程可能存在其他瓶颈。

答案 1 :(得分:1)

看起来您每秒可以发送更多请求。您可以执行更多请求,但是如果您按照以下循环发送请求:

for item in items:
  table.putItem(item)

您需要注意每个请求的往返延迟。

你可以使用两个技巧:

  • 首先,从多个线程/机器上传数据。

  • 其次,您可以使用BatchWriteItem方法,在一个请求中最多可以写入25个项目:

  

BatchWriteItem操作在一个或多个项目中放入或删除多个项目   更多表格。对BatchWriteItem的单次调用最多可以写入16 MB   数据,可包含多达25个放置或删除请求。   要写入的单个项目可以大到400 KB。

答案 2 :(得分:1)

所以这就是我想到的。

我改变了我的号码以使用batchWrite,我消耗的写入容量单位显着增加,达到286个写入容量单位。 完整的写操作也在几分钟内完成。 如上所述,使用putItem加载大量数据时会出现延迟问题并影响您的消耗容量。批量写入总是更好。