3

我正在使用 Metabase 作为前端运行 Redshift 查询。我想检测并取消特定用户的长时间运行的查询。如何使用脚本自动执行此过程?

4

4 回答 4

4

编写脚本并查询stv_recents表。它有pidduration(以微秒为单位)。

如果查询超过阈值(就持续时间而言),则执行 cancel pid.

您可以将此脚本放在 crontab 中并定期执行。

于 2017-08-17T13:46:16.533 回答
2

没有必要自己写这个!

您可以使用 Redshift 的内置查询监控规则 (“QMR”) 来根据许多指标控制查询,例如return_row_countquery_execution_timequery_blocks_read(以及其他)。

超出规则中定义的限制的查询可以log(无操作)、hop(移动到不同的队列)或abort(终止查询)。

您可以在 Redshift 文档中了解更多信息:“WLM 查询监控规则”

于 2017-08-17T18:18:46.843 回答
1

这可以设置为集群或工作负载级别的集群配置参数。工作负载是一个单独的查询队列,与特定用户相关联,并定义了允许使用的集群资源量。

在此处阅读有关查询超时的更多信息:statement_timeoutWLM 超时

此处有关工作负载管理的一般信息:配置工作负载管理

于 2017-08-17T14:30:39.340 回答
0

在 WML 下的 redshift 中,编辑工作负载队列并在其下添加自定义规则,定义查询执行类型和要执行的操作。

于 2021-05-31T16:54:28.550 回答