我正在使用 Metabase 作为前端运行 Redshift 查询。我想检测并取消特定用户的长时间运行的查询。如何使用脚本自动执行此过程?
问问题
7496 次
4 回答
4
编写脚本并查询stv_recents表。它有pid
和duration
(以微秒为单位)。
如果查询超过阈值(就持续时间而言),则执行
cancel pid
.
您可以将此脚本放在 crontab 中并定期执行。
于 2017-08-17T13:46:16.533 回答
2
没有必要自己写这个!
您可以使用 Redshift 的内置查询监控规则 (“QMR”) 来根据许多指标控制查询,例如return_row_count
、query_execution_time
和query_blocks_read
(以及其他)。
超出规则中定义的限制的查询可以log
(无操作)、hop
(移动到不同的队列)或abort
(终止查询)。
您可以在 Redshift 文档中了解更多信息:“WLM 查询监控规则”
于 2017-08-17T18:18:46.843 回答
1
这可以设置为集群或工作负载级别的集群配置参数。工作负载是一个单独的查询队列,与特定用户相关联,并定义了允许使用的集群资源量。
在此处阅读有关查询超时的更多信息:statement_timeout和WLM 超时
此处有关工作负载管理的一般信息:配置工作负载管理
于 2017-08-17T14:30:39.340 回答
0
在 WML 下的 redshift 中,编辑工作负载队列并在其下添加自定义规则,定义查询执行类型和要执行的操作。
于 2021-05-31T16:54:28.550 回答