【发布时间】:2018-05-07 04:16:24
【问题描述】:
我们有很多过滤器(车辆年份、型号、品牌、司机姓名等)。每个选定的过滤器将生成 5-10 个 SQL 查询,这些查询在 5-15 秒的时间范围内执行。假设我们的用户非常快速地标记过滤器:选择了一些司机,下一个车辆,一些数据范围等。在 15 秒内,用户可以发送几十个 AJAX 请求,到达服务器并运行 SQL 查询,数据库阻塞,得到越来越多的查询,每次执行需要更长的时间。
我们考虑了在 AJAX 请求中止时停止查询的解决方案,但这不是一个简单的解决方案。有没有比 AJAX 请求中止时停止查询更好、更简单的解决方案?
我们将 Redshift 用于分析数据,将 PostgreSQL 用于用户数据等。 我们有高级缓存,用于缓存结果。红移有 16 dc2.large 实例的节点,我们还设置了 15 个并发查询 关于 WLM 配置(查询不排队)。我们为所有人提供编码 表、排序键和分布键。我们有几十张桌子,但只有一张 拥有大约 3 亿条记录和约 70 条记录的所有交易 列。 在 Redshift 性能选项卡上的 AWS 控制台中,我们可以看到领导节点在重负载期间的工作率为 99-100%,其他节点约为 10-30%。
【问题讨论】:
-
您需要优化您的 redshift 集群和查询它的方法。我认为这个问题超出了 stackoverflow 的范围,因为它需要详细分析,并且可能需要与有能力且经验丰富的红移专家一起工作一周。当您说“每个选定的过滤器将生成 5-10 个 SQL 查询,这些查询在 5-15 秒的时间范围内执行”时,这表明您可能完全以错误的方式接近红移。如果您想详细说明这些查询、它们的外观、表中有多少数据等,我们或许可以提供帮助。
-
谢谢。我刚刚编辑了帖子并添加了更多信息。
-
opax,你能举例说明一下需要这么长时间的查询吗?以及需要多长时间?
标签: java ajax amazon-redshift database-performance