GaussDB(DWS)查询过滤器原理与应用
博客园 2023-06-08 06:23:09
摘要: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)将作业移除黑名单。

二、应用示例

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”异常规则,作业触发异常规则后资源管理对作业进行以下处理:

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

2023-06-08 06:23:09

@考生家长:给高考生的11条饮食建议快收好 环球观热点

2023-06-08 05:14:31

克明食品:子公司5月生猪销售收入同比增38.4% 今日播报

2023-06-08 04:41:18

6月7日山东地区烧碱价格盘整运行

2023-06-08 03:57:14

第五元素里面所有的歌曲?|速讯

2023-06-08 02:30:25

今年端午假期出行免车辆押金 一嗨租车受热捧

2023-06-08 00:55:27

闽清高考生速看!遗忘身份证不要慌

2023-06-08 00:06:10

滨江集团:今年截至目前交付的项目已超过10个

2023-06-07 23:22:17

手机问题:vivoS9e怎么设置门禁卡

2023-06-07 22:24:35

征和工业:公司浙江项目目前已签署《国有建设用地使用权出让合同》,资金来源为公司自有或自筹资金(包括但不限于通过银行贷款、股权融资等方式)_新资讯

2023-06-07 22:15:26

当前观点:TradeMonday获得新一轮投资

2023-06-07 21:20:43

广东自贸区累计实际利用外资近500亿美元 世界实时

2023-06-07 21:06:47

世界头条:264位高手巅峰对决!直击全国职工数字化应用技术技能大赛决赛现场

2023-06-07 21:03:26

2023年6月7日金店黄金一克多少钱

2023-06-07 18:56:34

环球快资讯丨阴阳师恶楼御魂怎么用 阴阳师恶楼御魂使用攻略

2023-06-07 18:19:25

港股异动:正大企业国际暴涨近70%

2023-06-07 17:32:54

奥海科技:公司充电枪除了供应于大客户之外,在自主品牌的线上旗舰店也有售卖

2023-06-07 16:49:24

董藩发文给出14条救楼市建议,看得出他这是用心良苦!-时快讯

2023-06-07 15:58:05

蒹葭歌曲邓丽君(蒹葭歌曲)-环球热消息

2023-06-07 15:11:30

pt950铂金回收价格今日多少钱一克(2023年06月07日) 全球即时

2023-06-07 14:25:18

2023榕江县村超(村FA)赛程表一览_每日短讯

2023-06-07 12:32:35

每日速读!记叙方法及作用_记叙方法

2023-06-07 10:01:02

热推荐:香港波肖门尾图库_香港波肖门尾图库大型免费图库

2023-06-07 08:35:09

TES零封NIP,阿水炸弹人玩开心了,赛后满脸笑容和对手握手

2023-06-07 07:24:55

今日播报!大江东去浪淘尽千古风流人物_大江东去浪淘尽

2023-06-07 06:29:30

全球热门:年报观察 | 许家印救生艇 恒大物业迟来的年报

2023-06-07 04:51:34

天天热点评!steam怎么下载游戏王决斗大师(steam怎么下载游戏)

2023-06-07 04:23:22

大花香水月季品种有哪些_大花香水月季品种

2023-06-07 03:14:51

as....as中间加什么_as as 中间加什么词 每日热讯

2023-06-07 02:47:31

酷冷至尊展示 Framework 机箱套件,重新利用笔记本模块化主板|天天聚看点

2023-06-07 02:04:13

林婉儿_关于林婉儿概略

2023-06-07 00:55:02

越博动力业绩预告不准确,公司及财务总监收警示函 世界今亮点

2023-06-06 23:49:55

厉玲:国际快时尚陆续撤店,优衣库为何发展稳健?

2023-06-06 22:49:26

vip购票须知_vip购|环球速看

2023-06-06 21:45:20

马克龙反对北约在日本东京开设联络处,外交部回应

2023-06-06 20:46:05

青岛远洋海事大学_青岛远洋大学 世界报道

2023-06-06 19:21:08

打造节约“新食尚” | 我市开展制止餐饮浪费专项行动-天天看热讯

2023-06-06 18:30:34

海南橡胶(601118.SH):收到征地社会保险费补贴361.26万元|全球新要闻

2023-06-06 17:41:49

振江股份拟定增募资不超3亿元 2022年定增募资5.72亿-世界新资讯

2023-06-06 16:31:06

环球微资讯!2023父亲节手抄报英文版内容

2023-06-06 14:52:07

装修公司不讲信用

2023-06-06 14:02:15

世界快讯:光大证券被严重警告!

2023-06-06 12:58:51

就读北京封闭式私立初中可以走读吗?

2023-06-06 12:27:47

阿尔巴尼亚vs哈萨克 世界大战时各国的代表动物?

2023-06-06 11:19:54

北京朝阳减碳项目征集!储能项目最高可申报20%总投资补贴!

2023-06-06 10:17:10

中国电建内蒙古乌拉特签署2×300MW压缩空气储能项目投资协议

2023-06-06 09:33:54

每日消息!信用卡变成呆账可以不还了吗

2023-06-06 08:33:06

天舟五号货运飞船完成与空间站组合体再次交会对接

2023-06-06 07:32:25

因装修噪音扰民被投诉,业主欲终止施工被扣2万余元

2023-06-06 06:54:06

云南首届全国瘢痕及痤疮诊疗专家论坛闭幕 世界速看

2023-06-06 05:42:14

联想滑盖手机评测(国产联想i380体验)_焦点关注

2023-06-06 04:21:47

当前播报:国产汽车的崛起:我国汽车出口量超日本,世界第一

2023-06-06 03:24:56

经营费用包括哪些费用_经营费用 天天百事通

2023-06-06 02:20:43

【全球速看料】百度网盘扩容100t方法(百度网盘扩容2t方法2020)

2023-06-06 01:33:00

粮食烘干设备_粮食

2023-06-06 00:50:01

倡导人与自然和谐共生 国家自然博物馆正式揭牌-环球快资讯

2023-06-06 00:10:24

刀剑神域op2_刀剑神域op-世界讯息

2023-06-05 22:59:20

深蓝S7首批量产车正式下线 预定价格区间16.99-23.99万元

2023-06-05 22:17:50

上海期货交易所期锡仓单日报(2023年06月05日) 全球简讯

2023-06-05 20:49:51

水溶性彩色铅笔能洗掉吗_水溶性彩色铅笔怎么用

2023-06-05 20:29:09

【独家】沐飒MUFASA竟是轻奢版的帕里斯帝

2023-06-05 18:59:00

【环球速看料】黄坤明到广州督导检查高考准备工作 严谨细致周密周全做好高考组织工作 让考生舒心家长安心社会放心

2023-06-05 18:34:18

蒸牛肉的做法大全_蒸牛肉的做法 环球时讯

2023-06-05 17:23:11

以数智科技赋能中药经典,汇仁肾宝片再展“新风貌”_通讯

2023-06-05 17:20:44

被单位开除工龄怎么算|今日视点

2023-06-05 15:45:30

世界最新:北京市公众环境意识不断提升助力北京生态环境持续改善

2023-06-05 15:09:53

【全球时快讯】U20男足世界杯四强产生

2023-06-05 14:34:06

小型飞机遭美军机紧急追击最终坠毁 机上人员信息透露!_世界消息

2023-06-05 13:33:51

锂离子电池 关于锂离子电池的介绍-环球新视野

2023-06-05 12:47:18

中国广电董事长宋起柱:为推动数实融合发展贡献广电力量

2023-06-05 12:06:43

微信绑定的手机号不用了 手机号被别人微信绑定了怎么办

2023-06-05 11:26:15

百事通!打两份工也要做公益 张景钱5年志愿服务近4000小时

2023-06-05 11:06:24

好评中国丨守护童心 筑梦未来

2023-06-05 10:16:49

贵州云南等地有较强降雨 焦点热闻

2023-06-05 09:19:45

每日聚焦:道达尔能源计划在美国建造合成天然气工厂

2023-06-05 08:35:28

遇到交通事故怎么处理(辅警遇到交通事故怎么处理) 环球消息

2023-06-05 07:44:46

血液的特征

2023-06-05 06:22:49

热问|购房资金不够借“消费贷” 有哪些法律风险?

2023-06-05 04:54:23

浏览器证书不安全怎么办_访问网站被浏览器证书拦截怎么办

2023-06-05 02:02:13

光伏A股周报56丨光伏龙头现分歧和天合光能遭重挫

2023-06-04 23:34:40

ip地址与其他系统冲突怎么解决_ip地址与网络上的其他系统有冲突怎么解决 全球独家

2023-06-04 22:00:23

当前最新:四川省乐山金口河区发生高位山体垮塌14人遇难5人失联

2023-06-04 20:53:46

连阳下周末再吹暖风!

2023-06-04 20:05:53

丹麦占地面积与人口_丹麦的面积和人口有多少|每日速递

2023-06-04 18:56:49

看热讯:想在同学面前露一手,13岁少年深夜偷开越野车

2023-06-04 17:50:08

当前短讯!登云股份:九名股东拟合计减持不超过2%公司股份

2023-06-04 16:46:30

14岁女孩心脏骤停!教室上演生死救援!

2023-06-04 15:57:28

西安:已撤离759户1811人!抢修持续!最新积水路段

2023-06-04 15:11:07

痴迷于石头上作画的超市老板娘,成了非遗传承人

2023-06-04 13:13:58

最新:古巴一辆大巴车发生侧翻 已致4死30伤

2023-06-04 12:10:20

最贵4800元 阿根廷中国行被指“票价刺客” 网友:把球迷当赞助商了?-环球观焦点

2023-06-04 11:10:14

大小脸非常严重该怎么办 大小脸很明显怎么办 焦点要闻

2023-06-04 10:12:10

北京今天白天晴间多云 昼夜温差较大

2023-06-04 09:28:58

短讯!江西省交投赣州管理中心打造“赣出彩”党建品牌

2023-06-04 08:25:50

即时:“5G+北斗”,高精定位能做些啥

2023-06-04 07:10:02

实时焦点:阿尔巴尼亚地堡视频(阿尔巴尼亚 地堡)

2023-06-04 06:07:43

官职任免升降的文化常识(太庙文化常识)

2023-06-04 04:14:32

蛇人帝国完整版_蛇人帝国by玲樱在线阅读-全球热讯

2023-06-04 02:27:26

不飞则已一飞冲天不鸣则已一鸣惊人的意思_不飞则已一飞冲天不鸣则已一鸣惊人_全球播资讯

2023-06-04 00:03:47

焦点资讯:松果体素的副作用(松果体素)

2023-06-03 22:48:38