長事務的理解和預防

????????我們常常聽說數據庫發生了“長事務”而導致很嚴重的后果。那么何為長事務?長事務是如何產生的?長事務對數據庫有什么影響?如何防止長事務的產生?以下對這幾方面進行闡述和說明,以加深對SinoDB長事務的理解。

1.什么是長事務

??長事務,顧名思義就是一個事務(transaction)執行了很長時間仍未結束。那么一個事務執行多長時間算是長事務?對于SinoDB數據庫來說占用邏輯日志個數的百分比達到長事務高水位線就被定義為一個長事務。

2.事務的控制

??事務的開始和結束,以“begin”為開始,以“commit”或“rollback”結束。“commit”表明事務執行成功,對數據庫所做的修改已經生效,“rollback”則說明事務執行失敗,對數據庫的所有操作均需要撤銷,恢復到事務執行之前的狀態。為了使事務能被撤銷,數據庫也必須對所有操作及被修改前的數據進行日志記錄,以便撤銷時能夠執行逆向操作,將數據恢復到以前的狀態。

3.對日志的使用和影響

??為了防止數據庫因日志資源耗盡發生阻塞,SinoDB設置了長事務高水位線(LTXHWM)和獨占的長事務高水位線(LTXEHWM),當一個事務占用日志個數的百分比達到長事務高水位線LTXHWM就被標識為一個長事務,并自動觸發回滾操作,當百分比達到獨占的長事務高水位線時,其它會話均進入阻塞狀態,只進行長事務回滾操作。

4.長事務產生的幾種原因

??在SinoDB數據庫中,長事務現象發生的原因主要有:

1) 邏輯日志參數設置不合理,日志個數太少或長事務高水位線LTXHWM太低;

2) 數據庫并發很高,事務的粒度太粗,長時間不能提交,最終觸及長事務高水位線;

3) 事務啟動后,未使用commit或rollback來終止事務;

4) 大表連接插入目標表,連接條件不正確產生笛卡爾集,結果集超出預期,長時間不能處理完成;

5) 使用臨時表裝載大量數據,未指定with no log子句,也未設置TEMPTAB_NOLOG參數。

5.如何避免長事務

??長事務帶來的后果是嚴重的,雖然在長事務發生時可以通過手工添加邏輯日志方式來挽救,但是及時性難以保證。不過長事務也是可以避免的,具體可以從以下幾點做起:

1) 根據并發用戶數和業務量合理設置邏輯日志大小和個數,保證大部分事務能正常完成;

2) 適當調低長事務高水位線LTXHWM,確保在長事務發生時有足夠的日志文件用于回滾;

3) 設置參數DYNAMIC_LOGS為2,當無可用日志文件時會自動增加,需要注意的是日志并不是在事務到達LTXHWM之后就開始增加;

4) 合理控制事務的顆粒度,將大事務分割為小事務進行多次提交批量處理,減少單個事務處理時間,提高邏輯日志資源利用率;

5) 事務操作閉環,事務開始之后必須結束,盡量避免回滾,減少對日志和鎖的消耗;

6) 大表進行連接時,盡量保證連接條件唯一,避免產生笛卡爾集,避免產生事務日志;

7) 在創建臨時表應加上with no log字句,或將數據庫參數TEMPTAB_NOLOG指定為1。

更多信息內容請移步星瑞格官方社區,期待大家加入
Sinoregal Tech ForumAsk questions, share solutions, and get to know the Sinoregal community.icon-default.png?t=N7T8https://forum.sinoregal.cn/

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

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

相關文章

Python-VBA函數之旅-super函數

目錄 一、super函數的常見應用場景 二、super函數使用注意事項 三、如何用好super函數? 1、super函數: 1-1、Python: 1-2、VBA: 2、推薦閱讀: 個人主頁: https://myelsa1024.blog.csdn.net/ 一、su…

AI代理和AgentOps生態系統的剖析

1、AI代理的構成:AI代理能夠根據用戶的一般性指令自行做出決策和采取行動。 主要包含四個部分: (1)大模型(LLM) (2)工具:如網絡搜索、代碼執行等 (3&#x…

探索未來:IT行業的革新脈動與明日圖景

你眼中的IT行業現狀與未來趨勢 隨著技術的不斷進步,IT行業已成為推動全球經濟和社會發展的關鍵力量。從云計算、大數據、人工智能到物聯網、5G通信和區塊鏈,這些技術正在重塑我們的生活和工作方式。你眼中IT行業的現狀及未來發展趨勢是怎么樣的&#xf…

開散列哈希桶

通過上面這幅圖,讀者應該能較為直觀地理解何為開散列,以及閉散列與開散列的區別在哪里 —— 數據的存儲形式不同,至于其他的,如確定每個元素的哈希地址等一概相同。 與閉散列相比,開散列能夠更好地處理發生沖突的元素 …

Taro + React + Tailwind 開發微信小程序問題匯總(持續更新中...)

搞小程序也有兩周了,踩了很多坑,有些問題很難搜索到,在這里記錄一下問題和自己的解決方案,希望能幫助到需要的小伙伴~ 1. 真機調試報錯:Error: module ‘babel/runtime/helpers/Arrayincludes.js’ is not …

Transformers 加速的一些常用技巧

Transformers 是一個強大的架構,但模型因其采用的自注意力機制,雖然能夠有效地處理序列數據并捕獲長距離依賴關系,但同時也容易導致在訓練過程中出現OOM(Out of Memory,內存不足)或者達到GPU的運行時限制。…

AI大模型探索之路-訓練篇22: ChatGLM3微調實戰-從原理到應用的LoRA技術全解

系列篇章💥 AI大模型探索之路-訓練篇1:大語言模型微調基礎認知 AI大模型探索之路-訓練篇2:大語言模型預訓練基礎認知 AI大模型探索之路-訓練篇3:大語言模型全景解讀 AI大模型探索之路-訓練篇4:大語言模型訓練數據集概…

MPLAB X IDE編譯attiny1616工程報錯卻無報錯信息

MPLAB X IDE(XC-8編譯器)編譯報錯,無具體錯誤內容,僅顯示需要xc-8 pro的警告。 內存占用率顯示為81%,未超標。 原因:軟件使用了microchip的bootloader功能。應用程序起始地址(也是bootloader結束地址)設置錯…

社交巨頭:探索Facebook的震撼力量

Facebook作為社交媒體領域的巨頭,不僅在數字化社會中占據著重要地位,更是影響了人們的生活、工作和社交方式。本文將深入探索Facebook的震撼力量,從多個角度解讀其在當今社會中的重要性和影響。 1. 全球用戶覆蓋的壯觀規模 Facebook作為全球…

軟件定義汽車七大典型應用場景

隨著軟件定義汽車典型應用場景的落地,用戶將明顯體驗到汽車從交通工具向智能移動終端的轉變。幾十年前主要用高性能的底盤操穩與動力系統定義一臺好車,幾年前主要用智能化系統與智能交互滿足終端用戶的用車體驗,未來將調度全車傳感器與數據驅…

c 數組遍歷

#include <stdio.h> #include <stdlib.h> int main() { printf(“指針數組練習&#xff01;&#xff01;&#xff01;\n”); /* 數組名就是數組的首地址 數組存在一段連續的內存空間中 */ double score[] {60, 70, 80, 90, 100}; double *ptr_score; i…

docker安裝時報錯:Error: Nothing to do

安裝docker時報以下錯誤 解決方法&#xff1a; 1.下載關于docker的相關依賴環境 yum -y install yum-utils device-mapper-persistent-data lvm22.設置下載Docker的鏡像源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3…

FMEA存在的五個主要不足及改進措施——FMEA軟件

免費試用FMEA軟件-免費版-SunFMEA 在制造業和產品設計領域&#xff0c;失效模式與影響分析&#xff08;Failure Modes and Effects Analysis&#xff0c;簡稱FMEA&#xff09;被廣泛運用&#xff0c;用于預防潛在的設計或制造缺陷。然而&#xff0c;盡管FMEA在風險管理方面發揮…

開發者集結號:大灣區 Open Source Day 邀您共探技術前沿

開源技術正以其開放、協作的特性&#xff0c;引領著軟件開發的新潮流&#xff0c;是推動社會進步的重要力量。作為開發者&#xff0c;您是否渴望深入了解開源項目的前沿動態&#xff1f;由ALC深圳與2024中國互聯網發展創新與投資大賽聯合舉辦、FISCO金鏈盟深度參與的大灣區 Ope…

MySQL————創建存儲過程函數

存儲過程使用大綱 有參數傳遞 delimiter $$ 聲明一個名稱為get_student_introduce create procedure add_student_infor( in p_userName VARCHAR(20),in p_phone VARCHAR(11),in p_sex char(2),in p_introduce VARCHAR(255)) 開始操作 BEGIN 撰寫真正在操作DMLDQL都行 INSE…

CSS---復合選擇器、元素顯示模式和背景(三)

一、CSS的復合選擇器 1.1 什么是復合選擇器 在CSS中&#xff0c;可以根據選擇器的類型把選擇器分為基礎選擇器和復合選擇器&#xff0c;復合選擇器是建立在基礎選擇器之上&#xff0c;對基本選擇器進行組合形成的。 復合選擇器是由兩個或多個基礎選擇器連寫組成&#xff0c;它…

SpringBoot3和SpringBoot2分別整合knife4j(openApi)

文章目錄 一、SpringBoot2進行整合knife4j1.1 導入依賴1.2 配置knife4j 配置文件1.3 可以在接口上配置 注解進行信息的配置 二、SpringBoot3 整合kinfe4j(openApi)2.1 導入依賴2.2 yaml配置文件2.3 swagger初始化配置2.4 創建接口 一、SpringBoot2進行整合knife4j 1.1 導入依賴…

【云原生】kubernetes核心組件

引言&#xff1a; Kubernetes 是為運行分布式集群而建立的&#xff0c;分布式系統的本質使得網絡成為 Kubernetes 的核心和必要組成部分&#xff0c;了解 Kubernetes 網絡模型可以使你能夠正確運行、監控和排查應用程序故障。 一、Kubernetes的核心組件 1.1、Master組件 1.1.…

基于Springboot+Vue的Java項目-農產品直賣平臺系統開發實戰(附演示視頻+源碼+LW)

大家好&#xff01;我是程序員一帆&#xff0c;感謝您閱讀本文&#xff0c;歡迎一鍵三連哦。 &#x1f49e;當前專欄&#xff1a;Java畢業設計 精彩專欄推薦&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python畢業設計 &am…