有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在AJAX请求中止时停止红移SQL查询的java替代方案

我们有很多过滤器(车辆年份、型号、品牌、驾驶员姓名等)。每个选定的过滤器将生成5-10个SQL查询,这些查询在5-15秒的时间范围内执行。假设我们的用户标记过滤器的速度非常快:选择了一些驾驶员、下一个车辆、一些数据范围等。在15秒内,用户可以发送几十个AJAX请求,这些请求到达服务器并运行SQL查询,数据库堵塞,得到越来越多的查询,每次执行都需要更长的时间

我们考虑过在AJAX请求中止时停止查询的解决方案,但这不是一个简单的解决方案。有没有比在AJAX请求中止时停止查询更好、更简单的解决方案

我们对分析数据使用红移,对用户数据使用PostgreSQL等。 我们有高级缓存,用于缓存结果。红移有16个 dc2的节点。在大型实例中,我们还设置了15个并发查询 在WLM配置上(查询不排队)。我们对所有人都有编码 桌子,分类键和分类键。我们有几十张桌子,但只有一张 拥有约3亿笔记录和约70万笔交易的大型公司 柱。 在AWS控制台上的Redshift Performance选项卡上,我们可以看到leader节点在重载时工作99-100%,其他节点工作10-30%


共 (1) 个答案

  1. # 1 楼答案

    首先,红移不适用于事务性数据库,而适用于分析性数据库。其次,如果有大量的查询,你应该考虑分组查询或缓存结果。此外,考虑使用work load management

    回到最初的问题,您必须找出由超时AJAX调用启动的查询。这些表将向您返回正在运行的进程和查询。接下来,您必须PG_CANCEL_BACKEND来取消查询,或者在最坏的情况下使用PG_TERMINATE_BACKEND来终止正在运行的进程。虽然没有简单的自动化方法,但如果你碰巧实现了自动化,请分享你的经验😛.