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)查询过滤器原理与应用

摘要:GaussDB(DWS)查询过滤器(黑名单)提供查询过滤功能,支持自动隔

06-08 05:18:46

*ST越博与财务总监徐方伟收警示函 业绩预告两度不准

中国经济网北京6月7日讯证监会江苏监管局网站日前公布的《江苏证监局关

06-08 04:39:40

手机问题:努比亚Z30pro支持5G吗_世界热门

科技、数码、互联网新闻如今都成为了大众所关注的热点了,因为在我们的

06-08 04:32:47

观热点:明日特攻队礼包兑换码是多少(明日特攻队礼包兑换码一览)[多图]

明日特攻队礼包兑换码是多少·在明日特攻队这款非常好玩的3d休闲解压射

06-08 03:17:17

三德科技:截至本公告日,朱先富累计质押股数为150万股

三德科技(SZ300515,收盘价:15 11元)6月7日晚间发布公告称,截至本

06-08 03:15:55

每日热闻!兴业证券:维持达利食品(03799)“增持”评级 高管履新激发公司新活力

兴业证券预计达利食品(03799)2023-25年归母净利润为32 4 36 4 40 9亿元。

06-08 02:48:02

泰罗科学管理理论的中心问题是a提高劳动生产率_泰罗科学管理理论的中心问题是什么

想必现在有很多小伙伴对于泰罗科学管理理论的中心问题是什么方面的知识

06-08 02:12:15

世界最资讯丨昆凌17岁就被周杰伦追到手,她的旧照曝光后,难怪周杰伦急不可耐

大家都知道周杰伦的妻子是昆凌,两个人同框的时候就是粉丝吃狗粮的时候

06-08 01:37:05

鸿海旗下富智捷ADAS驾驶辅助系统量产出货-环球视点

据台湾“中央社”消息,6月7日,鸿海集团旗下富智康子公司富智捷(Mobi

06-08 01:09:19

富阳区政府召开第23次常务会议

富阳区政府召开第23次常务会议杭州网发布时间:2023-06-0714:23富阳日

06-08 00:42:55

拱东医疗:公司扩产项目尚无实质性进展

同花顺金融研究中心6月7日讯,有投资者向拱东医疗提问,尊敬的董秘,请

06-07 23:52:50

韶关特产必买清单大全带图_韶关特产-世界最资讯

想必现在有很多小伙伴对于韶关特产方面的知识都比较想要了解,那么今天

06-07 22:48:30

港股部分内房股走强 合景泰富、龙光集团涨超7%

观点网讯:6月7日,港股部分内房股走强。截至发稿,合景泰富集团涨7 79

06-07 22:35:22

沙漠里的“问诊专家”丨挺进“无人区”,为“深地一号”保驾护航_环球热消息

如今,在全世界第二大流动沙漠——塔克拉玛干沙漠腹地,被誉为“深地一

06-07 21:57:50

全球观焦点:初中女厕精品视频网站(0女厕大小便)

1、阴部。2、出尿的地方叫尿道。本文就为大家分享到这里,希望看了会喜

06-07 21:59:14

中国长城收年报问询函 要求说明业绩对政府补助是否存在重大依赖

6月6日,中国长城披露了深交所对其2022年年报下发的问询函,问询内容主

06-07 21:41:36

青海1至4月新增减税降费及退税缓费16.14亿

中新网西宁6月7日电 (张世雷 韩世峰 李隽)7日,记者从国家税务总

06-07 20:53:49

天天快消息!渤海化学:全资子公司渤海石化拟投建丙烯酸酯和高吸水性树脂新材料项目

渤海化学公告,全资子公司渤海石化拟投资建设丙烯酸酯和高吸水性树脂新

06-07 20:47:34

全球首发!省人医专家参与的临床试验公布重大成果,为高血压治疗投下“重磅炸弹”

全球首发!省人医专家参与的临床试验公布重大成果,为高血压治疗投下“

06-07 20:16:50

环球短讯!金百泽:研发了400G光模块PCB关键工艺技术

金百泽在互动平台表示,公司研发了400G光模块PCB关键工艺技术,该技术

06-07 19:46:53

天天热消息:创新设计使太空轻型太阳能电池的效率翻倍

艺术家对月球基地活动的印象。宾夕法尼亚大学的研究人员提出了一种改进

06-07 19:16:52

近视防控科普舞台剧《瞳梦国奇旅》走进蒸湘区大立实验小学 环球简讯

活动现场。活动现场。红网时刻衡阳6月7日讯(通讯员刘寅晖)为科学防控

06-07 18:22:01

天天新消息丨凹凸凹软件_凹凸曼 应用软件

1、凹凸曼App是一个专属大码mm的时尚穿搭、美妆和健康瘦身的移动应用。

06-07 18:32:57

您敢选电车吗?撞收费站起火的案例带给我们哪些警示

日前南方发生一辆电车撞收费站起火致死案例,您还敢选电车吗?作为普通

06-07 17:36:15

AI“秒”写高考作文,教坛名师逐一打分点评

今天是高考首日,上午首场语文考试刚刚结束,大家最关心的作文题目就已

06-07 17:13:01

每日看点!Etched.ai获536万美元种子轮融资

Etched ai是一家美国语言模型推理专用芯片设计研发商,公司致力于构建

06-07 17:07:10

天天信息:电影《极寒之城》济南路演 夏雨差点成了武打戏演员

夏雨差点成了武打戏演员(主题)齐鲁晚报记者 宋说        由

06-07 16:57:32

如何应对生成式大模型「双刃剑」?之江实验室发布《生成式大模型安全与隐私白皮书》-世界热闻

机器之心发布作者:之江实验室当前,生成式大模型已经为学术研究甚至是

06-07 16:31:19

世界信息:新洲四中好邻居 爱心送考十年不断

新洲四中好邻居爱心送考十年不断---湖北日报讯(通讯员陶火应)6月6日

06-07 15:21:30

当前快看:如何用CATIA给工业设计加上“创意的翅膀”?

如何用CATIA给工业设计加上“创意的翅膀”?- 凯思软件企业研发创新体

06-07 14:47:19

全球观察:2023癸卯年1公斤金制纪念币价格(2023年06月07日)

金投网提供2023癸卯年1公斤金制纪念币价格(2023年06月07日),2023癸

06-07 14:36:44

长江全长有多长?长江是人工挖的还是自然形成的? 每日热文

长江全长有多长?长江全长6387千米。长江发源于世界屋脊——青藏高原

06-07 13:22:24

唯一药物即将退出中国 罕见病患者遇到罕见时刻

唯一药物即将退出中国罕见病患者遇到罕见时刻,

06-07 13:10:26

全球快报:港股概念追踪 | 存款利率即将再降?国有大行存款利率或即将全面进入“2时代”(附概念股)

智通财经APP获悉,国有大行存款利率或即将全面进入“2时代”。据报道,

06-07 12:25:19

中消协发布消费警示:警惕培训班退费骗局-当前热闻

6月7日,中国消费者协会(以下简称“中消协”)发布培训班退费骗局警示

06-07 12:01:01

中国女排主教练排行榜:蔡斌未进前5,郎平仅排第3,榜首实至名归

中国女排在圆满完成了世界女排联赛日本名古屋站的4场比赛之后,根据计

06-07 09:52:28

快讯:【温周】小神医与狗蛋(五)

席间,让甄衍更觉不寻常的是,赵蝎儿一直热情地在给狗蛋劝酒,这狗蛋也

06-07 09:37:02

天天视点!沪深股通|创业慧康6月6日获外资卖出0.01%股份

同花顺数据显示,2023年6月6日,创业慧康获外资卖出14 87万股,占流通

06-07 09:14:22

官方通报:“云南一导游暗讽游客不消费”视频调查结果来了

关于抖音平台上发布的“云南一导游暗讽游客不消费”视频的调查进展通报

06-07 08:28:42

炫神是谁_炫狗是什么梗炫神为什么叫炫狗

想必现在有很多小伙伴对于炫狗是什么梗,炫神为什么叫炫狗方面的知识都

06-07 07:40:44

个加一笔是什么字15个_个加一笔是什么字

1、了字加一笔有孒、子、孑、孓。2、一、了的释义[le]用在动词或形容词

06-07 07:43:25

圣女果网络上是什么梗 圣女果网络意义_今日精选

想必现在有很多小伙伴对于圣女果网络上是什么梗(圣女果网络意义)方面

06-07 07:23:31

蛟龙号创造中国深度新纪录_蛟龙号创造了中国深度

1、解答:已知:超声波在海水中的传播速度是v=1500m s。2、超声波传到

06-07 06:40:09

散光是怎么造成的可以治吗_散光是怎么造成的

1、散光是因为当我们的眼睛看一个物体时,物体的每一个像都会反射出一

06-07 06:20:05

美媒:“傲慢与虚伪”令全球南方远离美国|每日消息

美国《华盛顿邮报》网站6月2日刊登专栏作家法里德·扎卡里亚的文章,题

06-07 06:05:10

六要六不要内容 黑龙江_六要六不要内容 当前短讯

1、我们教室墙上贴了一张十要十不要“六要六不要”顺利过中考如果把中

06-07 05:40:42

全球热点评!汽车半轴坏了的症状_汽车半轴

1、半轴是差速器与驱动轮之间传递扭矩的实心轴,其内端一般通过花键与

06-07 05:33:51

这7件事上,爸爸越用心,孩子越优秀,家庭越和睦|每日观点

在孩子的成长过程中,父亲的角色是至关重要的。父亲的用心关注和教育,

06-07 04:46:54

海豚人是什么意思_海豚人是真的吗

1、假的!当时世界上都不支持中国对越南动武,如果有这种事,中国还不

06-07 04:23:42

乌克兰官员称目前扎波罗热核电站辐射在正常范围内|世界速读

乌克兰官员称目前扎波罗热核电站辐射在正常范围内:据媒体,乌克兰国家

06-07 03:38:48

侯友宜新竹县参访 宣明智作陪引揣测_动态
世界今头条!我的世界钓鱼技巧大全(我的世界钓鱼技巧)
全球热讯:高阳社会保障局电话是多少
蒙牛乳业(02319)将于6月21日派末期股息每股0.402元|当前速读
1豪克等于多少微克_1毫克等于多少微克
德国4月工业新订单环比下降0.4%_独家焦点
山东选调村官_山东村官待遇
湖北高考考场首设“智能安检门”|全球快播报
征夷大将军和关白哪个大_征夷大将军-当前热闻
开発三昧全集在线观看_开発三昧动漫在线观看
OPPO Reno10 系列灿烂金遇上芒种:金色的契合,所爱跃然眼前
联电5月收入188亿元新台币 同比下降23% 当前关注
天天即时看!“十四五”以来天津PM2.5年均浓度累计下降22.9% 降幅全国名列前茅
歇后语水仙不开花_关于花的歇后语集锦
葛兰素史克的癌症药物Jemperli获得美国FDA认可
阿尔巴尼亚的星星 毛利坦尼亚国旗上的月亮和星星是什么意思?
A股异动|玉禾田(300825.SZ)跌超8% 股东及董事拟合计减持不超6.72%股份_环球头条
马斯克称赞比亚迪:过去是我小瞧它了 环球关注
高考天气指南:全国有两个雨区 不会出现大范围高温天气-消息
今日热讯:高顿教育:通过USCPA考试以后可以不申请执照吗
农业银行大额存单利率上调了?存入25万元,年利息能拿多少?
紫燕食品净利润毛利率连年大降,缺斤少两与食品安全投诉不断|环球快资讯
洋的声母是零声母韵头是什么(零声母怎么标记) 全球热头条
环球观速讯丨马上评|AI克隆人上线:我们能脱离物理世界而存在吗?
广西打造沉浸式全域旅游大集市 再现“文旅大狂欢”
世界环境日|人为干扰环保自动监测结果 环保公司及其负责人被追责|全球快报
上交所:杭州热电近期出现严重异常波动情形
在产品迭代更新的过程中测试驱动_在产品-全球今头条
世界微速讯:湖北鄂州:多子女家庭公积金最高可贷65万元
唯品会公布329事故处罚结果|精选
世界今头条!铁路局认可的专科学校_武汉铁路职业技术学院怎么样
晶科前高管下海创业,成立仅4年冲击IPO,高景太阳能募资50亿补血扩产能-环球最资讯
山推股份接待中泰证券等多家机构调研|全球速递
被踢出特斯拉北美供应链?宁德时代回应了 全球新视野
电池级、工业级碳酸锂各涨2500元/吨
世界观天下!歌单分组名称大全个性_歌单分组名称
第八届“阳光论坛”暨西藏“双碳”战略机遇与可再生能源综合利用高端研讨会举办|世界热议
19 人不幸遇难!当地村民讲述更多细节
cku会员官方电话_cku官网会员中心
为给战士们在除夕夜吃上炖粉条 炊事班长英勇牺牲 倒在胜利前夜
环球讯息:ST华铁:截至2023年5月31日,公司总股东户数为41,892户
惨遭17分大逆转!掘金不败金身告破!完胜巴特勒 环球微头条
天天速讯:宰羊乡(关于宰羊乡介绍)
科尔做客追梦播客节目 后者发推预热:追梦秀冠军限定版!|动态
杨清华 十二生肖一周运势6.5-6.11
星巴克首位空降CEO:我现在有了中文名字
去年交付房源超2万套,“保交付”成中交地产重要业绩保障
观天下!汽车保险续交怎么操作
bottoms rate_bottoms
天天速读:北京:未成年人审判实现融合发展
x 广告
x 广告

Copyright ©  2015-2022 南极纤维网版权所有  备案号:粤ICP备2022077823号-13   联系邮箱: 317 493 128@qq.com