資料庫事物

2021-08-18 09:59:07 字數 1706 閱讀 6240

1.事物處理順序

事物的sql語句(用事務(事務開始和事物提交)sql語句包裹主要執行的sql語句)

事物處理可以保證一組相關操作要麼都成功,要麼都失敗.

1.把事務開啟

2.寫你要執行語句

3.把事務進行提交

4.把事務回滾(rollback;) 遇到斷電 事務沒有提交 那麼事務會自動回滾

例如:begin;

update 表 set money=money-100

where username='fj';

update 表 set money=money+100

where username='dp';

commit;

2.事物的四個特性
1.具有原子性

事務必須是原子工作單元;對於其資料修改,要麼全都執行,要麼全都不執行

2.一致性

事務在完成時,必須使所有的資料都保持一致狀態

3.隔離性

事務的隔離性是多個使用者併發訪問資料庫時,資料庫為每乙個使用者開啟的事務,

不能被其他事務的運算元據所干擾,多個併發事務之間要相互隔離。

資料結束時的狀態與原始事務執行的狀態相同,不會檢視中間狀態的資料

4.永續性

事務完成之後,它對於系統的影響是永久性的。該修改即使出現致命的系統故障也將一直保持

3.事物的隔離級別
一,事務的隔離級別

1.贓讀:指乙個事務讀取了另乙個事務未提交的資料。(update)

2.不可重複讀:在乙個事務內讀取表中的某一行資料,多次讀取結果不同。乙個事務讀取到了另乙個事務提交後的資料。

我從櫃檯取錢 我母親從atm取錢 櫃檯小姐 發現賬戶資料在跳動

3.虛讀(幻讀):是指在乙個事務內讀取到了別的事務插入的資料,導致前後讀取不一致.(insert)

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

* 1、read uncommitted: 贓讀、不可重複讀、虛讀都有可能發生。

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

* 4、repeatable read:避免贓讀、不可重複讀。虛讀有可能發生。(mysql預設)

* 8、serializable: 避免贓讀、不可重複讀、虛讀。

級別越高,效能越低,資料越安全

mysql中:

檢視當前的事務隔離級別:select @@tx_isolation;

更改當前的事務隔離級別:set

transaction

isolation

level

read uncommitted四個級別之一。

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

-- mysql預設是自動提交事務 要想手動管理需要

update account set money=money-100

where name='aaa';

-- 開啟事務

begin;

-- 開啟事務後 執行成功 但是資料沒有發生變化

-- 沒有提交的話 斷電等等 會自動回滾

update account set money=money-100

where name='aaa';

-- 提交

commit;

-- 回滾

rollback;

資料庫事物

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

資料庫事物

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

資料庫事物

何為資料庫事物資料庫事務 transaction 是乙個或多個資料操作的集合,這些操作要麼全部執行,要麼全部不執行,是乙個不可分割的工作單位。以begin開始,以commit或rollback結束。事物四個特徵acidtips 資料庫管理系統採用日誌來保證事務的原子性 一致性和永續性。日誌記錄了事務...