何為資料庫事物
資料庫事務(transaction)是乙個或多個資料操作的集合,這些操作要麼全部執行,要麼全部不執行,是乙個不可分割的工作單位。以事物四個特徵acidbegin
開始,以commit
或rollback
結束。
tips:
資料庫管理系統採用日誌來保證事務的原子性、一致性和永續性。日誌記錄了事務對資料庫所做的更新,如果某個事務在執行過程中發生錯誤,就可以根據日誌,撤銷事務對資料庫已做的更新,使資料庫退回到執行事務前的初始狀態。
資料庫管理系統採用鎖機制來實現事務的隔離性。當多個事務同時更新資料庫相同的資料時,只允許持有鎖的事務能更新該資料,其他事務必須等待,直到前乙個事務釋放了鎖,其他事務才有機會更新該資料。
事物隔離級別
事物併發會引發的問題
tips:
幻讀和不可重複讀都是讀取了另一條已經提交的事務(這點就髒讀不同),所不同的是不可重複讀查詢的都是同乙個資料項,而幻讀針對的是一批資料整體(比如資料的個數)。
事物隔離級別
事物隔離級別
髒讀不可重複讀
幻讀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...
資料庫事物
事物的概念 使用者在進行資料庫操作時的乙個資料庫操作系列。對於該操作序列中的操作,要麼全部執行,要麼全部不執行。所有的操作是乙個整體,不可分割。與事物相關的概念有事物提交和事物回滾。事物提交是將事物中對資料的更新提交到資料庫中,如果執行正常則事物結束。否則在發生異常時,事物將回滾,將資料庫狀態還原到...