關於事務的學習

来源:https://www.cnblogs.com/forlivebetter/archive/2018/07/14/9310915.html
-Advertisement-
Play Games

一、Mysql事務 事務: 事務指邏輯上的一組操作,組成這組操作的各個單元,要麼全部成功,要麼全部不成功。 1、Mysql中的事務 a、mysql引擎是支持事務的 b、mysql預設自動提交事務。每條語句都處在單獨的事務中。 c、手動控制事務 開啟事務:start transaction | beg ...


 一、Mysql事務

事務:

事務指邏輯上的一組操作,組成這組操作的各個單元,要麼全部成功,要麼全部不成功。

 

1、Mysql中的事務

amysql引擎是支持事務的

bmysql預設自動提交事務。每條語句都處在單獨的事務中。

c、手動控制事務

開啟事務:start transaction | begin

提交事務:commit

回滾事務:rollback

 

 

2JDBC如何控制事務

 

 

3、事務的特性(面試題)

原子性:指事務是一個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。 

一致性:事務必須使資料庫從一個一致性狀態變換到另外一個一致性狀態。轉賬前和轉賬後的總金額不變。

隔離性:事務的隔離性是多個用戶併發訪問資料庫時,資料庫為每一個用戶開啟的事務,不能被其他事務的操作數據所干擾,多個併發事務之間要相互隔離。

持久性:指一個事務一旦被提交,它對資料庫中數據的改變就是永久性的,接下來即使資料庫發生故障也不應該對其有任何影響。

 

4、事務的隔離級別

贓讀:指一個事務讀取了另一個事務未提交的數據。

不可重覆讀:在一個事務內讀取表中的某一行數據,多次讀取結果不同。一個事務讀取到了另一個事務提交後的數據。(update

虛讀(幻讀):是指在一個事務內讀取到了別的事務插入的數據,導致前後讀取不一致。 (insert)

 

資料庫通過設置事務的隔離級別防止以上情況的發生:

* 1READ UNCOMMITTED: 贓讀、不可重覆讀、虛讀都有可能發生。

* 2READ COMMITTED: 避免贓讀。不可重覆讀、虛讀都有可能發生。(oracle預設的)

* 4REPEATABLE READ:避免贓讀、不可重覆讀。虛讀有可能發生。(mysql預設)

* 8SERIALIZABLE: 避免贓讀、不可重覆讀、虛讀。

級別越高,性能越低,數據越安全

 

mysql中:

查看當前的事務隔離級別:SELECT @@TX_ISOLATION;

更改當前的事務隔離級別:SET TRANSACTION ISOLATION LEVEL 四個級別之一。

設置隔離級別必須在事務之前

 

練習:設置事務的隔離級別為 read uncommitted

時間

線程1

線程2

說明

t1

begin;

 

 

t2

select * from account where name='zs';

結果1000

 

 

t3

 

begin;

 

t4

 

update account set money=money+100 where name='zs';

 

t5

select * from account where name='zs';

結果1100

 

讀到了另一個線程未提交事務的數據。贓讀發生了

t6

 

commit;

 

t7

select * from account where name='zs';

結果1100

 

讀到了另一個線程提交事務的update數據。不可重覆讀發生了

t8

 

insert into account values(4,'zl',1000);

執行insert語句插入數據,事務自動提交了

 

t9

select * from account;

查到4條數據

 

讀到了另一個線程自動提交事務的insert語句數據。虛讀發生了

t10

commit;

 

 

 

 

5JDBC控制事務的隔離級別

Connection介面:

 

 

設置隔離級別:必須在開啟事務之前。

Connection.setTransactionIsolation(int level);


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

-Advertisement-
Play Games
更多相關文章
  • 轉載請註明出處:https://www.cnblogs.com/funnyzpc/p/9190233.html 先來一段詩 ``` 就這樣吧 忍受折磨 然後,躺進醫院 然後,死去 化作一抔土 從此,這世界沒有煩惱 沒有病痛 沒有我 也沒有這個世界 ``` 以上是在半睡半醒中想到的,寫的不好,讀者可直 ...
  • 主要使用後端驗證,調用awt API ,會簡單調用即可,繪圖代碼已封裝到LoginVerifyUtils中。 界面展示: LoginVerifyUtils全部代碼 1 import java.awt.Color; 2 import java.awt.Font; 3 import java.awt.G ...
  • 本周大部分的時間都用在了使用JAVA語言進行編程之前的準備工作上,主要包括:JDK的安裝以及環境變數的配置,MyEclipse軟體的安裝以及熟悉界面。 下麵將詳細的介紹本周的收穫。 首先解決了第一個問題使用JAVA語言為什麼需要安裝JDK:JDK是 Java 語言的軟體開發工具包,主要用於移動設備、 ...
  • 最近一次迭代,參與了公司數據應用平臺的開發,其中負責的一塊功能早早的就完成了代碼的編寫工作,即將進入測試階段,因為有時間思考和總結代碼編寫中遇到的難題,便想著將代碼做一次重構:其中優化的一個功能就是關於數據平臺敏感欄位的收集 功能描述:數據平臺敏感欄位的收集: 開始的版本: 可以看出邏輯都散落在fo ...
  • 在Sring核心與設計模式的文章中,分別介紹了Ioc容器和Bean的依賴關係。如果閱讀過前2文就會知道,Spring的整個運轉機制就是圍繞著IoC容器以及Bean展開的。IoC就是一個籃子,所有的Bean都向裡面扔。除了提供籃子功能創建並存放Bean之外,IoC還要負責管理Bean與Bean之間的關 ...
  • 1. 學習計劃 第一天:Lucene的基礎知識 1、案例分析:什麼是全文檢索,如何實現全文檢索 2、Lucene實現全文檢索的流程 a) 創建索引 b) 查詢索引 3、配置開發環境 4、創建索引庫 5、查詢索引庫 6、分析器的分析過程 a) 測試分析器的分詞效果 b) 第三方中文分析器 7、索引庫的 ...
  • Spring 通過任務執行器(TaskExecutor)來實現多線程和併發編程。使用ThreadPoolTaskExecutor可實現一個基於線程池的TaskExecutor。而實際開發中任務一般是非阻礙的,即非同步的,所有我們在配置類中通過@EnableAsync開啟對非同步任務的支持,並通過在實際執... ...
  • 來源:https://www.bilibili.com/video/av20436259來源:黑馬程式員存儲器: 記憶體(rom只讀記憶體,ram隨機存儲器) 外存(硬碟,軟盤ab,光碟) 系統軟體:1.桌面操作系統:windows,macos--程式員使用較多,Linux2.伺服器操作系統:Linux ...
一周排行
    -Advertisement-
    Play Games
  • 概述:本文代碼示例演示瞭如何在WPF中使用LiveCharts庫創建動態條形圖。通過創建數據模型、ViewModel和在XAML中使用`CartesianChart`控制項,你可以輕鬆實現圖表的數據綁定和動態更新。我將通過清晰的步驟指南包括詳細的中文註釋,幫助你快速理解並應用這一功能。 先上效果: 在 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • openGauss(GaussDB ) openGauss是一款全面友好開放,攜手伙伴共同打造的企業級開源關係型資料庫。openGauss採用木蘭寬鬆許可證v2發行,提供面向多核架構的極致性能、全鏈路的業務、數據安全、基於AI的調優和高效運維的能力。openGauss深度融合華為在資料庫領域多年的研 ...
  • 概述:本示例演示了在WPF應用程式中實現多語言支持的詳細步驟。通過資源字典和數據綁定,以及使用語言管理器類,應用程式能夠在運行時動態切換語言。這種方法使得多語言支持更加靈活,便於維護,同時提供清晰的代碼結構。 在WPF中實現多語言的一種常見方法是使用資源字典和數據綁定。以下是一個詳細的步驟和示例源代 ...
  • 描述(做一個簡單的記錄): 事件(event)的本質是一個委托;(聲明一個事件: public event TestDelegate eventTest;) 委托(delegate)可以理解為一個符合某種簽名的方法類型;比如:TestDelegate委托的返回數據類型為string,參數為 int和 ...
  • 1、AOT適合場景 Aot適合工具類型的項目使用,優點禁止反編 ,第一次啟動快,業務型項目或者反射多的項目不適合用AOT AOT更新記錄: 實實在在經過實踐的AOT ORM 5.1.4.117 +支持AOT 5.1.4.123 +支持CodeFirst和非同步方法 5.1.4.129-preview1 ...
  • 總說周知,UWP 是運行在沙盒裡面的,所有許可權都有嚴格限制,和沙盒外交互也需要特殊的通道,所以從根本杜絕了 UWP 毒瘤的存在。但是實際上 UWP 只是一個應用模型,本身是沒有什麼許可權管理的,許可權管理全靠 App Container 沙盒控制,如果我們脫離了這個沙盒,UWP 就會放飛自我了。那麼有沒... ...
  • 目錄條款17:讓介面容易被正確使用,不易被誤用(Make interfaces easy to use correctly and hard to use incorrectly)限制類型和值規定能做和不能做的事提供行為一致的介面條款19:設計class猶如設計type(Treat class de ...
  • title: 從零開始:Django項目的創建與配置指南 date: 2024/5/2 18:29:33 updated: 2024/5/2 18:29:33 categories: 後端開發 tags: Django WebDev Python ORM Security Deployment Op ...
  • 1、BOM對象 BOM:Broswer object model,即瀏覽器提供我們開發者在javascript用於操作瀏覽器的對象。 1.1、window對象 視窗方法 // BOM Browser object model 瀏覽器對象模型 // js中最大的一個對象.整個瀏覽器視窗出現的所有東西都 ...