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