【问题标题】:Improve the response time of AWS Dynamodb提高 AWS Dynamodb 的响应时间
【发布时间】:2016-03-29 14:16:18
【问题描述】:

我们已经使用 Couchbase 大约两年了,但出于多种原因,我们最终决定改用 Amazon DynamoDB 服务。
现在我开始将数据迁移到 dynamodb。首先一切都很好,并且按预期进行,但一段时间后,发电机的响应时间越来越长,迁移过程也越来越慢。
我试图改变我的策略,但没有成功。
我可以做些什么来增加响应时间?

基本上,我正在扫描一个 SQL 表,每个查询获取 100 个项目,然后要求 Couchbase 检索我想要的关于这 100 个项目的数据。起初我的响应时间很长(如下图所示)。

以下信息可能会有所帮助:

  • 我正在运行带有节点 v 4.4.1 的 Ubuntu 14.04 的 ec2 微型服务器上运行迁移代码。
  • 查看图表后,我开始测量每个 dynamodb 请求的时间(所以我一开始不知道平均值是多少),大约 150,000 个请求的平均响应时间为 800 毫秒(仅 get & put,没有批处理命令或查询)
  • 我将项目存储在两个表中,一个使用整数哈希键,另一个使用整数哈希和排序键
  • 第二张表很大(有大约 440 万个项目并且还在增加)

【问题讨论】:

  • 您在“扫描 SQL 表”?但是您只列出了 Couchbase 和 DynamoDB,它们不是 SQL 数据库。您的意思是说您正在对 DynamoDB 表执行全表扫描?在我看来,您的整个问题仅仅是由于 DynamoDB 表上的预置吞吐量太低。您预置的吞吐量设置可能是与此问题相关的最重要信息,而您并未包含该信息。
  • 由于我们的系统是如何设计的,我们结合使用 Mysql 和 Couchbase,在 Mysql 中我们存储简单的数据,但在 Couchbase 中我们存储整个 json 对象。现在我们想要摆脱 couchbase 并转向 Dynamodb。如附图所示,该表的预置吞吐量为 125(红色水平线),消耗的吞吐量越来越低(开始时约为 100,然后下降到 20,然后低于 5)
  • 如果您知道“热分区键”,那么您配置的容量就无关紧要了,因为单个分片只能处理 N 个请求。

标签: amazon-web-services amazon-dynamodb


【解决方案1】:

感谢@Vor 提到“热分区键”,我已经做了进一步的阅读,并参考了Guidelines for Working with Tables,我遵循了他们的建议,并且我将我的请求分发到批处理请求中有所不同。
谢谢大家的帮助。

【讨论】:

    猜你喜欢
    • 2012-03-10
    • 1970-01-01
    • 2021-01-02
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2021-12-01
    相关资源
    最近更新 更多