事務的acid是指什麼?
答:- 原子性(atomic):事務中各項操作,要麼全做要麼全不做,任何一項操作的失敗都會導致整個事務的失敗;
- 一致性(consistent):事務結束後系統狀態是一致的;
- 隔離性(isolated):併發執行的事務彼此無法看到對方的中間狀態;
- 永續性(durable):事務完成後所做的改動都會被持久化,即使發生災難性的失敗。通過日誌和同步備份可以在故障發生後重建資料。
補充:關於事務,在面試中被問到的概率是很高的,可以問的問題也是很多的。首先需要知道的是,只有存在併發資料訪問時才需要事務。當多個事務訪問同一資料時,可能會存在5類問題,包括3類資料讀取問題(髒讀、不可重複讀和幻讀)和2類資料更新問題(第1類丟失更新和第2類丟失更新)。髒讀(dirty read):a事務讀取b事務尚未提交的資料並在此基礎上操作,而b事務執行回滾,那麼a讀取到的資料就是髒資料。
時間轉賬事務a
取款事務b
t1開始事務
t2開始事務
t3查詢賬戶餘額為1000元
t4取出500元餘額修改為500元
t5查詢賬戶餘額為500元(髒讀)
t6撤銷事務餘額恢復為1000元
t7匯入100元把餘額修改為600元
t8提交事務
不可重複讀(unrepeatable read):事務a重新讀取前面讀取過的資料,發現該資料已經被另乙個已提交的事務b修改過了。
時間轉賬事務a
取款事務b
t1開始事務
t2開始事務
t3查詢賬戶餘額為1000元
t4查詢賬戶餘額為1000元
t5取出100元修改餘額為900元
t6提交事務
t7查詢賬戶餘額為900元(不可重複讀)
幻讀(phantom read):事務a重新執行乙個查詢,返回一系列符合查詢條件的行,發現其中插入了被事務b提交的行。
時間統計金額事務a
轉賬事務b
t1開始事務
t2開始事務
t3統計總存款為10000元
t4新增乙個存款賬戶存入100元
t5提交事務
t6再次統計總存款為10100元(幻讀)
第1類丟失更新:事務a撤銷時,把已經提交的事務b的更新資料覆蓋了。
時間取款事務a
轉賬事務b
t1開始事務
t2開始事務
t3查詢賬戶餘額為1000元
t4查詢賬戶餘額為1000元
t5匯入100元修改餘額為1100元
t6提交事務
t7取出100元將餘額修改為900元
t8撤銷事務
t9餘額恢復為1000元(丟失更新)
第2類丟失更新:事務a覆蓋事務b已經提交的資料,造成事務b所做的操作丟失。
時間轉賬事務a
取款事務b
t1開始事務
t2開始事務
t3查詢賬戶餘額為1000元
t4查詢賬戶餘額為1000元
t5取出100元將餘額修改為900元
t6提交事務
t7匯入100元將餘額修改為1100元
t8提交事務
t9查詢賬戶餘額為1100元(丟失更新)
資料併發訪問所產生的問題,在有些場景下可能是允許的,但是有些場景下可能就是致命的,資料庫通常會通過鎖機制來解決資料併發訪問問題,按鎖定物件不同可以分為表級鎖和行級鎖;按併發事務鎖定關係可以分為共享鎖和獨佔鎖,具體的內容大家可以自行查閱資料進行了解。
直接使用鎖是非常麻煩的,為此資料庫為使用者提供了自動鎖機制,只要使用者指定會話的事務隔離級別,資料庫就會通過分析sql語句然後為事務訪問的資源加上合適的鎖,此外,資料庫還會維護這些鎖通過各種手段提高系統的效能,這些對使用者來說都是透明的(就是說你不用理解,事實上我確實也不知道)。ansi/iso
sql 92標準定義了4個等級的事務隔離級別,如下表所示:
隔離級別
髒讀不可重複讀
幻讀第一類丟失更新
第二類丟失更新
read uncommited
允許允許
允許不允許
允許read committed
不允許允許
允許不允許
允許repeatable read
不允許不允許
允許不允許
不允許serializable
不允許不允許
不允許不允許
不允許需要說明的是,事務隔離級別和資料訪問的併發性是對立的,事務隔離級別越高併發性就越差。所以要根據具體的應用來確定合適的事務隔離級別,這個地方沒有萬能的原則。
事務的ACID是指什麼
1 原子性 atomic 事務中各項操作,要麼全做要麼全不做,任何一項操作的失敗都會導致整個事務的失敗 2 一致性 consistent 事務結束後系統狀態是一致的 3 隔離性 isolated 併發執行的事務彼此無法看到對方的中間狀態 4 永續性 durable 事務完成後所做的改動都會被持久化,...
事務的ACID是指什麼
1 原子性 atomic 事務中各項操作,要麼全做要麼全不做,任何一項操作的失敗都會導致整個事務的失敗 2 一致性 consistent 事務結束後系統狀態是一致的 3 隔離性 isolated 併發執行的事務彼此無法看到對方的中間狀態 4 永續性 durable 事務完成後所做的改動都會被持久化,...
什麼是事務的ACID
1 原子性 atomic 事務中各項操作,要麼全做要麼全不做,任何一項操作的失敗都會導致整個事務的失敗 2 一致性 consistent 事務結束後系統狀態是一致的 3 隔離性 isolated 併發執行的事務彼此無法看到對方的中間狀態 4 永續性 durable 事務完成後所做的改動都會被持久化,...