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 資料庫管理系統採用日誌來保證事務的原子性 一致性和永續性。日誌記錄了事務...