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)查询过滤器原理与应用 每日热文
- 铁角飞驰怎么去(铁角飞地怎么去 魔兽世界7 0至高岭铁角飞地在哪里)
- 聚焦年轻化!联想昭阳推出商用笔记本X系列,定制需求1台起订、未来将只使用回收塑料-今日观点
- 世界海洋日:邀您参加海洋日线上有奖知识问答活动
- 山西潞安工程公司:充填开采提速提效 日充填量创新高 每日速递
- @ 全国游客,贵州国有A级景区门票五折优惠 今日报
- 世界简讯:菲菱科思:特定股东张海燕拟清仓减持所持1.87%公司股份
- 安溪以优秀文艺宣传贯彻党的二十大精神
- 每日速讯:银行抵押贷款多久能放款下来 大概是多久
- 概念动态|万凯新材新增“送转填权”概念|最新快讯
- 中电兴发董秘回复:公司目前暂时没有液冷技术的数据中心-当前最新
- 今日播报!科鲁兹安吉星使用说明 科鲁兹安吉星怎么用
- 【收评】沪镍日内上涨0.13% 机构称沪镍维持弱势 等待明朗_当前动态
- 上海物贸3涨停
- 【环球时快讯】广西壮族自治区南宁市宾阳县卫健局:开展科学补碘专项行动
- 环球速读:与其争夺国内第三座迪士尼,不如自己“支棱起来”
- 中再资环:全资子(孙)公司、控股子公司收到各类政府补助款项约855万元 世界今日报
- 国企领导出差与年轻女子牵手逛街?中央巡视组:将督促查实-环球热点评
- 朱雀基金增持金力永磁(06680)11.08万股 每股作价17.12港元
- 【天天速看料】发现2例!均为密接!已隔离!
- 奥斯卡颁奖顺序 81_奥斯卡颁奖顺序 观焦点
- 加拿大野火烟雾飘向美国,自由女神像和帝国大厦被笼罩|世界今头条
- 江苏:支持常州、南京等地新能源汽车品牌企业加大国际市场开拓力度
- 江苏:支持新能源汽车品牌企业加大国际市场开拓力度
- 【天天播资讯】凡人微光|师恩难忘
- 天天热文:2023年中国电力工程顾问集团西北电力设计院有限公司社招公告
- 中国5月外汇储备31765.1亿美元 全球头条
- 江苏出台14条稳外贸举措,支持企业出海抢订单
- ASMPT尾盘涨超3% 开源证券首予买入评级_热门
- 你们全力以赴 我们全力以护 ——武汉东湖高新公安推出“护考套餐”
- 最高人民法院关于对国家知识产权局《在新修改的专利法实施前受理但尚未结案的专利纠纷案件适用法律问题的函》的答复_对于最高人民法院关于对国家知识产权局《在新修改的专利法实施前受理但尚未结案的专利纠纷案件适用法律问题的函》的答复简单介绍
- “你安心考试,爸爸一直在考场外守护你”,长沙特警对考试的女儿这样说
- 天天热推荐:廉江市气象台发布雷雨大风黄色预警【III级/较重】【2023-06-07】
- 精选!民德电子:条码识别产品在彩票投注终端已有批量应用
- 高考首日,考生乘坐“爱心送考车”奔赴考场|世界今热点
- “泸州”合江县大桥镇:“小葡萄”串起乡村振兴“甜蜜链”-当前快播
- 英菲尼迪g25实际油耗多少正常_英菲尼迪G25实际油耗多少
- 环球资讯:有关美得让人心碎的句子
- 一小时5.6元 国内共享单车悄然涨价
- 焦点简讯:hp笔记本bios设置u盘启动(hp笔记本bios设置)
- 滦州市气象台发布高温橙色预警【Ⅱ级/严重】【2023-06-07】
- 【原】物是人非!恒大外援:亚冠上看不到一个昔日队友,我很伤心
- 巴塞罗那23-24赛季球裤——主场两种搭配|当前播报
- 人类擦屁股大全,看完隐隐作痛
- 唯一药物即将退出中国 罕见病患者遇到罕见时刻
- 安卓系统刷机包6.0(安卓系统刷机包)
- 天天热推荐:初级助理会计师什么时间查分2023
- 【环球聚看点】2023天津高考查分时间
- 重庆交巡警发布中心城区高考出行提示-天天播报
- 众智科技:6月6日融资买入2695.06万元,融资融券余额5339.31万元
- 理性看待REITs市场波动 回归长期价值投资
- 实干争先 跨越发展丨今年要落地10个以上“链主型”项目 “一条鱼”全产业链冲刺千亿规模
- 健康饮食(怎么健康饮食) 每日焦点
- 市场监管总局:5月11家车企共召回汽车118.21万辆
X 关闭
最新资讯
- 信息:设备投资回报周期计算公式_投资回报周期计算公式
- 沪深股通|君正集团6月6日获外资卖出0.02%股份-观焦点
- 安德烈·布恩戈
- 宏达电5月营收3.59亿元新台币同比增长18.28%
- 每日热文:纳思达(002180.SZ):目前上市公司体系内暂无3D打印业务,相关业务由控股股东赛纳科技旗下珠海赛纳三维科技开展
- 世界快资讯丨福建省福州市2023-06-07 00:58发布雷电黄色预警
- 天天短讯!因虚列费用等,人保财险涪陵李渡支公司合计被罚39万元
- 天天热文:迎的成语_新的成语
- 北京宣布!公积金提取有大变化-天天最资讯
- 6月6日北向资金最新动向(附十大成交股)_全球信息
- 安德烈·波佐
- 京粮控股(000505.SZ)4115.99万股限售股于6月12日可上市流通 环球短讯
- 每日快播:痒痒粉的作用_痒痒粉
- 当前最新:出版社书号价格2021年(出版社书号价格)
- 综合环保集团(00923)料去年亏损增幅约为45%
- 今日热门!我省开展“百场万企”大中小企业融通对接活动
- 今日热议:金价持续反弹,后市能否大涨?GMA天选指标人PK赛“赛况”激烈,指标学员连续霸占双榜首3天,盈利近10w美元,今天即将翻仓?点击查下最新排行榜>>>
- 环球看热讯:分销商和经销商的区别是什么_分销商和经销商的区别
- 疮疽指什么_疮疽怎么读 环球热闻
- 全球视点!中科磁业(301141.SZ)将于6月13日发放2022年度现金红利 每10派2元
- 澳优(01717.HK)拟1.477亿港元出售Pure Nutrition的60.0%权益及相关债务
- 工地用电安全规范十条_工地安全用电标语
- 群英赋online 群英赋三国原曲
- 气旋雨是什么_气旋雨
- 漯河市纪委监委"室组"联动,深入一线巡查监督确保高考公平!
- dsg延保卡掉了_dsg延保
- 环球快消息!房屋平面设计图,ps房屋平面设计图
- 热讯:蓝光发展摘牌 成今年A股首家退市房企
- 醉美赤壁车埠 三山三水四分田
- 济南中考成绩公布时间(2020中考成绩公布时间)
- 爱玛电动车限速怎么解除(电动车限速怎么解除)
- 全球快资讯丨汽车超速10%怎么处罚
- 全球观天下!天舟五号货运飞船完成与空间站组合体再次交会对接
- 平高电气:拟向3家银行申请46亿元综合授信
- 次序的英文(次序)_全球热点
- 八代雅阁左侧暖风不热的原因是什么呢_八代雅阁左侧暖风不热的原因是什么?
- 教育观察|穿过的衣服还要退,公德意识不能成为大学教育的短板
- 大宗交易:嘉元科技成交717.16万元,溢价0.19%(06-06)|全球百事通
- 【当前热闻】【青视点】北岸崛起!城阳出台最新国土空间规划,2035年人口总量破两百万
- 双良节能:光伏行业市场前景广阔 具备产能扩张的基础
- 全球短讯!这种虫子冲上热搜!千万别打,有人差点毁容、失明
- 给青少年男性的洗礼礼物创意_几百块送什么礼物给女孩子呢 观察
- 神舟有新知|神十五乘组返回独家纪实-环球快看点
- 海报|世界环境日:理一份“减塑”清单|环球快讯
- 郭明錤:ChatGPT比苹果Vision Pro在可见未来更能改变人类生活
- 京东养车618销售、用户全量爆发增长 成为北京地区消费者养车首选 今日播报
- 易班校方认证失败如何解决 易班校方认证教程|环球资讯
- 我市公布中心城区河湖水系5月份管护情况
- 全球动态:勤上股份6月6日盘中涨幅达5%
- 2万信用卡逾期1年会怎么样?信用卡逾期之后我们应该怎么办?
X 关闭