openGauss新特性 | 自動參數化執行計劃緩存

目錄

自動化參數執行計劃緩存簡介??? ?

SQL參數化及約束條件

一般常量參數化示例??? ?

總結


自動化參數執行計劃緩存簡介??? ?

執行計劃緩存用于減少執行計劃的生成次數。openGauss數據庫會緩存之前生成的執行計劃,以便在下次執行該SQL時直接使用,可以避免反復執行,從而優化執行過程。

參數化過程是指把SQL查詢中的常量變成變量的過程。同一條SQL語句在每次執行時可能會使用不同的參數,將這些參數做參數化處理,可以得到與具體參數無關的SQL字符串,并使用該字符串作為計劃緩存的鍵值,用于在計劃緩存中獲取執行計劃,從而達到參數不同的SQL能夠共用相同計劃的目標。

openGauss數據庫的自動化參數方案是在語法分析樹的基礎上進行參數化,然后使用參數化后的語法分析樹作為鍵值計劃緩存中獲取計劃。

openGauss數據庫基于自動參數化而獲取執行計劃的流程如下圖所示:

圖片

SQL參數化及約束條件

在openGauss?數據庫中,?某些場景中SQL不能參數化,及約束條件如下:

  • 僅支持IUD(insert, Update, Delete)三類DML

  • 僅支持Simple Query Protocal,?不支持Extended Query Protocol

1. Simple Query Protacol:?例:gsql client

2. Extended Quey Protocal:?例:JDBC client中的PreparedStatement

  • 不支持含returning關鍵詞,不支持with clause,不支持hint,不支持子查詢,不支持order by,不支持limit,?不支持函數,不支持含collate關鍵詞,不支持type cast,不支持使用NULL關鍵詞,不支持lgnore。

一般常量參數化示例??? ?

openGauss使用自動化參數執行計劃緩存需要開啟自動化參數

SQLset?enable_query_parameterization=on;

執行如下簡單DML語句,自動化參數可以將?delete from table_btree where id = 250192?參數化為?delete from table_btree where id = $1,后續執行SQL便可以以自動化參數后的字符串為鍵值從緩存中取到執行計劃。???????

sqldelete?from?table_btree?where?id?=?250192;delete?from?table_btree?where?id?=?484195;delete?from?table_btree?where?id?=?595524;delete?from?table_btree?where?id?=?982023;

總結

openGauss的自動化參數執行計劃緩存特性目前支持simple query場景下的簡單DML語句,使得非參數化語句能夠?重復利用執行計劃,減少執行計劃的生成代價。對基礎算子場景的性能提升具有很大幫助。

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

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

相關文章

計算機操作系統——存儲器管理

系列文章目錄 1.存儲器的層次結構 2.程序的裝入和鏈接 3.連續分配存儲管理方式(內存夠用) 4.對換(Swapping)(內存不夠用) 5.分頁存儲管理方式 6.分段存儲管理方式 文章目錄 系列文章目錄前言一、存儲器的存儲結構寄存器&…

KF V.S. GM-PHD

在計算機視覺的多目標跟蹤(MOT)任務中,卡爾曼濾波(KF)和高斯混合概率假設密度(GM-PHD)濾波器是兩種經典的狀態估計方法,但它們的原理和應用場景存在顯著差異。以下是兩者的核心機制和…

車載通信架構 --- DOIP系統機制初入門

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 周末洗了一個澡,換了一身衣服,出了門卻不知道去哪兒,不知道去找誰,漫無目的走著,大概這就是成年人最深的孤獨吧! 舊人不知我近況,新人不知我過…

C++對象池設計:從高頻`new/delete`到性能飛躍的工業級解決方案

一、new/delete的性能之殤:一個真實的生產事故 2023年某證券交易系統在峰值時段出現請求堆積,事后定位發現:每秒40萬次的訂單對象創建/銷毀,導致: 內存碎片率高達37%(jemalloc統計)malloc調用…

【C/C++】深入理解整型截斷與提升:原理、應用與區別

文章目錄 1. 整形截斷(Integer Truncation)1.1 整形截斷的例子1.2 整形截斷的細節 2. 整形提升(Integer Promotion)2.1 整形提升的規則2.2 整形提升的示例2.3 整形提升的實際應用2.4 整型提升與標準操作符 3. 整型截斷與提升的區別…

python藍橋杯備賽常用算法模板

一、python基礎 (一)集合操作 s1 {1,2,3} s2{3,4,5} print(s1|s2)#求并集 print(s1&s2)#求交集 #結果 #{1, 2, 3, 4, 5} #{3}(二)對多維列表排序 1.新建列表 list1[[1,2,3],[2,3,4],[0,3,2]] #提取每個小列表的下標為2的…

【模塊化拆解與多視角信息3】教育背景:學歷通脹時代的生存法則

教育背景:學歷通脹時代的生存法則 寫在最前 作為一個中古程序猿,我有很多自己想做的事情,比如埋頭苦干手搓一個低代碼數據庫設計平臺(目前只針對寫java的朋友),比如很喜歡幫身邊的朋友看看簡歷,講講面試技巧,畢竟工作這么多年,也做到過高管,有很多面人經歷,意見還算…

uniapp實現H5頁面麥克風權限獲取與錄音功能

1.權限配置 在uni-app開發H5頁面時,需要在manifest.json文件中添加錄音權限的配置。具體如下: {"h5": {"permissions": {"scope.record": {"desc": "請授權使用錄音功能"}}} }這段配置代碼是用于向…

功能豐富的PDF處理免費軟件推薦

軟件介紹 今天給大家介紹一款超棒的PDF工具箱,它處理PDF文檔的能力超強,而且是完全免費使用的,沒有任何限制。 TinyTools(PC)這款軟件,下載完成后即可直接打開使用。在使用過程中,操作完畢后&a…

鴻蒙開發-ArkUi控件使用

2.0控件-按鈕 2.1.控件-文本框 Text(this.message).fontSize(40) // 設置文本的文字大小.fontWeight(FontWeight.Bolder) // 設置文本的粗細.fontColor(Color.Red) // 設置文本的顏色------------------------------------------------------------------------- //設置邊框Tex…

深入理解 ResponseBodyAdvice 及其應用

ResponseBodyAdvice 是 Spring MVC 提供的一個強大接口&#xff0c;允許你在響應體被寫入 HTTP 響應之前對其進行全局處理。 下面我將全面介紹它的工作原理、使用場景和最佳實踐。 基本概念 接口定義 public interface ResponseBodyAdvice<T> {boolean supports(Metho…

深度解析Redis過期字段清理機制:從源碼到集群化實踐 (一)

深度解析Redis過期字段清理機制&#xff1a;從源碼到集群化實踐 一、問題本質與架構設計 1.1 過期數據管理的核心挑戰 Redis連接池時序圖技術方案 ??設計規范&#xff1a;? #mermaid-svg-Yr9fBwszePgHNnEQ {font-family:"trebuchet ms",verdana,arial,sans-se…

數據庫ocm有什么用

專業能力的權威象征 。技術水平的高度認可&#xff1a;OCM 是 Oracle 認證體系中的最高級別&#xff0c;代表著持證人在 Oracle 數據庫領域具備深厚的專業知識和卓越的實踐技能。它證明持證人能夠熟練掌握數據庫的安裝、配置、管理、優化、備份恢復等核心技術&#xff0c;并且能…

無人船 | 圖解基于視線引導(LOS)的無人艇制導算法

目錄 1 視線引導法介紹2 LOS制導原理推導3 Lyapunov穩定性分析4 LOS制導效果 1 視線引導法介紹 視線引導法&#xff08;Line of Sight, LOS&#xff09;作為無人水面艇&#xff08;USV&#xff09;自主導航領域的核心技術&#xff0c;通過幾何制導與動態控制深度融合的機制&am…

Swift觀察機制新突破:如何用AsyncSequence實現原子化數據監聽?

網羅開發 &#xff08;小紅書、快手、視頻號同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企業從事人工智能項目研發管理工作&#xff0c;平時熱衷于分享各種編程領域的軟硬技能知識以及前沿技術&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

【KWDB創作者計劃】_KWDB部署與使用詳細版本

KWDB發展歷程 介紹KWDB前&#xff0c;先介紹下KaiwuDB&#xff0c; KaiwuDB 是浪潮控股的數據庫企業&#xff0c;該企業提供的KaiwuDB數據庫是一款分布式多模數據庫產品&#xff0c;主要面向工業物聯網、數字能源、車聯網、智慧產業等行業領域。 在2024年7月&#xff0c; Kai…

Go:接口

接口既約定 Go 語言中接口是抽象類型 &#xff0c;與具體類型不同 &#xff0c;不暴露數據布局、內部結構及基本操作 &#xff0c;僅提供一些方法 &#xff0c;拿到接口類型的值 &#xff0c;只能知道它能做什么 &#xff0c;即提供了哪些方法 。 func Fprintf(w io.Writer, …

一、Appium環境安裝

找了一圈操作手機的工具或軟件&#xff0c;踩了好多坑&#xff0c;最后決定用這個工具(影刀RPA手機用的也是這個)&#xff0c;目前最新的版本是v2.17.1&#xff0c;是基于nodejs環境的&#xff0c;有兩種方式&#xff0c;我只試了第一種方式&#xff0c;第二種方式應該是比較簡…

【玩轉全棧】—— Django 連接 vue3 保姆級教程,前后端分離式項目2025年4月最新!!!

本文基于之前的一個旅游網站&#xff0c;實現 Django 連接 vue3&#xff0c;使 vue3 能攜帶 CSRF Token 發送 axios 請求給后端&#xff0c;后端再響應數據給前端。想要源碼直接滑倒底部。 目錄 實現效果 解決跨域 獲取 csrf-token 什么是 csrf-token &#xff1f; CSRF攻擊的…

dify部署,ollama部署,拉取模型,創建ai聊天應用

dify下載安裝 dify1.0.1 windos安裝包百度云盤地址 通過網盤分享的文件&#xff1a;dify-1.0.1.zip 鏈接: 百度網盤 請輸入提取碼 提取碼: 1234 dify安裝包 linux安裝包百度云盤地址 通過網盤分享的文件&#xff1a;dify-1.0.1.tar.gz 鏈接: 百度網盤 請輸入提取碼 提取碼…