gp大查询清理
更新时间: 2024-11-06 16:36:12
阅读 20
背景:
某些客户场景会有大查询sql,时间长了会影响gp的性能,所以需要清理
清理脚本:
需要注意:脚本在部署时,需根据部署GPHOME、source、MASTER_DATA_DIRECTORY更改;脚本部署用gp管理员账号
#!/bin/bash
GPHOME=/home/gpdb/greenplum-db
LOGFILE=/home/gpdb/long_query_cancel_history
source $GPHOME/greenplum_path.sh
t=`date "+%Y-%m-%d %H:%M:%S"`
echo $t >>$LOGFILE
# BI后端的查询默认超时时间就是10 minutes,因此select 配置超过10 minutes就直接取消掉查询
psql -x -d netease -q -c "select now(), query_start, current_query, pg_cancel_backend(procpid) from pg_stat_activity where current_query != '<IDLE>' and query_start < now() - interval '10 minutes' and usename = 'youdata'" >> $LOGFILE 2>&1
# BI后端的insert语句会长达几十分钟,这里需要配置的超时时间长一点
psql -x -d netease -q -c "select now(), query_start, current_query, pg_cancel_backend(procpid) from pg_stat_activity where current_query != '<IDLE>' and query_start < now() - interval '60 minutes' and usename = 'youdata_insert'" >> $LOGFILE 2>&1
# DDL类型的操作理论上不会维持太久,可能会因为查询卡住一段时间,因此超时时间与普通查询一致
psql -x -d netease -q -c "select now(), query_start, current_query, pg_cancel_backend(procpid) from pg_stat_activity where current_query != '<IDLE>' and query_start < now() - interval '10 minutes' and usename = 'youdata_admin'" >> $LOGFILE 2>&1
将上面的内容复制到query_monitor.sh脚本中,按照部署情况修改脚本前面的几个关键变量值后,保存增加执行权限
使用crontab -e定期调度该脚本,推荐调度频率是一分钟一次.
文档反馈
以上内容对您是否有帮助?