摘要: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就不相同。
将作业加入黑名单主要有以下两种方式:
作业执行前判断作业是否在黑名单中,如果作业在黑名单中,拒绝作业执行,直接报错退出。
作业被拒绝执行后,对作业加入黑名单原因进行分析,问题解决后调用内置函数gs_remove_blocklist(unique_sql_id int8)将作业移除黑名单。
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”异常规则,作业触发异常规则后资源管理对作业进行以下处理:
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)
查询过滤器使用作业Unique SQL ID识别和保存黑名单信息,为有效运用查询过滤器紧急拦截功能,建议TopSQL开启,在作业引发CORE、报错、性能下降等问题时可以快速获取作业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)
获取到作业Unique SQL ID后,调用内置函数gs_append_blocklist(unique_sql_id int8)将作业加入黑名单:
postgres=# select * from gs_append_blocklist(2307078791); gs_append_blocklist--------------------- t(1 row)
作业加入黑名单后,查询系统表确认黑名单加入是否成功:
postgres=# SELECT * FROM dbms_om.gs_blocklist_query; unique_sql_id | block_list | except_num | except_time---------------+------------+------------+------------- 2307078791 | t | 0 |(1 row)
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.
postgres=# select gs_remove_blocklist(2307078791); gs_remove_blocklist--------------------- t(1 row)
点击关注,第一时间了解华为云新鲜技术~
标签:
【多措并举确保粮食安全】亩产588.06公斤!我省旱地小麦单产再创新高
家里拆迁可以申请经适房吗? 拆迁户能申请经济适用房吗_天天讯息
颜值高还省油!新款捷豹 SUV 上市 同级唯一可选插混? 全球快资讯
连连看小游戏免费_连连看2 6|当前速读
奇瑞汽车六次上榜,“民族品牌”的排面从何而来?
国内多地县域充电桩安装量翻番 呈现哪些新趋势?
【环球报资讯】大学的数学专业有哪些科目考研究生要考
【天天报资讯】amd cpu怎么安装_cpu怎么安装
全球百事通!led灯是什么材料制成的
关注:山西移动网上营业厅_山西电信网上营业厅官网
招商银行临时额度到期(临时额度到期了是不是要全部归还)
全球微速讯:2023年深圳有多少个区_深圳有多少个区
热资讯!launcher_launch
2023年中国龙舟公开赛(湖北·荆州站)开赛 今日报
icloud下载照片是拍摄时间吗_icloud下载照片|天天报道
三角形底面积计算公式_三角形面积计算公式大全 全球讯息
当前看点!法线贴图原理_法线贴图
三七撞上二十一下载地址_三七撞上二十一下载_焦点精选
高盛:市场对美国通胀下降的速度预期太乐观了_每日快报
动态焦点:Redmi K60E送不送贴膜吗
焦点观察:0-3波兰队!中国女排无缘七连胜,分析有3大输球原因
5c 5s屏幕通用吗(5c 5s)
第一季度电力概念股每股收益排行榜一览
天天新资讯:国家防总对浙江等省份启动防汛四级应急响应
“家门口的便民集市”真暖心
杨颖,杨紫,王源,乐华,虞书欣
神农乡村生态环保(山西)有限公司在夏河开展投资考察活动 环球今日讯
即时焦点:文化石家庄——神秘中山国(上)
河南发布地质灾害黄色预警!这些地方有大到暴雨、局部大暴雨|天天热推荐
儿子被喂食大量安眠药,母亲和情夫当晚做肮脏之举,父亲死不瞑目
焦点快报!乡村之美丨浙南小渔村实现年游客量超八十万!秘诀是什么?
发射天宫2号的目的是什么意思_发射天宫2号的目的是什么 环球今日讯
环球新消息丨忻城税务:多措并举推动纳税缴费服务再升级
6:17:监管层释放重磅信号,A股牛蹄能否归来?
世界热推荐:山东艺术学院举行2023届毕业生毕业典礼暨学位授予仪式
原神苍漠囿土挑战方碑完成攻略
户枢不蠹流水不腐意思_户枢不蠹
水利部和中国气象局联合发布山洪灾害气象黄色预警
热消息:哈洽访谈|封昌红:为哈洽会插上创意设计的翅膀
洛雪音乐助手使用方法介绍
弗洛伊德死亡3年后,美国发布重磅报告揭种族歧视问题_天天看热讯
全球看热讯:龙韵股份(603729)6月1日股东户数0.91万户,较上期增加12.16%
2023年中国房企品牌排行TOP100
当前报道:原神:旅行者新皮肤又来了,新专武曝光?宵宫、甘雨皮肤超好看!
湖南开展专项整治行动保障农民工工资支付
牛皮沙发的种类_牛皮沙发的选购技巧是什么 每日看点
片碱的化学式怎么写(片碱的化学名称)|快资讯
环球微动态丨世界防治荒漠化与干旱日 | 防沙治沙的“中国智慧”
划龙舟看龙舟,五类安全提示莫疏忽!-焦点速读
世界球精选!三溪村夜赛龙舟盛大启幕!红花郎携手千年古邑共话经典与传承
qq.com_fcm qq com_世界新消息
当天成团/当天勘察/当月开工,昊铂发布超充到家“当日达”
2022年全国社会物流总额实现347.6万亿元!《中国商贸物流发展报告(2022年)》发布|今日关注
全球热门:空中俯瞰山水相融美如画 感受祖国大地夏日之美
沭阳县塘沟镇碾盘村:开展“阅汇四季”之阅读一“夏”主题活动
环球简讯:专家谈东西方文明互鉴:促进中外年轻人走进彼此生活
世界观天下!美国计划向乌克兰提供F-16战机 俄称已向美方发出外交照会
普拉提45分钟全套教程(普拉提)
智慧骨科机器人落户杭州医院 为患者提供更加安全、精准的医疗服务 环球看点
全球资讯:则Pixel手机应在重新启动时显示新的黑色启动动画
世界观察:卢大使卸任,临别赠言让欧洲如坐针毡!
欧吉桑和欧巴桑_欧吉桑
酒协公布!2023白酒圈“大洗牌”,五粮液王者归来,茅台地位不保 当前资讯
M5改装跑车驾驶好玩吗 M5改装跑车驾驶玩法简介_世界快播
哈尔滨站到太平机场大巴时刻表(哈尔滨火车站到机场大巴时刻表)
即时看!邮轮复航在即,准备好了吗?山东港口联合各方开展邮轮作业模拟通关演练
江西通报:是“老鼠类啮齿动物头部”
二战老照片完美上色:英勇的意大利游击队员 美军士兵鏖战硫磺岛
护航中考 浐灞公安推出多项暖心服务举措
李玉斌(关于李玉斌的简介) 全球聚看点
个人签名怎么写才霸气女_个人签名怎么写|环球热文
天天即时:拼多多百亿补贴618狂欢来袭 每人最高可领290元优惠券
美股异动|哈门那跌2% 2023财年每股收益指引低于预期 环球热点
天天日报丨世界主要国家海军一个航母打击群 通常由几艘各类舰艇编成 _360
重点聚焦!微信有人工客服吗在哪里(微信有人工客服吗)
市民体验大运会交通保障 设置大运会专用道 增加K6K7车次_天天热消息
空调什么牌子的好还便宜_空调什么牌子的好|热点评
属羊的是199几年出生的_属羊的是哪一年出生的简介介绍
世界观天下!非典型形态的危害食品安全犯罪
焦点速读:赛博仙侠外壳+传统文化底蕴,《梦幻新诛仙》新门派“泰裤辣”
金昌市首个邮银“乡村振兴金融工作室”挂牌成立-今日讯
关注:缺陷责任期与质量保修期的区别和判定_缺陷责任期与质量保修期的区别
河西区:发挥金融资源优势 助推实体经济发展
温暖的弦结局_温暖的弦大结局简介和详情介绍
电子数据取证可破解不法分子AI换脸术——对话中国科学院软件研究所研究员、博士生导师丁丽萍
天天讯息:6月20日,第十三届中俄文化大集在黑河开幕!大集活动剧透
观察:新华全媒+|探访高考评卷现场:各地严把评卷质量关
人有三把火什么意思?火灭了会死?-每日讯息
全球热头条丨记者观察 | 人民币汇率的韧性与弹性
全球看热讯:华润系入股金种子酒一年后:扭亏为重任、继续引进人才
马戴灞上秋居_灞上是什么意思 每日快播
英国央行6月料升息至4.75%,因通胀意外顽固-全球信息
热点!京津城际扩容 天津各站去往北京方向日均总运能增加超1.6万人次
盐城市优化金融服务激活实体动能
福建罗源:迎峰度夏 保障电煤供应|世界讯息
特斯拉FSD全面入华,谁松了一口气?
微资讯!南岭民爆:子公司中标47亿元工程项目
海口综保区金盘园区中央大道改造完工试通车
我在尼泊尔的街头用长焦镜头抓拍的照片 全球看点
采洽热烈人气旺