資料庫在執行併發操作時會出現的問題(事務時資料庫併發控制的最小單位)
兩個事務t1和t2同時讀入乙個資料並做出修改,這個時候我們不知道最後會保留誰的資料,t1為最後結果的話,t2修改丟失,t2為最後結果的話t1丟失。
不可重複讀是指事務t1讀取資料後,事務t2執行等新操作,導致t1再次讀取時與之前不一致,不可重複讀有下面三種情況:
(1)t1讀取資料庫一條資料,t2對這條資料進行了修改,t1再次讀取時和之前讀取不一致
(2)t1讀取了資料庫裡面一組資料,t2對滿足t1條件的資料進行新增,t1再次讀取時發現和之前讀取結果不一致
(3)與(2)相似若t2對資料進行了刪除,也是一樣的結果
2和3這兩種情況也被稱為幻影現象。
當t1對資料做出修改,然後t2讀取了這些資料,之後t1撤銷了修改,那麼現在t2就讀到了與資料庫中不一致的資料,這被稱為讀『髒』資料。
2019-7-9增加:資料庫事務隔離級別介紹
在sql標準中將事務隔離級別分成四級:
1)未提交讀(read uncommitted)只要乙個事務中對資料進行了修改就可以被其他事務可見,也就是允許髒讀、不可重複讀、幻讀。
2)已提交讀(read committed)乙個事務中修改了資料要提交後才可被其他事務可見,也就是允許不可重複讀、幻讀,不允許髒讀。
3)可重複讀(repeated read)乙個事務中每次讀取到的資料都是一致的,也就是允許幻讀,不允許不可重複讀、髒讀。
4)序列化( serializable)所有事務序列執行。
資料庫事務
事件是訪問並可能更新各種資料項的乙個程式執行單元。事件由事務開始與事務結束之間執行的全體操作組成。為了保證資料完整性,資料庫系統需要維護事務的以下性質 原子性 atomicity 事務中的操作要麼全部成功,要麼全部失敗。一致性 consistency 事務執行前後要保持資料庫的一致性。隔離性 iso...
資料庫 事務
資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。乙個邏輯工作單元要成...
資料庫事務
這段時間面試,由於基礎不是特別好,遇到一些要筆試的公司。就會表示出來 今天有人問我,資料庫事務 是什麼。我只感覺十分熟悉。但是又說不出所以然。回來找了一下,現在整理記錄 1 定義 資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務...