GaussDB 數據庫架構師修煉(十八) SQL引擎-計劃管理-SQL PATCH

1 業務背景

GaussDB的優化器生成計劃不優的情況下,對DBA調優過程中不對業務sql修改場景下,提供3種計劃管理,分別為plan hint,sql patch,spm。

2 sql patch的使用場景

在發現查詢語句的執行計劃、執行方式未達預期的場景下,可以通過創建查詢補丁的方式,?使用?Hint對查詢計劃進行調優或對特定的語句進行報錯短路處理。

SQL??Patch能夠在避免直接修改用戶業務語句的前提下對查詢執行的方式做一定調整。

3 使用前提

1)、SQL Patch的實現基于Unique SQL ?ID,所以需要打開相關的運維參數才可以生效 ( enable_resource_track = on, ? instr_unique_sql_count > 0)。
2)、Unique SQL ?ID在WDR報告和慢SQL視圖中都可以獲取到,在創建SQL ?Patch時需要指定Unique SQL ?ID 。
3)、對于存儲過程內的SQL則需要設置參數 instr_unique_sql_track_type ?= ?'all' 后在 dbe_perf.statement_history視圖中查詢Unique SQL ID 。

4 使用舉例

步驟1:創建測試數據

[Ruby@dtest1 ~]$ gsql -h xx.xxx.xx.71 -dcsdn -p8000 -U csdn -W '******' -ar
gsql ((GaussDB Kernel 505.2.1 build 159cea95) compiled at 2024-12-27 09:22:44 commit 10161 last mr 21504 release)
SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)
Type "help" for help.csdn=>
csdn=> set search_path=csdn;
SET
csdn=> CREATE TABLE hint_t1(a int, b int, c int);
CREATE TABLE
csdn=> CREATE  INDEX ON hint_t1(a);
CREATE INDEX
csdn=> INSERT  INTO hint_t1 VALUES(1, 1, 1);
INSERT 0 1

步驟2:打開FullSQL統計信息(track_stmt_stat_level:L1,L1)

csdn=> SET track_stmt_stat_level  = 'L1,L1';
SET
csdn=> SET explain_perf_mode = normal;
SET

步驟3:登入postgres庫獲取unique sql id

gsql -h ***.***.***71 -p 8000 -d postgres -U root -W ******* -ar
gsql ((GaussDB Kernel 505.2.1 build 159cea95) compiled at 2024-12-27 09:22:44 commit 10161 last mr 21504 release)
SSL connection (cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128)
Type "help" for help.gaussdb=> SELECT unique_query_id, query, query_plan  FROM dbe_perf.statement_history WHERE query  LIKE '%hint_t1%';unique_query_id |                   query                   |                                 query_plan-----------------+-------------------------------------------+-------------------------------------------------------------------
----------868389431 | SELECT * FROM hint_t1 t1 WHERE t1.a =  ?; | Datanode Name: dn_6001_6002_6003+|                                           | Bitmap Heap Scan on hint_t1 t1  (cost=4.33..14.88 rows=10 width=12
)        +|                                           |   Recheck Cond: (a = '***')+|                                           |   ->  Bitmap Index Scan on hint_t1_a_idx  (cost=0.00..4.33 rows=10width=0)+|                                           |         Index Cond: (a = '***')+|                                           |+|                                           |
(1 row)

得到的unique sql id為:868389431

步驟4:登入業務庫,對指定SQL使用SQL?Patch

SELECT * FROM dbe_sql_util.create_hint_sql_patch('patch1', 868389431, 'indexscan(t1)');create_hint_sql_patch
-----------------------t
(1 row)csdn=> set search_path=csdn;
SET

步驟5:驗證計劃結果:

explain SELECT *  FROM hint_t1 t1 WHERE t1.a = 1;
SET
NOTICE:  Plan influenced by SQL hint patchid |                    operation                     | E-rows | E-width |    E-costs
----+--------------------------------------------------+--------+---------+---------------1 | ->  Index Scan using hint_t1_a_idx on hint_t1 t1 |     10 |      12 | 0.000..32.425
(1 row)Predicate Information (identified by plan id)
----------------------------------------------------1 --Index Scan using hint_t1_a_idx on hint_t1 t1Index Cond: (a = 1)
(2 rows)====== Query Others =====
---------------------------Bypass: Yes
(1 row)

執行計劃結果:Plan influenct by SQL hint patch

步驟6:查看sql patch

csdn=> select * from dbe_sql_util.show_sql_patch('patch1');unique_sql_id | enable | abort |   hint_str
---------------+--------+-------+---------------868389431 | t      | f     | indexscan(t1)
(1 row)csdn=>

步驟7:禁用sql patch

csdn=> select * from dbe_sql_util.disable_sql_patch('patch1');disable_sql_patch
-------------------t
(1 row)csdn=>

步驟8:驗證禁用之后sql patch

csdn=> explain SELECT *  FROM hint_t1 t1 WHERE t1.a = 1;id |                  operation                   | E-rows | E-width |    E-costs
----+----------------------------------------------+--------+---------+---------------1 | ->  Bitmap Heap Scan on hint_t1 t1           |     10 |      12 | 4.328..14.8832 |    ->  Bitmap Index Scan using hint_t1_a_idx |     10 |       0 | 0.000..4.325
(2 rows)Predicate Information (identified by plan id)
-----------------------------------------------1 --Bitmap Heap Scan on hint_t1 t1Recheck Cond: (a = 1)2 --Bitmap Index Scan using hint_t1_a_idxIndex Cond: (a = 1)
(4 rows)csdn=>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919894.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919894.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919894.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

函數式編程從入門到精通

1.概述1.1為什么學&#xff1f;* 能夠看懂公司里的代碼 * 大數量下處理集合效率高 * 代碼可讀性高 * 消滅嵌套地獄//查詢未成年作家評分在70分以上的書籍&#xff0c;由于流的影響所以作家和書籍可能會重復出現&#xff0c;所以要去重public void test1() {List<Book> bo…

Overleaf 中文報錯和中文不顯示問題的解決方案

Overleaf是一個很方便的在線latex編輯工具。但在最初使用Overleaf的時候&#xff0c;是不是有很多小伙伴會遇到模板中中文報錯或者中文不顯示的問題呢&#xff1f; 本文將帶你一步步解決這個問題~ 中文報錯 在點擊重新編譯按鈕后&#xff0c;中文報錯問題一般會有如下圖紅框顯示…

前后端聯調場景以及可能會遇到的問題

一、異地和在一起辦公的方式 首先&#xff0c;在一起辦公&#xff08;同局域網&#xff09;的情況&#xff0c;最常用的應該是直接使用后端的局域網 IP 進行聯調&#xff0c;因為同一網絡內設備可以直接通信。步驟方面&#xff0c;需要后端提供 IP 和端口&#xff0c;前端配置…

【T113自制板卡】1 - 原理圖說明

文章目錄1、前言2、板卡資源總覽3、電源3.1、板卡供電3.2、電源方案4、OTG接口5、調試串口6、用戶LED7、FLASH8、按鍵9、BLE MESH10、Wi-Fi11、MIC12、喇叭接口13、MIPI接口1、前言 這幾天跟著小智學長的課程畫了一塊t113的板子。本文將描述該板卡的硬件說明。 2、板卡資源總…

WiFi有網絡但是電腦連不上網是怎么回事?該怎么解決?

有時候&#xff0c;咱們用電腦上網&#xff0c;打開WiFi一看&#xff0c;信號滿格&#xff0c;狀態欄顯示已連接&#xff0c;本來想著可以愉快地看個番、查個資料、玩個游戲了&#xff0c;結果一打開瀏覽器&#xff0c;直接完犢子了&#xff0c;網頁都打不開。這時候再看狀態&a…

【golang】制作linux環境+golang的Dockerfile | 如何下載golang鏡像源

一、關于如何下載docker images 這里需要大家自行科學上網如果沒有話&#xff0c;下面可以使用我自行打包的golang 的docker images 注意科學上網要開啟TUN模式二、golang鏡像源 1、阿里云公開鏡像 如果找不到golang包的小伙伴可以使用我的公開阿里鏡像docker pull registry.cn…

Day58 Java面向對象13 instanceof 和 類型轉換

Day58 Java面向對象13 instanceof 和 類型轉換 1.instanceof關鍵字 instanceof關鍵字的作用是判斷一個對象是否是某個類或其子類的實例,它返回一個布爾值true/false dog1 instanceof Dog; //返回true dog1 instanceof Animals; //返回true dog1 instanceof Object; //返回…

GEO優化案例:如何通過“知識圖譜+權威信號”提升品牌AI信任度

引言&#xff1a; “在AI日益成為用戶信息入口的今天&#xff0c;品牌信息能否被AI賦予‘權威’標簽&#xff0c;直接決定了其在搜索結果中的可見度和用戶采信度。移山科技正是這方面的專家。” 一、行業趨勢概覽&#xff1a;AI時代的品牌信任與GEO的價值 2025年&#xff0c…

讓數據可視化更簡單:Embedding Atlas使用指南

Embedding Atlas&#xff1a;交互式的嵌入可視化工具 在大數據時代&#xff0c;如何有效地理解和利用高維數據變得愈發重要。Embedding Atlas 是一款致力于提供大型嵌入&#xff08;embeddings&#xff09;交互式可視化的工具&#xff0c;允許用戶對嵌入數據進行可視化、交叉過…

復雜場景魯棒性突破!陌訊自適應融合算法在廠區越界檢測的實戰優化?

一、行業痛點&#xff1a;越界檢測的復雜場景挑戰 工業廠區周界安防中&#xff0c;越界檢測極易受環境干擾。據《2024工業智能安防白皮書》統計&#xff08;注1&#xff09;&#xff0c;強逆光、雨霧天氣導致傳統算法誤報率超35%&#xff0c;而密集設備遮擋造成的漏檢率高達28…

Huggingface入門實踐 Audio-NLP 語音-文字模型調用(一)

吳恩達LLM-Huggingface_嗶哩嗶哩_bilibili 目錄 0. huggingface 根據需求尋找開源模型 1. Whisper模型 語音識別任務 2. blenderbot 聊天機器人 3. 文本翻譯模型translator 4. BART 模型摘要器&#xff08;summarizer&#xff09; 5. sentence-transformers 句子相似度 …

Python-Pandas GroupBy 進階與透視表學習

??一、數據分組&#xff08;GroupBy&#xff09;????核心概念??&#xff1a;將數據按指定字段分組&#xff0c;對每組進行聚合、轉換或過濾操作。??1. 分組聚合&#xff08;Aggregation&#xff09;??將分組數據聚合成單個值&#xff08;如平均值、總和&#xff09…

MQTT 核心概念與協議演進全景解讀(二)

MQTT 在物聯網中的應用實例智能家居中的設備聯動在智能家居系統里&#xff0c;MQTT 協議扮演著至關重要的角色&#xff0c;是實現設備間高效通信與智能聯動的核心樞紐。以常見的智能家居場景為例&#xff0c;當清晨的陽光緩緩升起&#xff0c;光線傳感器檢測到光照強度的變化&a…

燧原科技招大模型訓練算法工程師

高級大模型訓練算法工程師&#xff08;崗位信息已經經過jobleap.cn授權&#xff0c;可在csdn發布&#xff09;燧原科技 上海職位描述負責大模型在AI芯片預訓練和微調等研發和客戶支持工作&#xff1b; 參與大模型訓練精度分析和性能調優&#xff1b;職位要求985/211大學計算機…

基于Java虛擬線程的高并發作業執行框架設計與性能優化實踐指南

基于Java虛擬線程的高并發作業執行框架設計與性能優化實踐指南 一、技術背景與應用場景 在分布式系統和微服務架構中&#xff0c;后端常需承載海量異步作業&#xff08;如批量數據處理、定時任務、異步消息消費等&#xff09;&#xff0c;對作業執行框架提出了高并發、高吞吐、…

了解 PostgreSQL 的 MVCC 可見性基本檢查規則

1. 引言 根據 Vadim Mikheev 的說法&#xff0c;PostgreSQL 的多版本并發控制&#xff08;MVCC&#xff09;是一種“在多用戶環境中提高數據庫性能的高級技術”。該技術要求系統中存在同一數據元組的多個“版本”&#xff0c;這些版本由不同時間段內獲取的快照進行管理。換句話…

普通烘箱 vs 鎧德科技防靜電烘箱:深度對比與選擇指南

在電子制造、化工、航空航天等精密工業領域&#xff0c;烘箱作為關鍵工藝設備&#xff0c;其性能直接關系到產品可靠性和生產安全。普通烘箱與防靜電烘箱的核心差異在于靜電防護能力&#xff0c;而鎧德科技作為防靜電烘箱領域的專業廠商&#xff0c;其產品通過技術創新重新定義…

達夢數據庫巡檢常用SQL(一)

達夢數據庫巡檢常用SQL(一) 數據庫基本信息 數據庫用戶信息 數據庫對象檢查 數據庫基本信息 檢查授權信息: SELECT /*+DMDB_CHECK_FLAG*/ LIC_VERSION AS "許可證版本" ,SERIES_NO AS "序列號" ,CHECK_CODE AS "校驗碼" …

TypeScript的接口 (Interfaces)講解

把接口&#xff08;Interface&#xff09;想成一份“說明書”或“合同書”。說明書 比如電飯煲的說明書告訴你&#xff1a; 必須有“煮飯”按鈕必須有“保溫”功能顏色可以是白、黑、紅 接口在 TypeScript 里干的就是同樣的事&#xff1a;它規定一個對象“長什么樣”。 interfa…

Python本源詩話(我DeepSeek)

物理折行新注釋&#xff0c;直抒胸臆吾志名。 筆記模板由python腳本于2025-08-23 13:14:28創建&#xff0c;本篇筆記適合喜歡python和詩的coder翻閱。 學習的細節是歡悅的歷程 博客的核心價值&#xff1a;在于輸出思考與經驗&#xff0c;而不僅僅是知識的簡單復述。 Python官網…