• 首页
  • 行业
  • 财经
  • 综合
  • 热点
  • 科技
  • 商业
  • 要闻
  • 观点
  • 经济
  • 社会
  • 法治
  • 文旅
  • 体育
  • 健康
  • 生活
  • 国际
  • 国内
  • 教育
logo
  • 科技 >
  • 正文

全球最新:GaussDB(DWS)查询过滤器原理与应用

2023-06-08 01:06:53 来源:博客园
摘要: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)

点击关注,第一时间了解华为云新鲜技术~

责任编辑:{ij7}

    为您推荐

  • 全球最新:GaussDB(DWS)查询过滤器原理与应用

    摘要:GaussDB(DWS)查询过滤器(黑名单)提供查询过滤功能,支持自动隔
  • 徐州小学私立的和公立的哪个好(徐州私立小学好还是公立小学好)

    每日小编都会为大家带来一些知识类的文章,那么今天小编为大家带来的是
  • 青城白鹭洲(吉安一中与白鹭洲高中有何区别)

    每日小编都会为大家带来一些知识类的文章,那么今天小编为大家带来的是
  • 全球消息!重庆初中学校排名(郑州北三环初中学校排名)

    每日小编都会为大家带来一些知识类的文章,那么今天小编为大家带来的是
  • 公立医院可以卖保健品吗(公立医院能卖小设备吗) 环球动态

    每日小编都会为大家带来一些知识类的文章,那么今天小编为大家带来的是
  • 四川传媒学院是公办还是民办一年学费多少(公办转民办后学费会不会涨) 热议

    每日小编都会为大家带来一些知识类的文章,那么今天小编为大家带来的是
  • 学校产权的房子能买吗(学校房子有产权吗) 世界聚看点

    每日小编都会为大家带来一些知识类的文章,那么今天小编为大家带来的是
  • 环球短讯!人字加一笔变10个字(人字加一笔变15个字)

    今天小红来为大家带来的是人字加一笔变10个字,人字加一笔变15个字,让
  • 传统村落消防安全有隐患 云南一镇政府被提起公益诉讼 焦点报道

    6月5日,普洱市中级人民法院发布一批极具典型性与代表性的环境资源案例
  • 推动实现“家门口的幸福”!苏州相城黄桥街道聚力党建便民服务|全球微头条

    推动实现“家门口的幸福”!苏州相城黄桥街道聚力党建便民服务“谢谢你
  • 七旬村民被村支书打住院,数月无人管?当地副镇长:正处理|全球速递

    七旬村民被村支书打住院,数月无人管?当地副镇长:正处理顶端新闻记者
  • (10)贴心服务 助力高考-今日关注

    (10)贴心服务助力高考新华社照片,南京,2023年6月7日贴心服务助力高
  • 江苏:支持常州、南京等地新能源汽车品牌企业加大国际市场开拓力度

    江苏省政府办公厅印发关于推动外贸稳规模优结构若干措施的通知。其中提
  • 当前视点!2023世界人工智能大会主题和主视觉发布,将于7月6—8日在上海举办

    2023世界人工智能大会将于7月6—8日在上海举办,以“智联世界生成未来
  • 电线载流量和空开选择大全_电线载流量

    1、电缆载流量:电缆载流量是指一条电缆线路在输送电能时所通过的电流
  • 本人乔迁之喜内容怎么写_个人乔迁之喜贺词-天天快看点

    1、搬新家,好运到,入金窝,福星照,事事顺,心情好,人平安,成天笑
  • 观速讯丨苏州交警大队违章查询_苏州交警违章查询系统

    1、在360安全网址导航页面左下方实用查询一览就可以看到“车辆违章”打
  • 比亚迪s6油耗2.0几个油_比亚迪s6油耗 环球新动态

    1、才开1000多公里,这个油耗算是正常的了,新车怎么也是需要磨合的。2
  • 名片尺寸一般多大尺寸_名片尺寸大小是多少

    1、名片标准尺寸:90mm×54mm、90mm×50mm、90mm×45mm。2、但是加上出
  • “星星相伴,抵达光曜” 怪兽充电为张杰演唱会实力续航 观焦点

    伴随着气候加速回暖,假期交替更迭,深受年轻人喜爱的春夏音乐季在多地
  • 世行上调今年全球和中国经济增长预期|独家

    新华社纽约6月6日电(记者刘亚南)世界银行6日发布最新一期《全球经济
  • 受贿1992615.31元!陈克祥一审获刑三年半|每日快看

    经审理查明,被告人陈克祥在先后担任岳阳市畜牧水产局局长、岳阳市城市
  • 青城山索道将于6月12日至16日进行设备维护,暂停运营 当前短讯

    关于青城前山索道停机检修的公告尊敬的游客:按照国家索检中心要求,依
  • 高度警惕!中消协发布警示

    然后再冒充政府部门、消协组织、培训机构、知名企业、第三方合作机构等
  • 全球热门:天津大学浙江研究院石英晶体微天平分析仪中标结果公告

    项目名称:天津大学浙江研究院石英晶体微天平分析仪等仪器设备采购项目
  • 环球观速讯丨亚一黄金价格今天多少一克(2023年6月7日)

    亚一黄金价格今天多少一克(2023年6月7日)
  • 天天热点!美联储或将继续收紧货币政策 黄金短期震荡

    周三(6月7日)亚洲时段,现货黄金小幅上涨,目前交投于1962关口附近。周
  • 环球头条:今日国际金价实时行情(2023年6月7日)

    今日国际金价实时行情(2023年6月7日)
  • 收评:两市震荡分化沪指小涨 通信服务板块走强

    收评:两市震荡分化沪指小涨通信服务板块走强
  • 沙特额外减产无法盖过需求忧虑! 国际油价延续跌势_全球速看料

    WTI原油期货价格今日一度跌超0 8%,随时可能跌破每桶71美元,国际油价

相关推荐

  • 全球最新:GaussDB(DWS)查询过滤器
  • 徐州小学私立的和公立的哪个好(徐
  • 青城白鹭洲(吉安一中与白鹭洲高中
  • 全球消息!重庆初中学校排名(郑州
  • 公立医院可以卖保健品吗(公立医院
  • 四川传媒学院是公办还是民办一年学
  • 学校产权的房子能买吗(学校房子有
  • 环球短讯!人字加一笔变10个字(人
  • 传统村落消防安全有隐患 云南一镇
  • 推动实现“家门口的幸福”!苏州相

阅读排行

  • 沙特“棒棒糖”能拯救油价吗? 全球速递
  • 世界微头条丨塞尔达传说王国之泪塔吉卡兹怎么打[多图]
  • 前沿热点:陈都灵穿缎面长裙优雅迷人 抹红唇绽放魅力
  • 播报:2023年河南宝丰县“文化和自然遗产日”系列活动启动
  • 把好“四关”防风险 焦点热闻
  • 四川眉山天府新区首个“双百亿”项目即将试生产
  • 每日聚焦:遇见喵克斯糖果制造厂如何进行解锁 遇见喵克斯糖果制造厂解锁攻略
  • 焦点热门:杰创智能:公司主营业务暂未直接涉及电子身份证领域
  • 吉视传媒:公司目前没有建立财务共享中心
  • 2023中国花儿大会文化展览准备工作有序推进

291 32 36@qq.com

Copyright © 1998-2015 by 中国北京网版权 所有 京ICP备12018864号-3

营业执照公示信息