GaussDB(DWS)查询过滤器原理与应用-焦点热门
摘要:GaussDB(DWS)查询过滤器(黑名单)提供查询过滤功能,支持自动隔离反复被终止的查询,防止烂SQL再次执行。
本文分享自华为云社区《GaussDB(DWS)查询过滤器原理与应用》,作者:门前一棵葡萄树 。
【资料图】
一、概述
GaussDB(DWS)查询过滤器(黑名单)提供查询过滤功能,支持自动隔离反复被终止的查询,防止烂SQL再次执行。
主要应用场景包含以下两种:
1. 异常熔断机制
配置异常规则后,查询触发异常规则后,异常信息将被记录在dbms_om.gs_blocklist_query系统表中。同一个查询触发异常规则次数超限(query_exception_count_limit)后,查询自动加入黑名单,黑名单信息同样保存在dbms_om.gs_blocklist_query系统表中。加入黑名单后,该查询将被隔离,拒绝执行。
2. 紧急拦截
作业引发CORE、hang或性能大幅下降等问题时,需要紧急规避时,可以将作业加入黑名单进行过滤。
原理介绍
查询过滤器使用作业Unique SQL ID保存和识别作业黑名单和异常信息,在SQL中常数值发生变化时作业Unique SQL ID不会随之发生变化。Unique SQL ID是遍历查询解析树计算出来的一个整数值,用于标识一类SQL。通常对于DML语句,在计算Unique SQL ID的过程中会忽略常量值。但对于DDL、DCL以及设置参数等语句,常量值不会忽略。例如,以下两个查询:
select * from t1 where id = 1;select * from t1 where id = 2;
这两条SQL除过滤条件中的常量不同外,其他全部相同,由此生成的解析树拓扑完全相同,因此Unique SQL ID相同。Unique SQL ID的计算只会忽略常数值,而不会忽略其他差异,SQL语句“select * from t2 where id = 1;”与上述两个SQL的Unique SQL ID就不相同。
将作业加入黑名单主要有以下两种方式:
- 在GUC参数query_exception_count_limit≥0情况下,作业触发异常次数超过该阈值后自动将作业加入黑名单;
- 调用内置函数gs_append_blocklist(unique_sql_id int8)将作业加入黑名单。
作业执行前判断作业是否在黑名单中,如果作业在黑名单中,拒绝作业执行,直接报错退出。
作业被拒绝执行后,对作业加入黑名单原因进行分析,问题解决后调用内置函数gs_remove_blocklist(unique_sql_id int8)将作业移除黑名单。
二、应用示例
2.1 异常熔断示例
1. 设置异常熔断阈值。假设设置query_exception_count_limit=1,即只要作业触发异常规则作业就会被加入黑名单。
2. 配置异常规则
创建CPU平均使用率异常规则cpu_percent_except,作业运行时间超过2000秒且CPU使用率达到30%时触发异常退出:
CREATE EXCEPT RULE cpu_percent_except WITH(ELAPSEDTIME=2000, CPUAVGPERCENT=30);
异常规则还支持BLOCKTIME、ALLCPUTIME、SPILLSIZE等异常的识别处理,具体可参考:异常规则简介与演变。
3. 创建资源池respool1关联异常规则cpu_percent_except。
CREATE RESOURCE POOL respool1 WITH(except_rule="cpu_percent_except");
资源池支持最多关联63个异常规则集,每个异常规则集间独立生效,互不影响。
4. 创建业务用户usr1,关联资源池respool1:
CREATE USER usr1 RESOURCE POOL "respool1" PASSWORD "XXXXXX";
5. 用户usr1运行作业,作业运行时间超过2000秒且CPU使用率达到30%时触发“cpu_percent_except”异常规则,作业触发异常规则后资源管理对作业进行以下处理:
- 将作业异常信息保存至系统表GS_BLOCKLIST_QUERY中;
- 如果作业触发异常熔断,将系统表GS_BLOCKLIST_QUERY中作业黑名单标志置为true;
- 更新GS_BLOCKLIST_QUERY中作业黑名单信息。
6. 查询作业黑名单和异常信息:
SELECT * FROM dbms_om.gs_blocklist_query; unique_sql_id | block_list | except_num | except_time---------------+------------+------------+---------------------------- 4066836196 | t | 1 | 2022-08-08 18:00:00.596269(1 row)
7. 用户usr1再次运行作业触发异常熔断,GaussDB(DWS)的异常熔断机制禁止该作业执行。
ERROR: The query is in the blocklist and cannot be run, unique_sql_id(4066836196).HINT: If you want to run the query later, confirm the reason why the query is blocklisted and remove the query from the blocklist after resolving the problem.
8. 优化用户usr1所运行ID为4066836196的SQL后,将ID为4066836196的SQL从黑名单移除。
确认SQL异常原因,如果异常规则配置不合理,修改异常规则;如果异常规则合理,对SQL进行优化后重新运行。确认问题解决后将SQL移除黑名单。
select gs_remove_blocklist(4066836196); gs_remove_blocklist--------------------- t(1 row)
2.2 紧急拦截示例
查询过滤器使用作业Unique SQL ID识别和保存黑名单信息,为有效运用查询过滤器紧急拦截功能,建议TopSQL开启,在作业引发CORE、报错、性能下降等问题时可以快速获取作业Unique SQL ID。
2.2.1 获取作业Unique SQL ID
获取作业Unique SQL ID的几种方法:
1. 作业引发报错/性能下降
CN日志中获取作业query_id,执行以下命令查询作业Unique SQL ID。
select queryid,unique_sql_id,query from pgxc_wlm_session_info where queryid=query_id;
2. 作业引发CN示例CORE
解析CORE打印内存中保存的Unique SQL ID对应的变量参数值。
3. 作业引发DN实例CORE
作业引发DN实例CORE时,CN侧体现为作业报错,Unique SQL ID获取方式可以参考作业报错时Unique SQL ID获取方式。
4. EXPLAIN VERBOSE获取Unique SQL ID(通用方法,但是仅821及以上版本支持)
EXPLAIN VERBOSE不会实际执行SQL,因此一般不会导致问题发生,使用EXPLAIN VERBOSE XXX;可以打印得到作业Unique SQL ID。示例:
postgres=# explain verbose select count(1) from pg_class; QUERY PLAN------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- id | operation | E-rows | E-distinct | E-width | E-costs ----+----------------------------------------+--------+------------+---------+--------- 1 | -> Aggregate | 2 | | 8 | 52.94 2 | -> Seq Scan on pg_catalog.pg_class | 1034 | | 0 | 50.34 Targetlist Information (identified by plan id) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1 --Aggregate Output: count(1) 2 --Seq Scan on pg_catalog.pg_class Output: relname, relnamespace, reltype, reloftype, relowner, relam, relfilenode, reltablespace, relpages, reltuples, relallvisible, reltoastrelid, reltoastidxid, reldeltarelid, reldeltaidx, relcudescrelid, relcudescidx, relhasindex, relisshared, relpersistence, relkind, relnatts, relchecks, relhasoids, relhaspkey, relhasrules, relhastriggers, relhassubclass, relcmprs, relhasclusterkey, relrowmovement, parttype, relfrozenxid, relacl, reloptions, relreplident, relfrozenxid64 ====== Query Summary ===== -------------------------- Parser runtime: 0.027 ms Planner runtime: 0.561 ms Unique SQL Id: 2307078791(17 rows)
2.2.2 将作业加入黑名单
获取到作业Unique SQL ID后,调用内置函数gs_append_blocklist(unique_sql_id int8)将作业加入黑名单:
postgres=# select * from gs_append_blocklist(2307078791); gs_append_blocklist--------------------- t(1 row)
2.2.3 查询黑名单信息
作业加入黑名单后,查询系统表确认黑名单加入是否成功:
postgres=# SELECT * FROM dbms_om.gs_blocklist_query; unique_sql_id | block_list | except_num | except_time---------------+------------+------------+------------- 2307078791 | t | 0 |(1 row)
2.2.4 再次执行作业触发紧急拦截
postgres=# select count(1) from pg_class;ERROR: The query is in the blocklist and cannot be run, unique_sql_id(2307078791).HINT: If you want to run the query later, confirm the reason why the query is blocklisted and remove the query from the blocklist after resolving the problem.
2.2.5 问题解决,将作业移出黑名单
postgres=# select gs_remove_blocklist(2307078791); gs_remove_blocklist--------------------- t(1 row)
点击关注,第一时间了解华为云新鲜技术~
标签:
推荐文章
- GaussDB(DWS)查询过滤器原理与应用-焦点热门
- 葛兰素史克(GSK.US)全球首款老年人RSV疫苗获欧盟委员会批准 世界百事通
- 【全球新要闻】无桩还车范围扩大!杭州小红车123处新服务点启用!名单来了
- 税收红利精准直达 经营主体减压力强信心
- 世界观热点:《街头霸王6》全球销量突破百万套 系列销量超5千万套
- 看热讯:快手极速版怎么办小号 快手极速版开小号教程
- 当前要闻:创业慧康(300451):6月7日北向资金减持6.56万股
- 四方游泳2022年上半年亏损536.47万 同比亏损减少 成本和费用减少
- 每日消息!富德生命传世金尊终身寿险保障计划保什么?有什么优点?
- 每日观察!深交所:*ST腾信股票终止上市
- 动态焦点:广汽集团:5月汽车销量为209606辆 同比增长14.50%
- 视点!目标3年1000家店!源氏木语亮相深圳展,实木新零售如何制胜?
- 【环球快播报】什么是笑刑 一小时_什么是笑刑
- 青年志愿者“爱心助考”-热点在线
- 南疆阿克苏的“流量密码” 天天快报
- 【全球独家】高考首日,考生乘坐“爱心送考车”奔赴考场
- 不仅仅是绿地:投资城市公园如何改善健康并节省资金-天天快消息
- 上海物贸3涨停
- 朱雀基金增持金力永磁(06680)11.08万股 每股作价17.12港元
- 吉尔吉斯斯坦安全部门拘留30余名组织骚乱嫌疑人|世界视讯
- 5000mAh+1亿像素,20GB+256GB,1mm窄边框手机跌至1187元敞开卖
- 世界焦点!白头宫女 白头宫女在全诗
- 酒泉市城镇老旧小区改造加快推进 世界最新
- 减轻房租压力!在济南租房可以享受这些公积金利好
- 卓创资讯:利空因素占主导 6月沥青价格或震荡小跌|新消息
- 海南橡胶:公司合同采用书面方式签署
- (10)贴心服务 助力高考|每日看点
- 提醒!端午节假期首日火车票明日开售 全球最资讯
- 上海今年第五批次新房将入市 共有7087套房源 当前看点
- 智立方06月07日主力资金大幅流出
- 动海报|开心冒泡!考完第一件事做什么?一家三口直接畅饮“快乐水”_环球观天下
- 焦点热讯:昊华科技(600378)6月7日主力资金净卖出1061.15万元
- 刚刚!义乌发布黄色预警!
- 中国旅行者出境游搜索热度暴涨近六倍
- 天天时讯:特斯拉人形机器人擎天柱Optimus原型机正式亮相
- 上海市纪委监委通报4起群众身边的腐败问题-天天快消息
- 苹果Vision Pro成本仅1500美元 每日播报
- 发现2例!均为密接!已隔离!_全球热门
- 环球观焦点:翁源县气象台发布雷雨大风黄色预警【III级/较重】【2023-06-07】
- 32辆电动车实测:特斯拉Model S跑最远 小鹏G9反向虚标最多|观点
- 今日精选:六五环境日国家主题展TA们成了明星
- 最新消息:孟晚舟现身上海!华为“根技术”发力国产数据库
- 环球热文:新中港06月07日主力资金大幅流出
- 55场23球16助,维尼修斯当选皇马2022-23赛季最佳球员
- 校企合作协同育人 产教融合共促发展——合肥职业技术学院与安徽菜大师农业控股集团有限公司开启战略合作
- iMovie撤销操作的简单操作
- 1小时6.5元!共享单车悄然涨价,已贵过公交地铁-每日动态
- 真空管道高速交通风险_真空管道高速交通
- 环球最资讯丨龙舟赛催生旅游热 多彩活动喜迎八方客
- 热门看点:今日欧市盘前美元兑瑞郎汇率交易策略(2023年6月7日)
- 一个没有财富效应的股市,一定不是一个健康的股市|天天热点评
- 重庆仙女山机场恢复至上海和成都直达航班
- 今日聚焦!金至尊今天黄金价格多少一克(2023年6月7日)
- *ST越博与财务总监徐方伟收警示函 业绩预告两度不准-全球球精选
X 关闭
最新资讯
- 一般纳税人房屋出租简易征收税率(房屋租赁税率11 简易征收5)-世界球精选
- 【时快讯】台湾新冠疫情再升温 死亡日增28例较前周增四成
- 金禄电子涨20.01%|世界最新
- 热头条丨舍得召开2023年供应链大会,百家供应链生态企业齐聚论道生态发展
- 利用好粮食增产“潜在粮仓” 旱碱麦丰收的“金融底肥”
- 2023高考丨永州高考首日——与青春相拥 向未来冲刺(组图)|当前快看
- 世界要闻:无乃尔是过与 翻译无乃_无乃尔是过与 翻译
- 头条:山东昌邑:5月份生猪价格低迷 粮食和鸡蛋价格下降
- 敦煌种业(600354)6月7日主力资金净卖出656.38万元
- 世界快资讯丨【海报】高考加油!
- 凯美特气:惠州凯美特气体有限公司例行停车检修完成并复产-当前要闻
- 如何设置淘宝退款到银行卡 淘宝怎么设置把退款退到银行卡上_每日热闻
- 油价欲振乏力 减产效应为何仅“一日游”?
- 环球快播:怎么举报qq号骗钱 怎么举报qq号
- 每日速递:深南电A:下属南山热电厂已进行虚拟电厂备案,暂未实质性运行
- 欧洲主要股指开盘涨跌不一
- 吉罗纳足球俱乐部的品牌和资产价值相较于上赛季有明显地提升 每日快看
- 环球讯息:重返未来1999律的调教1怎么通关-律的调教1通关攻略
- 走新型安全之路-今日聚焦
- 当代草圣·林散之书《毛主席诗词》草书字帖分享|版于1977年12月
- 一曲骊歌|全球观点
- 天天速看:美商会2023台湾白皮书建议速稳定能源供应
- 暑假带孩子旅游好去处推荐(暑假带小孩去旅游攻略)
- 狮山芦塘社区:筵开上百围 千叟享盛宴|环球热门
- 标致 3008 内饰公布:颜值秒杀 BBA
- 聚焦智能物流装备和解决方案,中科微至发展前景可期-天天热推荐
- 全球关注:德尔玛:6月6日融资买入1641.31万元,融资融券余额4832.01万元
- 世界热门:无锡市区近万名一线环卫工人将吃上爱心早餐
- 【原】那些逝去的岁月|实时
- 世界球精选!(赛马娘同人)新人训练员加油啊!第六十九话
- 全球报道:关于艾薇儿来华演出气场大 保镖簇拥牛气十足的相关信息
- 全球资讯:常见的氧化剂有哪些常见的还原剂有哪些_常见的氧化剂有哪些
- 【快播报】菲律宾5月通胀率6.1% 连续第四个月环比下降
- 当前时讯:楼市料峭寒意消融,60%的房企房价上涨!楼市真的回暖了吗?
- 如何写烤演讲|焦点消息
- 沪深股通|鲁抗医药6月6日获外资卖出0.11%股份 世界速讯
- 南京夫子庙挤满为高考祈福的人_父母深夜排队在孔子雕像前烧香_今日报
- 加加食品控股股东及实控人被列入失信被执行人|环球关注
- 公共营养师证书样本
- 每日头条!气氛热烈!伊藤美诚戴奥运金牌访问母校,再放豪言:巴黎夺冠
- 全球聚焦:室内设计与表现_关于室内设计与表现介绍
- 三国无双小兵催眠传全集黄月英_三国无惨黄月英h-全球新消息
- 移动无线上网卡资费套餐_移动3g上网卡资费-每日聚焦
- 林狗是什么梗是哪个明星 林狗的由来
- 涨奶有硬块怎么办(涨奶让人吸的视频)
- 天天速看:新浪财经千股千评个股_新浪股票千股千评
- 驾校招生营销话术_驾校招生营销方案
- 手机开不了机一直闪屏怎么办
- qq炸弹代码vbs_qq炸弹
- 吉林师范大学博达学院有哪些专业 吉林师范大学博达学院专业排名_时讯
X 关闭