GaussDB(DWS)查詢過(guò)濾器原理與應(yīng)用
摘要:GaussDB(DWS)查詢過(guò)濾器(黑名單)提供查詢過(guò)濾功能,支持自動(dòng)隔離反復(fù)被終止的查詢,防止?fàn)€SQL再次執(zhí)行。
本文分享自華為云社區(qū)《GaussDB(DWS)查詢過(guò)濾器原理與應(yīng)用》,作者:門(mén)前一棵葡萄樹(shù) 。
(資料圖片)
一、概述
GaussDB(DWS)查詢過(guò)濾器(黑名單)提供查詢過(guò)濾功能,支持自動(dòng)隔離反復(fù)被終止的查詢,防止?fàn)€SQL再次執(zhí)行。
主要應(yīng)用場(chǎng)景包含以下兩種:
1. 異常熔斷機(jī)制
配置異常規(guī)則后,查詢觸發(fā)異常規(guī)則后,異常信息將被記錄在dbms_om.gs_blocklist_query系統(tǒng)表中。同一個(gè)查詢觸發(fā)異常規(guī)則次數(shù)超限(query_exception_count_limit)后,查詢自動(dòng)加入黑名單,黑名單信息同樣保存在dbms_om.gs_blocklist_query系統(tǒng)表中。加入黑名單后,該查詢將被隔離,拒絕執(zhí)行。
2. 緊急攔截
作業(yè)引發(fā)CORE、hang或性能大幅下降等問(wèn)題時(shí),需要緊急規(guī)避時(shí),可以將作業(yè)加入黑名單進(jìn)行過(guò)濾。
原理介紹
查詢過(guò)濾器使用作業(yè)Unique SQL ID保存和識(shí)別作業(yè)黑名單和異常信息,在SQL中常數(shù)值發(fā)生變化時(shí)作業(yè)Unique SQL ID不會(huì)隨之發(fā)生變化。Unique SQL ID是遍歷查詢解析樹(shù)計(jì)算出來(lái)的一個(gè)整數(shù)值,用于標(biāo)識(shí)一類SQL。通常對(duì)于DML語(yǔ)句,在計(jì)算Unique SQL ID的過(guò)程中會(huì)忽略常量值。但對(duì)于DDL、DCL以及設(shè)置參數(shù)等語(yǔ)句,常量值不會(huì)忽略。例如,以下兩個(gè)查詢:
select * from t1 where id = 1;select * from t1 where id = 2;
這兩條SQL除過(guò)濾條件中的常量不同外,其他全部相同,由此生成的解析樹(shù)拓?fù)渫耆嗤?,因此Unique SQL ID相同。Unique SQL ID的計(jì)算只會(huì)忽略常數(shù)值,而不會(huì)忽略其他差異,SQL語(yǔ)句“select * from t2 where id = 1;”與上述兩個(gè)SQL的Unique SQL ID就不相同。
將作業(yè)加入黑名單主要有以下兩種方式:
- 在GUC參數(shù)query_exception_count_limit≥0情況下,作業(yè)觸發(fā)異常次數(shù)超過(guò)該閾值后自動(dòng)將作業(yè)加入黑名單;
- 調(diào)用內(nèi)置函數(shù)gs_append_blocklist(unique_sql_id int8)將作業(yè)加入黑名單。
作業(yè)執(zhí)行前判斷作業(yè)是否在黑名單中,如果作業(yè)在黑名單中,拒絕作業(yè)執(zhí)行,直接報(bào)錯(cuò)退出。
作業(yè)被拒絕執(zhí)行后,對(duì)作業(yè)加入黑名單原因進(jìn)行分析,問(wèn)題解決后調(diào)用內(nèi)置函數(shù)gs_remove_blocklist(unique_sql_id int8)將作業(yè)移除黑名單。
二、應(yīng)用示例
2.1 異常熔斷示例
1. 設(shè)置異常熔斷閾值。假設(shè)設(shè)置query_exception_count_limit=1,即只要作業(yè)觸發(fā)異常規(guī)則作業(yè)就會(huì)被加入黑名單。
2. 配置異常規(guī)則
創(chuàng)建CPU平均使用率異常規(guī)則cpu_percent_except,作業(yè)運(yùn)行時(shí)間超過(guò)2000秒且CPU使用率達(dá)到30%時(shí)觸發(fā)異常退出:
CREATE EXCEPT RULE cpu_percent_except WITH(ELAPSEDTIME=2000, CPUAVGPERCENT=30);
異常規(guī)則還支持BLOCKTIME、ALLCPUTIME、SPILLSIZE等異常的識(shí)別處理,具體可參考:異常規(guī)則簡(jiǎn)介與演變。
3. 創(chuàng)建資源池respool1關(guān)聯(lián)異常規(guī)則cpu_percent_except。
CREATE RESOURCE POOL respool1 WITH(except_rule="cpu_percent_except");
資源池支持最多關(guān)聯(lián)63個(gè)異常規(guī)則集,每個(gè)異常規(guī)則集間獨(dú)立生效,互不影響。
4. 創(chuàng)建業(yè)務(wù)用戶usr1,關(guān)聯(lián)資源池respool1:
CREATE USER usr1 RESOURCE POOL "respool1" PASSWORD "XXXXXX";
5. 用戶usr1運(yùn)行作業(yè),作業(yè)運(yùn)行時(shí)間超過(guò)2000秒且CPU使用率達(dá)到30%時(shí)觸發(fā)“cpu_percent_except”異常規(guī)則,作業(yè)觸發(fā)異常規(guī)則后資源管理對(duì)作業(yè)進(jìn)行以下處理:
- 將作業(yè)異常信息保存至系統(tǒng)表GS_BLOCKLIST_QUERY中;
- 如果作業(yè)觸發(fā)異常熔斷,將系統(tǒng)表GS_BLOCKLIST_QUERY中作業(yè)黑名單標(biāo)志置為true;
- 更新GS_BLOCKLIST_QUERY中作業(yè)黑名單信息。
6. 查詢作業(yè)黑名單和異常信息:
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再次運(yùn)行作業(yè)觸發(fā)異常熔斷,GaussDB(DWS)的異常熔斷機(jī)制禁止該作業(yè)執(zhí)行。
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. 優(yōu)化用戶usr1所運(yùn)行ID為4066836196的SQL后,將ID為4066836196的SQL從黑名單移除。
確認(rèn)SQL異常原因,如果異常規(guī)則配置不合理,修改異常規(guī)則;如果異常規(guī)則合理,對(duì)SQL進(jìn)行優(yōu)化后重新運(yùn)行。確認(rèn)問(wèn)題解決后將SQL移除黑名單。
select gs_remove_blocklist(4066836196); gs_remove_blocklist--------------------- t(1 row)
2.2 緊急攔截示例
查詢過(guò)濾器使用作業(yè)Unique SQL ID識(shí)別和保存黑名單信息,為有效運(yùn)用查詢過(guò)濾器緊急攔截功能,建議TopSQL開(kāi)啟,在作業(yè)引發(fā)CORE、報(bào)錯(cuò)、性能下降等問(wèn)題時(shí)可以快速獲取作業(yè)Unique SQL ID。
2.2.1 獲取作業(yè)Unique SQL ID
獲取作業(yè)Unique SQL ID的幾種方法:
1. 作業(yè)引發(fā)報(bào)錯(cuò)/性能下降
CN日志中獲取作業(yè)query_id,執(zhí)行以下命令查詢作業(yè)Unique SQL ID。
select queryid,unique_sql_id,query from pgxc_wlm_session_info where queryid=query_id;
2. 作業(yè)引發(fā)CN示例CORE
解析CORE打印內(nèi)存中保存的Unique SQL ID對(duì)應(yīng)的變量參數(shù)值。
3. 作業(yè)引發(fā)DN實(shí)例CORE
作業(yè)引發(fā)DN實(shí)例CORE時(shí),CN側(cè)體現(xiàn)為作業(yè)報(bào)錯(cuò),Unique SQL ID獲取方式可以參考作業(yè)報(bào)錯(cuò)時(shí)Unique SQL ID獲取方式。
4. EXPLAIN VERBOSE獲取Unique SQL ID(通用方法,但是僅821及以上版本支持)
EXPLAIN VERBOSE不會(huì)實(shí)際執(zhí)行SQL,因此一般不會(huì)導(dǎo)致問(wèn)題發(fā)生,使用EXPLAIN VERBOSE XXX;可以打印得到作業(yè)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 將作業(yè)加入黑名單
獲取到作業(yè)Unique SQL ID后,調(diào)用內(nèi)置函數(shù)gs_append_blocklist(unique_sql_id int8)將作業(yè)加入黑名單:
postgres=# select * from gs_append_blocklist(2307078791); gs_append_blocklist--------------------- t(1 row)
2.2.3 查詢黑名單信息
作業(yè)加入黑名單后,查詢系統(tǒng)表確認(rèn)黑名單加入是否成功:
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 再次執(zhí)行作業(yè)觸發(fā)緊急攔截
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 問(wèn)題解決,將作業(yè)移出黑名單
postgres=# select gs_remove_blocklist(2307078791); gs_remove_blocklist--------------------- t(1 row)
點(diǎn)擊關(guān)注,第一時(shí)間了解華為云新鮮技術(shù)~
標(biāo)簽:
搶先讀
- 和勝股份:在項(xiàng)目研發(fā)前沿領(lǐng)域一直與寧德時(shí)代深度合作 當(dāng)前簡(jiǎn)訊
- GaussDB(DWS)查詢過(guò)濾器原理與應(yīng)用
- 環(huán)球觀天下!東麗區(qū)氣象臺(tái)發(fā)布雷雨大風(fēng)藍(lán)色預(yù)警/IV級(jí)/一般【2023-06-07】
- 熱資訊!恒信東方漲20.00%
- 打造黨建“新引擎”!寶山這個(gè)小區(qū)探索社區(qū)治理新路徑
- 名師點(diǎn)評(píng)上海高考作文:題目平實(shí)大眾化,要讀出材料背后的語(yǔ)氣態(tài)度
- 那些年,我們參加過(guò)的高考|上海會(huì)客廳
- 【天天聚看點(diǎn)】中信保誠(chéng)基金:3200點(diǎn),你可以更樂(lè)觀一點(diǎn)
- 世界觀天下!馬不停蹄!考生不慎遺失身份證,武漢青山民警一天連幫3名考生
- 影視股大爆發(fā)!百億龍頭3天2板,“AI+IP”雙概念催化,這些方向或有望升溫 熱點(diǎn)評(píng)
- 4個(gè)工作日,北京大興發(fā)出首張“一業(yè)一證”行業(yè)綜合許可憑證|世界熱點(diǎn)評(píng)
- 全球熱門(mén):僅行駛30英里!難不成一直推著走?1990年雪佛蘭Corvette ZR-1
- DRG/DIP概念走強(qiáng) 塞力醫(yī)療漲停_焦點(diǎn)精選
- 和勝股份:在項(xiàng)目研發(fā)前沿領(lǐng)域一直與寧德時(shí)代深度合作
- 當(dāng)前訊息:注資5000萬(wàn)元!上??岛銊怕铆h(huán)境服務(wù)有限公司成立!
- 世界即時(shí):專訪:中國(guó)為推動(dòng)和平與共同繁榮發(fā)揮重要作用——訪墨西哥參議長(zhǎng)阿門(mén)塔
- 5月外匯儲(chǔ)備降至31765億美元 匯率折算或是主因
- 中泰證券:給予旭升集團(tuán)買入評(píng)級(jí)
- OPPO Find X6外觀怎么樣?OPPO Find X6功能特點(diǎn)怎么樣?
- 教育部:堅(jiān)持師德違規(guī)“零容忍”
- 深高速董秘回復(fù): 由于完成路費(fèi)收入的數(shù)據(jù)拆分、確認(rèn)需要履行一定的程序 今日視點(diǎn)
- 楚天高速董秘回復(fù): 公司將立足智慧交通、智慧城市等應(yīng)用場(chǎng)景,持續(xù)關(guān)注相關(guān)新興技術(shù) 天天觀速訊
- 吉視傳媒董秘回復(fù): 感謝關(guān)注公司。近幾年受整體行業(yè)及資本市場(chǎng)影響,股價(jià)有所波動(dòng)
- 傳統(tǒng)村落消防安全有隱患 云南一鎮(zhèn)政府被提起公益訴訟-每日資訊
- 亞通精工董秘回復(fù): 公司汽車零部件業(yè)務(wù)主要是為整車廠提供沖壓及焊接零部件,主要客戶均為知名大型整車廠
- 天天消息!河南麥?zhǔn)者M(jìn)度過(guò)八成 夏播已播種近五成
- 外交部:希望歐盟和國(guó)際社會(huì)一道共同反對(duì)美國(guó)的經(jīng)濟(jì)脅迫_全球快報(bào)
- 重慶便宜的大專院校排名 重慶學(xué)校大專排名 世界熱訊
- 《偽戀》漫畫(huà)宣布重印 包含原作十年后日后談 天天觀熱點(diǎn)
- 全球快報(bào):豬頭豬頭燜子的做法_豬頭燜子的做法
- 格力分體空調(diào)室內(nèi)機(jī)漏水是什么原因_空調(diào)室內(nèi)機(jī)漏水是什么原因
- 環(huán)球觀點(diǎn):深珠通道,有新動(dòng)向!
- 學(xué)生體質(zhì)健康網(wǎng)官網(wǎng)為什么打不開(kāi) 全國(guó)學(xué)生體質(zhì)健康網(wǎng)官網(wǎng)
- QQ音樂(lè)如何設(shè)置耳機(jī)音效?QQ音樂(lè)怎么設(shè)置智能分類?
- 環(huán)球熱門(mén):酒類分析師蔡學(xué)飛:中國(guó)酒,目有繁星,依然沐光而行
- 騰訊QQ回應(yīng)“QQ空間新版太難用”
- 在線重裝系統(tǒng)哪個(gè)軟件好?cad2006激活碼如何獲取?
- 焦點(diǎn)熱議:前4月廣東自貿(mào)試驗(yàn)區(qū)進(jìn)出口同比增長(zhǎng)22.3%
- 優(yōu)博訊:公司暫未與英偉達(dá)有直接合作_當(dāng)前快訊
- 天津普林?jǐn)M關(guān)聯(lián)收購(gòu) 被問(wèn)高溢價(jià)是否損害上市公司利益 環(huán)球微速訊
- 全球新動(dòng)態(tài):優(yōu)博訊:公司作為長(zhǎng)期專注于AIDC領(lǐng)域的企業(yè),一直致力于為行業(yè)客戶提供AIDC全棧式解決方案
- 2023國(guó)內(nèi)速凍食品產(chǎn)品類別及市場(chǎng)發(fā)展增速
- 環(huán)球速讀:華測(cè)檢測(cè):公司的經(jīng)營(yíng)情況良好 一季度營(yíng)業(yè)收入和歸母凈利潤(rùn)均實(shí)現(xiàn)穩(wěn)定增長(zhǎng)
- 通訊!土耳其里拉持續(xù)貶值 再創(chuàng)歷史新低
- 商務(wù)預(yù)報(bào):5月29日至6月4日禽產(chǎn)品零售價(jià)格小幅下降-焦點(diǎn)簡(jiǎn)訊
- 加碼自救!千億地產(chǎn)緊急出招 八天大漲近40%重回1元上方 實(shí)時(shí)
- 永泰能源:公司無(wú)形資產(chǎn)主要為礦業(yè)權(quán)資產(chǎn),為公司開(kāi)展主營(yíng)業(yè)務(wù)和增強(qiáng)發(fā)展后勁而配置相關(guān)資源 環(huán)球快訊
- 理想汽車北京順義工廠最早7月投產(chǎn)?官方回應(yīng):確實(shí)在積極準(zhǔn)備中
- flash動(dòng)畫(huà)怎么導(dǎo)出mp4格式?flash動(dòng)畫(huà)怎么旋轉(zhuǎn)?
- 網(wǎng)易MuMu模擬器怎么運(yùn)行磁盤(pán)清理?網(wǎng)易MuMu模擬器如何關(guān)閉幀率顯示?
- 四川個(gè)人停息掛賬后果有哪些?停息掛賬會(huì)影響孩子嗎?
- 中消協(xié)提示警惕培訓(xùn)班退費(fèi)騙局
- 環(huán)球觀察:朋友圈非常經(jīng)典的人生格言
- 信用卡即將逾期停息掛賬好嗎?信用卡停息掛賬如何處理?
- 江蘇企業(yè)停息掛賬有哪幾種方式?信用卡逾期了還能公積金貸款嗎?
- 網(wǎng)約車交通事故侵權(quán)責(zé)任的規(guī)定是什么?侵權(quán)責(zé)任的承擔(dān)方式是什么?
- 信用卡辦理了停息掛賬怎么買車?停息掛賬是硬性規(guī)定嗎?
- 實(shí)時(shí):商品期貨收盤(pán)多數(shù)下跌,甲醇跌3%,紙漿、尿素、純堿跌超2%
- 申購(gòu)費(fèi)率什么意思_什么是基金申購(gòu)費(fèi)率
- 車輛玻璃怎么識(shí)別是幾幾年生產(chǎn)的 _防爆輪胎和普通輪胎有什么區(qū)別_每日快播
- 【獨(dú)家】一視同仁的近義詞_一視同仁的意思
- “餃子宴”托起老區(qū)留守老人的幸福
- 【全球新視野】悅達(dá)起亞入選“私家車新車上牌免查驗(yàn)試點(diǎn)企業(yè)”
- 微博設(shè)置屏蔽陌生人私信的操作流程
- 高考首日 各方聯(lián)動(dòng)護(hù)航高考
- 全球熱訊:汽車報(bào)道:處理自動(dòng)駕駛數(shù)據(jù)寶馬集團(tuán)成立新部門(mén)
- 商務(wù)部副部長(zhǎng)凌激:歡迎賽諾菲集團(tuán)繼續(xù)深耕中國(guó)市場(chǎng) 積極參加進(jìn)博會(huì)
- 5月北京新房市場(chǎng)量降價(jià)漲 11家房企單月銷售額超10億
- 股東轉(zhuǎn)讓股權(quán)要交什么稅?股權(quán)變更代辦費(fèi)用多少?
- 駕駛拖審車輛怎么處罰?沒(méi)年檢的車上路發(fā)生交通事故怎么處理?
- 天天速訊:四邊形有哪幾種它們各有什么特征_四邊形有哪幾種
- RX6800顯卡價(jià)格迎來(lái)新低了嗎?你計(jì)劃入手了嗎?
- 建工修復(fù)擬定增募不超2.25億元 2021年上市募3.04億元
- 學(xué)齡前兒童交通事故責(zé)任如何認(rèn)定?交通事故賠償標(biāo)準(zhǔn)是什么?
- 如何填報(bào)高考志愿?6月18日專家開(kāi)講!
- 2023養(yǎng)老保險(xiǎn)能一次性補(bǔ)繳嗎?農(nóng)民59歲一次補(bǔ)交9萬(wàn)劃算嗎?
- 如何備份系統(tǒng)?正版win10能用ghost備份嗎?
- 股份轉(zhuǎn)讓有幾種方法?股份轉(zhuǎn)讓還需要交稅嗎?
- 全球快資訊丨猛禽野馬均在列 電動(dòng)車化身“狠角色” 美國(guó)現(xiàn)役警車面面觀
- 環(huán)球熱議:人民幣后面寫(xiě)字_寫(xiě)人民幣時(shí) 是不是前面有了 后面就不應(yīng)該加 ldquo 元 rdquo
- 超速違章照片需要幾張?交通技術(shù)監(jiān)控設(shè)備的注意事項(xiàng)是什么?
- 黑芝麻湯圓怎么做的_黑芝麻湯圓怎么做
- 今日要聞!無(wú)乃爾是過(guò)與 翻譯無(wú)乃_無(wú)乃爾是過(guò)與 翻譯
- 環(huán)球速讀:75寸電視最佳觀看距離多少米_75寸電視最佳觀看距離
- 羅山:倡導(dǎo)綠色環(huán)保 踐行生態(tài)文明
- 【世界快播報(bào)】下滑18%!新基金發(fā)行遇冰點(diǎn)?
- 天天看熱訊:存款利率告別3% 如何做好家庭資產(chǎn)配置?專家解讀來(lái)啦
- 聯(lián)絡(luò)互動(dòng)年報(bào)遭問(wèn)詢,要求分析營(yíng)業(yè)收入下滑、虧損規(guī)模近三年持續(xù)擴(kuò)大的主要原因
- 蓋士人讀書(shū)文言文原文_蓋士人讀書(shū)文言文翻譯蓋意思
- iPhone怎么將鎖屏通知設(shè)置為隱藏?手機(jī)酷狗音樂(lè)如何恢復(fù)被刪除的歌單?
- 簡(jiǎn)易程序判決后可以上訴嗎?判決書(shū)不簽收就不生效是嗎?
- 試駕海鷗真實(shí)感受:底盤(pán)扎實(shí),動(dòng)力夠用,極夜黑加深海藍(lán)好看|天天觀速訊
- 銀行本票允許轉(zhuǎn)讓嗎?不記名背書(shū)應(yīng)該怎么轉(zhuǎn)讓?
- 全球熱頭條丨中國(guó)預(yù)制菜產(chǎn)業(yè)規(guī)模與市場(chǎng)投資前景
- 交行信用卡如何取現(xiàn)?交通銀行信用卡取現(xiàn)額度有哪些規(guī)定?
- 個(gè)人所得稅一年可以退幾次?個(gè)人所得稅第一次如何申報(bào)?
- 摩托車后座不應(yīng)當(dāng)乘坐未滿多少周歲的兒童?駕駛摩托車未戴頭盔出事故由誰(shuí)承擔(dān)事故責(zé)任?
- 信用卡停息掛賬申請(qǐng)辦法是什么上海?停息掛賬行動(dòng)建議介紹
- 當(dāng)前熱點(diǎn)-吉林省氣象臺(tái)6月7日14時(shí)8分將強(qiáng)對(duì)流天氣藍(lán)色預(yù)警升級(jí)為強(qiáng)對(duì)流天氣黃色預(yù)警【2023-06-07】
- 多地將有雷雨大風(fēng)天氣,局地風(fēng)力可達(dá)9~10級(jí)!黑龍江省發(fā)布強(qiáng)對(duì)流預(yù)報(bào)_天天日?qǐng)?bào)