Redshift:检测并取消每个用户连接的长 运行 查询

Redshift: Detect and Cancel Long running queries Per User Connection

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

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

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

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

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

在此处阅读有关查询超时的更多信息:statement_timeout and WLM Timeout

关于工作负载管理的一般信息:Configuring Workload Management

这个不用自己写!

您可以使用 Redshift 的内置查询监控规则 ("QMR") 根据 return_row_countquery_execution_timequery_blocks_read 等多个指标来控制查询(除其他外)。

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

您可以在 Redshift 文档中了解更多信息:"WLM Query Monitoring Rules"

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