摘要: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)
点击关注,第一时间了解华为云新鲜技术~
关键词:
天天速读:GaussDB(DWS)查询过滤器原理与应用 摘要:GaussDB(DWS)查询过滤器(黑名单)提供查询过滤功能,支持自动隔
南充顺庆:“清风”法治坝坝会 将法治力量融入乡村治理 6月6日,南充顺庆区人民法院清风法律服务志愿者团队联合新复乡人民政府
东北大学排名一览表及分数线是多少(东北的大学排名一览表) 北大学排名一览表及分数线是多少,东北的大学排名一览表这个问题很多朋
湖南高考作文是这个,你会怎么写? 6月7日2023年普通高校招生全国统一考试开考湖南47 77万名考生奔赴考场
官宣!本泽马2亿年薪加盟吉达联合,曝沙特再对梅西提高报价 关于薪资的讨论则是层出不穷,目前比较盛行的说法是吉达联合给本泽马开
北方长龙:6月6日融资买入394.14万元,融资融券余额3570.64万元 6月6日,北方长龙(301357)融资买入394 14万元,融资偿还540 03万元,
天天速读:GaussDB(DWS)查询过滤器原理与应用 摘要:GaussDB(DWS)查询过滤器(黑名单)提供查询过滤功能,支持自动隔
土耳其里拉持续贬值 再创历史新低 过去三年,里拉对美元已贬值67%。而为支撑土耳其里拉汇率,并为经常账
2023年中国碳钢行业发展分析 当前,我国钢铁产业正在逐步扭转去年需求低迷的状态,粗钢表观消费量和
2023年增量配电网行业发展分析 截至2022年底,我国电力辅助服务实现了6大区域、33个省区电网的全覆盖
环球播报:中国预制菜产业规模与市场投资前景 国内预制菜市场前景广阔,在出口与去年持平的情况下,今年前4个月整体
环球关注:2023国内速冻食品产品类别及市场发展增速 2023国内速冻食品产品类别及市场发展增速目前,国内的速冻食品类目基本
【世界报资讯】干电池行业发展概况 中国干电池行业供给区域及企业竞争格局分析2023 干电池是一种伏打电池,利用某种吸收剂(如木屑或明胶)使内含物成为不会
国有大行定期存款利率又要降了!已有股份行率先调整 3%以上寥寥无几-环球简讯 【国有大行定期存款利率又要降了!已有股份行率先调整3%以上寥寥无几】
长春高新回应股价跌停:公司经营一切正常 集采对业绩影响“中性偏好” 【长春高新回应股价跌停:公司经营一切正常集采对业绩影响“中性偏好”
洽洽食品:控股股东拟3000万至5000万元增持股份-当前最新 【洽洽食品:控股股东拟3000万至5000万元增持股份】洽洽食品(002557)6
环球关注:5900万元!山东奖励一季度“开门红”企业 引导工业生产加力提速 今年以来,山东省委、省政府将工业经济高质量发展作为“头号工程”,持
朗迪集团:高炎康及其一致行动人持有公司股份累计质押830万股 朗迪集团(SH603726,收盘价:12 2元)6月7日晚间发布公告称,截至本公
世界热头条丨注意!圣龙股份将于6月28日召开股东大会 圣龙股份(SH603178,收盘价:9 26元)6月7日发布公告称,2023年6月28
多氟多:定增募资额上限由55亿元下调为20亿元|环球热点评 【多氟多:定增募资额上限由55亿元下调为20亿元】多氟多6月7日公告,结
杰创智能董秘回复:数字化和人工智能是大势所趋,公司将深化该领域的研究,结合公... 杰创智能(301248)06月07日在投资者关系平台上答复了投资者关心的问题。
南充顺庆:“清风”法治坝坝会 将法治力量融入乡村治理 6月6日,南充顺庆区人民法院清风法律服务志愿者团队联合新复乡人民政府
交通银行手机银行App上线“长三角交政通”线上服务 焦点速看 四川经济网讯近日,记者从交通银行获悉,“长三角交政通”线上服务正式
换手率多少买股票最佳?换手率高说明什么? 换手率多少买股票最佳?一般情况大多股票每日换手率在1%―2 5%(不包括初上市的股票)。70%的股票的换手率基本在3%以下,3%就成为一种分界。当
成都工作最新招聘信息(成都工作)-全球热点 都工作最新招聘信息,成都工作这个问题很多朋友还不知道,来为大家解答
东北大学排名一览表及分数线是多少(东北的大学排名一览表) 北大学排名一览表及分数线是多少,东北的大学排名一览表这个问题很多朋
环球热资讯!现代生物技术主要内容包括(现代生物技术包括哪些) 代生物技术主要内容包括,现代生物技术包括哪些这个问题很多朋友还不知
仙佑医药:贴牌还是自建工厂?膏药企业选择与风险分析 仙佑集团膏药贴牌厂家了解到,随着人们对健康的关注度不断提高,膏药产业迎来了新的发展机遇。近年来,膏药市场的规模不断扩大,涵盖了各种
首届河西人才节启动 十大活动服务人才直通车:600至800间人才公寓将亮相 天津北方网讯:天津信创及数字产业人才与产业融合发展高峰论坛暨首届河
湖南高考作文是这个,你会怎么写? 6月7日2023年普通高校招生全国统一考试开考湖南47 77万名考生奔赴考场
天天速看:《乘风2023》徐怀钰竟成“黑马”,她的场外综合人气比谢娜还高 《乘风2023》正在热播,这档节目还没开播的时候,网友们都想知道哪位姐
国足最新一期大名单:艾克森武磊领衔 韦世豪徐新入选 搜狐体育消息,北京时间6月6日,中国足协官方宣布了最新一期的国足大名
官宣!本泽马2亿年薪加盟吉达联合,曝沙特再对梅西提高报价 关于薪资的讨论则是层出不穷,目前比较盛行的说法是吉达联合给本泽马开
阿斯:欧超推广公司A22将向法院提供欧足联威胁尤文退出的证据 直播吧6月7日讯据《阿斯报》报道,欧超推广公司A22将向马德里法院提供
天天短讯!中国数字孪生技术行业市场前瞻分析 2023年中国数字孪生行业研究报告 数字孪生城市作为智慧城市的进阶阶段,是以5G和AI等科技手段驱动城市的
洽洽食品:控股股东拟3000万至5000万元增持股份-当前最新 【洽洽食品:控股股东拟3000万至50...
朗迪集团:高炎康及其一致行动人持有公司股份累计质押830万股 朗迪集团(SH603726,收盘价:12 ...
和胜股份:公司在项目研发前沿领域一直与宁德时代保持深度合作|热点聚焦 和胜股份近期接受投资者调研时称,...
苹果Vision Pro震撼发布 产业链企业有望受益 6月6日,苹果在WWDC上正式发布了首...
怎样保存大米一年不坏?真空大米放了3—4年还能吃么? 怎样保存大米一年不坏?1、用锅煮花...
最新消息:河北省40幅摄影作品参加第三十四届华北摄影艺术展览 近日,第三十四届中国华北摄影艺术...
获奖名单公布!第十三届中国艺术节在河北雄安新区落下帷幕 9月15日晚,第十三届中国艺术节在...
2022北京时装周9月15日至22日将在线上线下举办多场活动 一年一度的北京时装盛典即将拉开帷...