Mysql資料庫的事物

2022-08-27 01:36:13 字數 2014 閱讀 5440

資料庫的事務必須具備acid特性,acid是指 atomicity(原子性)、consistensy(一致性)、isolation(隔離型)和durability(永續性)的英文縮寫。

1、原子性(atomicity

事務包裝的一組sql,要麼都執行成功,要麼都失敗。這些操作是不可分割的。

2、一致性(consistency

資料庫的資料狀態是一致的。

事務的成功與失敗,最終資料庫的資料都是符合實際生活的業務邏輯。一致性絕大多數依賴業務邏輯和原子性。

3、永續性:(durability)

事務成功提交之後,對於資料庫的改變是永久的。哪怕資料庫發生異常,重啟之後資料亦然存在。

4、隔離性(isolation

乙個事務的成功或者失敗對於其他的事務是沒有影響。兩個事務應該相互獨立。

1、髒讀 -- 最嚴重,杜絕發生

2、不可重複讀

3、幻讀(虛讀)

乙個事務讀取了另乙個事務沒有提交的資料,非常嚴重。應當盡量避免髒讀。

1.read uncommitted 讀未提交,乙個事務讀到另乙個事務沒有提交的資料。

a)       存在:3個問題(髒讀、不可重複讀、虛讀)。

b)       解決:0個問題

2.read committed 讀已提交,乙個事務讀到另乙個事務已經提交的資料。

a)       存在:2個問題(不可重複讀、虛讀)。

b)       解決:1個問題(髒讀)

3.repeatable read:可重複讀,在乙個事務中讀到的資料始終保持一致,無論另乙個事務是否提交。

a)       存在:1個問題(虛讀)。

b)       解決:2個問題(髒讀、不可重複讀)

4.serializable 序列化,同時只能執行乙個事務,相當於事務中的單執行緒。

a)       存在:0個問題。

b)       解決:3個問題(髒讀、不可重複讀、虛讀)

安全性:serializable > repeatable read > read committed > read uncommitted

效能 : serializable < repeatable read < read committed < read uncommitted

mysql:repeatable read

oracle:read committed

查詢資料庫的隔離級別

1 show variables like '%isolation%';2或

設定資料庫的隔離級別

讀未提交:read uncommitted

讀已提交:read committed

可重複讀:repeatable read

序列化:serializable

資料庫事物

事務 sqlite預設一條語句就是乙個事務,有多少條資料就有多少次磁碟操作,比如10條計入就要10次讀寫磁碟操作。解決方法 新增事務處理,把10條操作看做乙個事務。1.sqlitedatabase 方法 public void begintransaction 開始事務 注意 事務可以巢狀,通過se...

資料庫事物

1.事物處理順序事物的sql語句 用事務 事務開始和事物提交 sql語句包裹主要執行的sql語句 事物處理可以保證一組相關操作要麼都成功,要麼都失敗.1.把事務開啟 2.寫你要執行語句 3.把事務進行提交 4.把事務回滾 rollback 遇到斷電 事務沒有提交 那麼事務會自動回滾 例如 begin...

資料庫事物

事物的概念 使用者在進行資料庫操作時的乙個資料庫操作系列。對於該操作序列中的操作,要麼全部執行,要麼全部不執行。所有的操作是乙個整體,不可分割。與事物相關的概念有事物提交和事物回滾。事物提交是將事物中對資料的更新提交到資料庫中,如果執行正常則事物結束。否則在發生異常時,事物將回滾,將資料庫狀態還原到...