Java事務解析(事務的基本操作+隔離的等級+事務的四大特性+事務的概念)

来源:https://www.cnblogs.com/pjhaymy/archive/2020/07/25/13375831.html
-Advertisement-
Play Games

Java事務解析(事務的基本操作+隔離的等級+事務的四大特性+事務的概念) 什麼是事務? 如果一個包含多個步驟的業務操作,這些操作被事務管理,那麼這些操作要麼同時成功要麼同時失敗 事務的四大特性(必須記住): 持久性:當事務回滾或者提交之後,資料庫會持久化數據 一致性:事務操作前後,數據的總量不變 ...


Java事務解析(事務的基本操作+隔離的等級+事務的四大特性+事務的概念)

什麼是事務?

如果一個包含多個步驟的業務操作,這些操作被事務管理,那麼這些操作要麼同時成功要麼同時失敗

事務的四大特性(必須記住):
持久性:當事務回滾或者提交之後,資料庫會持久化數據
一致性:事務操作前後,數據的總量不變
原子性:是不可分割的最小單位,不可分割,要麼同時成功要麼同時失敗,不可分割
隔離性:各個事務之間相互獨立

事務的基本操作:

開啟事務:start transaction
回滾事務:Roolback
提交:commit;
事務提交的兩種方式:
自動提交:
mysql中事務是預設自動提交的
比如我們執行一條DML(Data Manipulation Language),他會自動提交數據,將數據持久化到資料庫中
手動提交:
Oracle資料庫預設是手動提交的,
需要開啟事務再手動提交

查看事務提交的方式:
在這裡插入圖片描述可以看到mysql的預設提交方式是自動提交,-- 1 代表自動提交 0 代表手動提交

修改事務的提交方式:

set @@autocommit

在這裡插入圖片描述可以看到事務的提交方式被修改為手動提交

事務的隔離等級:

1
Read uncommitted:讀未提交
產生的問題:臟讀,不可重覆讀,幻讀
2
Read commited:讀已提交
產生問題:不可重覆讀,幻讀
3
Repeatable read 可重覆讀(Mysql預設讀法):
產生的問題:幻讀
4
serialzable:串列化
可以解決所有問題

事務的隔離等級越高,安全等級也越高,但是效率越來越低
資料庫查詢隔離級別:
select @@tx_isolation
設置資料庫的隔離等級:
select global transaction isolation level

什麼是幻讀,臟讀,不可重覆讀

不可重覆讀:
不可重覆讀是指A事務讀取了B事務已經提交的更改數據。假如A在取款事務的過程中,B往該賬戶轉賬100,A兩次讀取的餘額發生不一致。

臟讀:
A事務讀取B事務尚未提交的更改數據,併在這個數據的基礎上進行操作,這時候如果事務B回滾,那麼A事務讀到的數據是不被承認的。例如常見的取款事務和轉賬事務:
比如你去隔壁老王那借錢,你在他家的的時候看到他給你轉的錢到賬了,然後你就給他打了欠條,但是在你出了門,去銀行取錢的時候,發現從老王 那借的錢人間蒸發了,因為老王使用了事務回滾,迷惑了你一番
在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述

幻讀:
A事務讀取B事務提交的新增數據,會引發幻讀問題。幻讀一般發生在計算統計數據的事務中,例如銀行系統在同一個事務中兩次統計存款賬戶的總金額,在兩次統計中,剛好新增了一個存款賬戶,存入了100,這時候兩次統計的總金額不一致。

在這裡插入圖片描述
以上就是java事務的一些基礎知識,如有錯誤還請各位批評指正,喜歡我的文章可以關註或者收藏


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • --創建表空間 CREATE TABLESPACE aifu --表空間名 aifu LOGGING DATAFILE 'D:\dev_config\OracleTableSpaces\aifu.DBF' SIZE 5M --數據文件路徑 D:\dev_config\OracleTableSpace ...
  • 導出數據 導入/導出可以操作的是本地的mongodb伺服器,也可以是遠程的,所以,都有如下通用選項。 利用mongoexport -h host 主機 -port 埠 -d 知名使用的庫 -c 指明要導出的集合 -o 指明要導出的文件名 --csv 指定導出的csv格式 -q 過濾導出 -f fi ...
  • 索引是對資料庫表中一列或多列的值進行排序的一種結構,可以讓我們查詢資料庫變得 更快。MongoDB 的索引幾乎與傳統的關係型資料庫一模一樣,這其中也包括一些基本的查詢優化技巧。 增加檢索的效率. mongodb提供了索引的支持.(越來越傾向於關係型資料庫) 通常建立索引的, 基本要求, 就是文檔的結 ...
  • 許可權概述 在mongodb裡面的用戶是屬於資料庫的,每個資料庫有自己的管理員,管理員登錄後,只能操作所屬的資料庫。 註意:一般在admin資料庫中創建的用戶授予超級管理員許可權,登錄後可以操作任何的資料庫。 創建超級管理員 註意:在開啟許可權管理控制時,一定先要創建一個超級管理員授予超級管理許可權。 (1 ...
  • 添加文檔 語法: db.集合名.insert({k1:"v1", k2:"v2"....}) 註意: (1)文檔就是鍵值對,數據類型是BSON格式,支持的值更加豐富。 比如:db.集合名.insert({name:"bashlog", spc:{weight:100, address:"henan" ...
  • 創建資料庫 語法: use database_name; 註意:如果該資料庫不存在,則創建,如果該資料庫存在,則是切換,如果創建了資料庫,沒有任何操作,則會自動刪除該資料庫。 可以使用db命令查看當前所處的資料庫 查看資料庫 語法: show dbs; 創建集合 語法: db.集合名.insert( ...
  • 報錯信息 無法訪問資料庫 ReportServer。 (ObjectExplorer) 具體錯誤信息: 程式位置: 在 Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.DatabaseNavigableItem.get_C ...
  • 時光在不經意間,總是過得出奇的快。小暑已過,進入中暑,太陽更加熱烈的綻放著ta的光芒,...在外面被太陽照顧的人們啊,你們都是勤勞與可愛的人啊。在房子里已各種姿勢看我這篇這章的你,既然點了進來,那就由我繼續帶你回顧MySql的知識吧! 回顧練習資料girls庫以及兩張表的腳本: https://pa ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...