GaussDB 并發自治事務數達到最大值處理案例

1 業務背景

自治事務(Autonomous Transactions)是一種高級特性,允許你在一個事務中執行另一個獨立的事務。這種機制特別有用,尤其是在需要在一個事務中執行多個操作但又不想因為其中一個操作失敗而影響整個事務的場景。

2 業務影響

在業務觸發情況下,自治事務數會達到瓶勁,GaussDB默認為10個。

如:

3 處理方法

將max_concurrent_autonomous_transaction值按照應用開啟的并發數設置,比較開啟16個并發,那么這個參數要比這個值大,建議值20~30左右。

默認值:

gaussdb=>
gaussdb=>
gaussdb=> show max_concurrent_autonomous_transactions;max_concurrent_autonomous_transactions
----------------------------------------10
(1 row)gaussdb=>

如將max_concurrent_autonomous_transactions值改為20

gs_guc set -Z datanode -I all -N all -c "max_concurrent_autonomous_transactions='20'";
The gs_guc run with the following arguments: [gs_guc -Z datanode -I all -N all -c max_concurrent_autonomous_transactions=10 set ].
Begin to perform the total nodes: 3.
Popen count is 3, Popen success count is 3, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 3, Command success count is 3, Command failure count is 0.
Total instances: 3. Failed instances: 0.
ALL: Success to perform gs_guc![Ruby@dtest1 ~]$ cm_ctl stop && cm_ctl start
gaussdb=>  show max_concurrent_autonomous_transactions;max_concurrent_autonomous_transactions
----------------------------------------20
(1 row)

注:?max_concurrent_autonomous_transactions參數的修改需要重啟服務。

4 普及自治事務

針對這個問題一起普及自治事務知識點:

1)自治事務用法:

PRAGMA AUTONOMOUS_TRANSACTION,以改標識符表明該存儲過程里面包含有自治事務。且必須放在聲明部分,即“begin”前面

2)與oracle主要區別

在存儲過程中,GaussDB的自治事務“遞交”動作 commit無需顯式指定,“回退”動作rollback 則需要指定,但在oracle數據庫,自治事務遞交與回退操作都需要顯式指定。GaussDB數據庫自治事務支持以下場景:存儲過程,函數,匿名塊,不支持在觸發器中使用。oracle數據庫,自治事務支持存儲過程,函數,匿名塊,以及觸發器。

例:以下是顯式加了rollback回退,如果不加commit情況下,默認提交。

csdn=> create or replace procedure autonomous_4(a int, b int) as
csdn$> declare
csdn$> num3 int :=a;
csdn$> num4 int :=b;>
csdn$> PRAGMA AUTONOMOUS_TRANSACTION;
csdn$> BEGIN
csdn$> INSERT INTO t2 values(num3,num4);
csdn$> rollback;
csdn$> dbe_output.print_line('just use call.');
csdn$> end;
csdn$> /
CREATE PROCEDURE
csdn=>  call autonomous_4(300,700);
just use call.autonomous_4
--------------(1 row)csdn=> select * from t2;a  |  b
-----+-----1 |   2200 | 500
(2 rows)

5 自治事務約束

  • 自治事務執行時,將會在后臺啟動自治事務session,可以通過max_concurrent_autonomous_transactions設置自治事務執行的最大并行數量,取值范圍:0~10000,默認值:10。
  • 當max_concurrent_autonomous_transactions參數設置為0時,自治事務將無法執行。
  • 自治事務新啟session后,將使用默認session參數,不共享主session下對象(包括session級別變量、本地臨時變量、全局臨時表的數據等)。
  • 自治事務理論上限為10000,實際上限為動態值,參考GUC參數max_concurrent_autonomous_transactions描述。
  • 自治事務受通信緩沖區影響,返回給客戶端的信息大小受限于通信緩沖區長度,超過通信緩沖區長度時報錯。
  • 自治事務執行期間,主事務會給自治事務加鎖,異常情況導致此鎖殘留的場景下,需要依賴gs_clean清理殘留鎖,清理周期由GUC參數 gs_clean_timeout控制,默認值為60秒。自治事務的鎖不受lock timeout影響,鎖超時時間為2147483s,自治事務執行超過此時間會報錯鎖超時。
  • 自治事務設置建立連接超時時間5s,建立連接嘗試5次。建立連接期間不立即響應信號,每次建立連接前檢查信號。高并發、高CPU、高內存,以及線程池擴容場景下可能存在超時報錯現象。
  • 在PACKAGE SPECIFICATION或PACKAGE BODY SPECIFICATION中聲明自治事務PRAGMA AUTONOMOUS_TRANSACTION語法,可成功創建PACKAGE,但自治事務不生效。
  • 觸發器函數不支持自治事務。

6 批注

自治事務也有優點:1.隔離性:自治事務允許你在一個事務中處理多個操作,這些操作可以獨立地成功或失敗,互不影響。2.靈活性:適用于復雜的業務邏輯,其中某些操作的成功或失敗不應影響其他操作。3.在某些情況下,可以減少鎖的競爭,提高并發性能。

?

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

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

相關文章

【傳奇開心果系列】Flet分頁自定義組件CustomPaginationComponent封裝版自定義模板

Flet分頁自定義組件CustomPaginationComponent封裝版自定義模板一、效果展示GIF動圖二、應用場景三、特色說明四、源碼下載地址一、效果展示GIF動圖 二、應用場景 圖片瀏覽應用: 用戶可以通過分頁組件瀏覽多張圖片,每點擊一次“上一頁”或“下一頁”按鈕…

數據安全——39頁解讀數字化轉型大數據安全基礎培訓方案【附全文閱讀】

適應人群為企業數據安全管理人員、IT 運維人員、數字化轉型決策者、網絡安全工程師及關注大數據安全的從業人員。主要內容圍繞數字化轉型中大數據安全展開,核心包括基礎概念(信息、數據與大數據的定義及區別,大數據 4V 特點與來源);安全風險(企業面臨的數據資產管理缺失、…

week3-[二維數組]小方塊

week3-[二維數組]小方塊 題目描述 如果四個數 a,b,c,da,b,c,da,b,c,d 可以分成兩組,每組兩個數,滿足每組里面的兩個數一樣,那么稱這四個數是好的。 比如,2,5,2,52,5,2,52,5,2,5 是好的,因它滿足兩組:222 與…

Swift 項目結構詳解:構建可維護的大型應用

Swift 項目結構詳解:構建可維護的大型應用一、基礎結構(推薦新手使用)二、組件化結構(企業級應用推薦)層級架構:MVVM Coordinator路由實現(Coordinator模式)三、通用組件實現DI&…

【實時Linux實戰系列】基于實時Linux的數字轉換器設計

在現代電子系統中,數字轉換器(如模數轉換器ADC和數模轉換器DAC)扮演著至關重要的角色。它們負責將模擬信號轉換為數字信號,或將數字信號轉換為模擬信號,從而實現信號的數字化處理和傳輸。在實時系統中,如工…

FastTracker:實時準確的視覺跟蹤

摘要 https://arxiv.org/pdf/2508.14370 傳統的多目標跟蹤(MOT)系統主要設計用于行人跟蹤,通常對其他物體類別的泛化能力有限。本文提出了一種能夠處理多種物體類型的通用跟蹤框架,特別強調在復雜交通場景中的車輛跟蹤。所提出的1方法包含兩個關鍵組件&a…

國產輕量級桌面GIS軟件Snaplayers從入門到精通(20)

國產輕量級桌面GIS軟件Snaplayers實操:打開圖層并顯示屬性信息1、根據數據格式選擇圖層文件2、加載圖層到地圖中,并在左側顯示圖層的屬性表格3、屬性表格分頁顯示Snaplayers研發團隊承諾:國產輕量級桌面GIS軟件Snaplayers永久免費并持續更新

快速入門flask應用(從入門到實戰)

目錄 前言: 了解一些網絡通信的概念 什么是網絡通信: 當我們訪問一個網址的時候發生了什么: 1. 解析 URL:明確訪問目標 2. DNS 域名解析:將 “名字” 轉為 “地址” 3. 建立連接:TCP 三次握手&#x…

C++/QT 開發技能樹詳解

一、 編程語言 (C)1. C基礎語法(數據類型、模板、命名空間)是什么: 這是構建C程序的基石。數據類型定義了變量存儲的數據種類和大小;模板允許編寫與數據類型無關的通用代碼;命名空間用于避免大型項目中的名稱沖突。如何…

Java多線程進階-死鎖與面試題解析

文章目錄Java多線程進階:死鎖與面試題解析一、并發編程的噩夢——死鎖1. 什么是死鎖?四個缺一不可的條件2. 如何避免死鎖?從破壞循環等待開始二、并發編程面試題全景解析1. 鎖與同步機制2. CAS 與原子操作3. JUC 工具與線程池4. 線程安全集合…

ZYNQ啟動流程——ZYNQ學習筆記11

ZYNQ SoC 的啟動由片上的 BootROM 開始。片上 BootROM 是 ZYNQ 芯片上的一塊非易失性存儲器,它包含了 ZYNQ 所支持的配置器件的驅動, 而且里面的代碼是不可修改的。 BootROM 中的代碼首先會在片外的非易失性存儲器中尋找一個頭文件, 頭文件里…

C++利用CerateProcess創建WPF進程并通過命名管道通訊

引言原因是我需要在C程序中調用另外一個WPF窗體打開或則關閉,進程之前通過通訊協議進行交互。由于使用不同語言開發,兩者都比較復雜不方便重寫,最方便的方法就是使用進程間通信,WPF窗體應用程序根據消息進行Show/Hide/Exit操作。函…

Seaborn數據可視化實戰

1. Seaborn基礎與實踐:數據可視化的藝術 2. Seaborn入門:環境搭建與基礎操作 3. Seaborn基礎圖表繪制入門 4. Seaborn數據可視化基礎:從內置數據集到外部數據集的應用 5. Seaborn顏色與樣式定制教程 6. Seaborn數據可視化入門:繪制…

BIM+寫實數字孿生落地實戰指南

🌟 正文 在智慧城市與工業4.0的浪潮中,BIM與數字孿生的深度碰撞正在重塑建筑的生命周期。基于Revit(RVT)模型構建的超寫實數字孿生體,不僅實現物理空間的毫米級鏡像,更通過實時數據驅動,賦予建…

[Git] 如何拉取 GitHub 倉庫的特定子目錄

作為開發者,我們經常遇到只需要克隆大型倉庫中某個子目錄的場景。 Git 本身并不支持直接克隆子目錄,但通過一些技巧可以實現類似效果。本文將介紹幾種實用的方法,幫助獲取目標代碼。 為什么需要局部拉取? 節省時間和帶寬&#xff…

修復Simulink到UE5丟包時被控船體的殘影問題

提問 simulink 有一個和UE5協同的模塊,叫做Simulation 3D Scence Configuration,還有一個發送來自simulink到UE5數據的模塊叫做Simulation 3D Message。 現在遇到的問題是,這兩個模塊的優先級設置是正確的,且sample time都設置為0…

嵌入式第三十五課!!Linux下的網絡編程

一、目的網絡編程的目的實際上也是進程通信的一種方式,不過它可以在不同的主機上進行通信;二、需要解決的問題1. 主機與主機之間物理層面必須互聯互通。指的是參與通信的計算機(主機)需要通過物理設備建立連接(光纖、網…

遙感機器學習入門實戰教程|Sklearn案例⑦:特征選擇與重要性分析

很多同學問:波段/特征一多就“維度災難”,訓練慢、過擬合,且很難解釋“哪些特征最關鍵”。本篇用 sklearn 給出一套能跑、可視化、可比較的最小工作流,并配上方法論速記,幫助你在高光譜/多特征任務里做出穩健篩選。 &a…

地理數據制備:蔚藍地圖空氣質量數據的獲取、清洗與坐標匹配指南

【📊】手把手攻略:如何從“蔚藍地圖”挖寶——獲取濟南市可用空氣質量數據全記錄 一份不需要寫代碼也能搞定環境數據獲取的實用指南 ? 引言:為什么選擇蔚藍地圖? 作為一名環境數據愛好者,我經常需要獲取準確、可靠、…

Unreal Engine USceneComponent

Unreal🏛 Unreal Engine - USceneComponent📚 定義🏷 類繼承? 關鍵特性?? 常見配置🛠? 使用方法🔗 創建與掛載🔄 獲取與修改 Transform🧩 附加/分離組件🏊 典型應用場景&#x1…