bug | 事務粒度不能太大,含demo

刷到一個說法,建議不要使用@transaction注解。這個說法不太準確,注解可以用,但標注的事務粒度不能太大,這樣可能會引起數據庫阻塞問題。以下介紹注解事務和編程式事務的兩種用法。

關鍵字:聲明式事務,編程式事務,顯式事務

文章目錄

    • 1.反例演示
    • 2.事務粒度過大-負面影響
    • 3.建議
      • (1)編程式事務代碼模板

1.反例演示

在這里插入圖片描述

案例中5,6才是一個原子操作,但是注解標注得太大了,執行外部調用時卡住了,導致事務阻塞會拖垮數據庫。

2.事務粒度過大-負面影響

事務粒度過大可能會阻塞數據庫并導致性能問題,具體影響如下:

阻塞數據庫的主要表現
鎖競爭加劇:

大事務持有鎖的時間更長

更多數據行/表被鎖定

其他事務需要等待這些鎖釋放

資源占用:

長時間占用數據庫連接

未提交事務會占用UNDO日志空間

內存中維護的事務狀態數據增多

具體影響
并發性能下降:

其他會話可能被阻塞等待鎖釋放

系統吞吐量降低

系統資源壓力:

內存消耗增加

可能填滿數據庫的臨時表空間或日志空間

風險增加:

死鎖概率提高

事務失敗時回滾代價高

可能導致連接池耗盡

3.建議

建議把事務粒度控制得更小一些再使用@Transactional注解。或者使用編程式事務,準確處理需要搞成事務的步驟。

(1)編程式事務代碼模板

以下是編程式事務代碼模板參考:

    @Autowiredprivate TransactionTemplate transactionTemplate;transactionTemplate.execute((transactionStatus)->{try {System.out.println("業務邏輯");} catch (Exception e) {transactionStatus.setRollbackOnly();// 標記為回滾log.error("服務異常");}return transactionStatus;});

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

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

相關文章

別再看人形機器人了!真正干活的機器人還有這些!

每次提起“機器人”,你腦海中是不是立刻浮現出雙足行走、擬人微笑、還能陪你聊天的那種“人形機器人”?但真相是:人形機器人并非更實用,只是滿足了我們對“人類替代品”的幻想。事實上,機器人的世界遠比我們想象的更豐…

垃圾回收,幾種GC算法及GC機制

1.什么是垃圾回收?如何觸發垃圾回收? 垃圾回收(GC)是自動管理內存的一種機制,它負責自動釋放不再被程序引用的對象所占用的內存,這種機制減少內存泄漏和內存管理錯誤的可能性。可以通過多種方式觸發:內存不足時&#x…

更智能的零售終端設備管理:合規、安全與高效

目錄 引言:為什么零售連鎖和自助終端需要更智能的設備管理? 典型應用場景 1. 便利店連鎖 2. 大型超市 3. 加油站 4. 自助終端 核心功能,驅動高效與安全 1. 批量配置 2. 定時策略同步 3. 設備狀態監控 4. Kiosk 模式,保…

Elasticsearch:向量搜索過濾 - 保持相關性

作者:來自 Elastic Carlos Delgado 僅執行向量搜索以找到與查詢最相似的結果是不夠的。通常需要過濾來縮小搜索結果。本文解釋了在 Elasticsearch 和 Apache Lucene 中向量搜索的過濾是如何工作的。 Elasticsearch 擁有豐富的新功能,幫助你為自己的用例構…

Linux 性能調優之 OOM Killer 的認知與觀測

寫在前面 博文內容涉及到OOM Killer機制,以及利用 Cgroup/dmesg/BPF 觀測 OOM Killer 事件,包括云原生環境下的 OOM Killer 機制的簡單介紹 這是內存調優的最后一篇,之后會分享一些網絡調優相關內容 理解不足小伙伴幫忙指正 ??,生活加油 我不再將這個世界與我所期待的,塑…

webrtc之高通濾波——HighPassFilter源碼及原理分析

文章目錄前言一、導讀二、高通濾波過程1.HighPassFilter的創建1)HighPassFilter的作用2)開啟條件3)開啟配置2.高通濾波整體過程1)觸發時機2)濾波器創建3)高通濾波過程三、算法實現1.原理1)濾波器…

《sklearn機器學習——聚類性能指數》同質性,完整性和 V-measure

函數:homogeneity_score 參數: labels_true: array-like, shape [n_samples] 樣本的真實標簽。 labels_pred: array-like, shape [n_samples] 樣本的預測標簽。返回值: h: float 同質性得分,在0到1之間,值越大表示聚…

HarmonyOS 應用開發新范式:深入剖析 Stage 模型與 ArkTS 狀態管理

好的,請看這篇關于 HarmonyOS 應用開發中 Stage 模型與 ArkTS 狀態管理的技術文章。 HarmonyOS 應用開發新范式:深入剖析 Stage 模型與 ArkTS 狀態管理 引言 隨著 HarmonyOS 4、5 的發布以及 API 12 的迭代,HarmonyOS 的應用開發范式已經全面…

一個Java的main方法在JVM中的執行流程

一個Java的main方法在JVM中的執行流程可以分為??四大階段??:??加載 -> 鏈接 -> 初始化 -> 執行??。// HelloWorld.java public class HelloWorld {public static void main(String[] args) {String message "Hello, JVM!";System.out.p…

聚焦診斷管理(DM)的傳輸層設計、診斷服務器實現、事件與通信管理、生命周期與報告五大核心模塊

聚焦診斷管理(DM)的傳輸層設計、診斷服務器實現、事件與通信管理、生命周期與報告五大核心模塊,明確 UDS(ISO 14229-1)與 SOVD(ASAM 服務化診斷)的功能邏輯、交互流程及規范性要求(SWS_DM 系列)。 1 UDS 傳輸層(UDS Transport Layer) 作為 DM 與診斷客戶端的 UDS …

關于npm的鉤子函數

一、npm scripts 的生命周期鉤子(Lifecycle Scripts) npm 提供了一些 ??特殊的 script 名稱??,它們是 ??生命周期鉤子??,會在特定時機 ??自動執行??。這些鉤子包括: 1.prepublishOnly(在 npm publish之前執…

167.在Vue3中使用OpenLayers模仿共享單車,判斷點是否放在規劃的電子圍欄內

一、前言大家好,這里分享一個 Vue3 OpenLayers 的小案例: 模仿共享單車的電子圍欄功能,用戶在地圖上繪制停泊點時,系統會自動判斷該點是否在規劃好的電子圍欄內(多邊形或圓形)。這個功能在實際項目中有很大…

鍵盤上面有F3,四,R,F,V,按下沒有反應,維修記錄

打開游戲,按了好幾遍F,結果都沒反應,但是左右上下行走是沒問題的。一臉懵逼???打開鍵盤測試網頁,發現有一列沒反應,F1不是,F1我定義了一個快捷鍵,跟測試沖突了…

8051單片機-成為點燈大師

第三章 成為點燈大師 1. 硬件設計 上一章說到,怎么點亮LED燈,很簡單啊,就是把P2口設置成低電平就行了。接下來讓我們更進一步,完成LED閃爍、流水燈實驗2. 軟件設計 2.1 LED閃爍實驗 為了使LED閃爍,我們自然而然的想到要…

Rust 日志庫完全指南:從入門到精通

GitHub 倉庫: https://github.com/zhouByte-hub/rust-study ? 如果這個項目對您有幫助,請給我一個 star! 在 Rust 生態系統中,日志處理是一個至關重要的環節。無論是開發小型應用還是大型系統,良好的日志記錄都能幫助我們追蹤問題…

【科研繪圖系列】R語言繪制論文合集圖

禁止商業或二改轉載,僅供自學使用,侵權必究,如需截取部分內容請后臺聯系作者! 文章目錄 介紹 數據準備與過濾 統計分析 可視化繪圖 抗藥性分析 系統發育分析 加載R包 數據下載 Supp figure 1 Fig 1a Fig 1c Fig 1d Fig 1e Fig 1f Supp figure 3 Supp figure 4 Supp figure 5…

【c++】從三個類的設計看軟件架構的哲學思考

從三個類的設計看軟件架構的哲學思考 文章目錄從三個類的設計看軟件架構的哲學思考前言一、OP類:系統工程的安全守護者設計特點設計哲學適用場景現實類比二、VarReviser類:版本控制的嚴謹管理者設計特點設計哲學適用場景現實類比三、Model類:…

人工智能優化SEO關鍵詞的實戰策略

本文聚焦智能技術如何革新關鍵詞優化實踐,系統解析提升網站排名的核心路徑。重點探討語義分析如何精準匹配用戶意圖、長尾詞智能挖掘怎樣解鎖高潛力流量,并詳解工具篩選高轉化關鍵詞的五大實用策略。通過實戰案例說明技術如何突破流量增長瓶頸&#xff0…

【c++】c++第一課:命名空間

文章目錄1.C的第?個程序2.命名空間2.1 namespace的價值2.2 namespace的定義2.3 命名空間使?最新的c標準(建議收藏) 1.C的第?個程序 C兼容C語?絕?多數的語法,所以C語?實現的helloworld依舊可以運?,C中需要把定義?件代碼后…

版本發布流程手冊:Release分支規范與Bug分級標準全解析

在軟件交付日益高頻、用戶需求快速迭代的今天,版本發布流程的規范性直接決定了團隊的交付效率、產品質量和用戶滿意度。然而,許多團隊仍面臨以下痛點: 發布混亂:分支管理隨意,代碼沖突頻發;質量失控&#…