事務 相關知識點

2021-08-21 08:40:40 字數 2364 閱讀 4362

1.關閉自動提交功能。

2.演示事務

**裡面的事務,主要是針對連線來的。

1. 通過***x.setautocommit(false )來關閉自動提交的設定。

2. 提交事務 ***x.commit();

3. 回滾事務 ***x.rollback();

@test

public

void

testtransaction() catch (sqlexception e) catch (sqlexception e1)

e.printstacktrace();

}finally

}

指的是 事務中包含的邏輯,不可分割。

指的是 事務執行前後。資料完整性

指的是 事務在執行期間不應該受到其他事務的影響

指的是 事務執行成功,那麼資料應該持久儲存到磁碟上。

不考慮隔離級別設定,那麼會出現以下問題。

髒讀 不可重讀 幻讀.

– 髒讀

乙個事務讀到另外乙個事務還未提交的資料

– 不可重複讀

乙個事務讀到了另外乙個事務提交的資料 ,造成了前後兩次查詢結果不一致。

設定a視窗的隔離級別為 讀未提交

兩個視窗都分別開啟事務

丟失更新

設定a視窗的隔離級別為 讀已提交

ab兩個視窗都開啟事務, 在b視窗執行更新操作。

3.在a視窗執行的查詢結果不一致。 一次是在b視窗提交事務之前,一次是在b視窗提交事務之後。

這個隔離級別能夠遮蔽 髒讀的現象, 但是引發了另乙個問題 ,不可重複讀。

如果有乙個連線的隔離級別設定為了序列化 ,那麼誰先開啟了事務, 誰就有了先執行的權利, 誰後開啟事務,誰就只能得著,等前面的那個事務,提交或者回滾後,才能執行。 但是這種隔離級別一般比較少用。 容易造成效能上的問題。 效率比較低。

在**裡面會使用事務

conn.setautocommit(false);

conn.commit();

conn.rollback();

事務只是針對連線物件,如果再開乙個連線物件,那就是預設的提交。

事務是會自動提交的。

安全隱患讀未提交

引發問題: 髒讀

讀已提交

解決: 髒讀 引發: 不可重複讀

可重複讀

解決: 髒讀 、 不可重複讀 , 未解決: 幻讀

可序列化

解決: 髒讀、 不可重複讀 、 幻讀。

mysql 預設的隔離級別是 可重複讀

oracle 預設的隔離級別是 讀已提交

可以在查詢的時候,加入 for update

要求程式設計師自己控制。

事務相關知識點

原子性 atomicity 事務中所有操作是不可再分割的原子單位。事務中所有操作要麼全部執行成功,要麼全部執行失敗。一致性 consistency 事務執行後,資料庫狀態與其它業務規則保持一致。如轉賬業務,無論事務執行成功與否,參與轉賬的兩個賬號餘額之和應該是不變的。隔離性 isolation 隔離...

事務的相關知識點

一件事情有n個組成單元 要不這n個組成單元同時成功 要不n個單元就同時失敗,就是將n個組成單元放到乙個事務中。開啟事務 start transaction 提交 commit 回滾 rollback 開啟事務 conn.setautocommit false 提交事務 conn.commit 回滾 ...

spring事務的相關知識點

4 事務管理失效的情況 所謂spring事務的傳播屬性,就是定義多個事務同時存在的時候,spring應該如何處理這些事務的行為。簡單來講就是 乙個開啟事務的方法執行在另乙個開啟了事務的方法中是,當前方法是開啟乙個新的事物還是使用同乙個事務 這些屬性在transactiondefinition中定義,...