事務的4個特性以及事務的隔離級別有哪些?

小編注:常規問題,幾乎必問,理解不了建議背過。

事務的4個特性是指ACID:

事務的4個特性以及事務的隔離級別有哪些?

ACID

原子性(Atomic):一個事務中的所有操作,要不全部完成,要不全部都沒完成,不會結束在某個中間環節。事務執行過程中發生錯誤會回滾。

一致性(Consistency):事務執行前後,數據庫的完整性沒有被破環。原有的約束和觸發器等均保持。

隔離性(Isolation):數據庫允許多個事務併發讀寫。隔離性通過不同的級別,可以保證數據的一致性。分為:讀未提交(read uncommited)、讀提交(read commited)、可重複讀(repetable read)和串行化(serializable)

持久性(Durability):事務處理結束後,即使系統故障也能保證數據的修改是永久的。

小編注:其中除了隔離性,其他三點都很好理解。面試一般問的重點,就是隔離性。

實際生產中,由於事務的併發執行的,所以會存在3類問題:

1. 髒讀

:事務A讀取了事務B更新的數據,然後事務B回滾了,事務A讀到的這個數據就稱為髒數據

2. 不可重複讀:事務A多次讀取事務B的數據,但是事務B更新並提交了多次,導致事務A多次讀取的數據不一致

3. 幻讀:事務A選擇了某個條件的多行記錄,並進行了操作。此時事務B又額外插入了一行符合事務A這個條件的記錄,結果事務A操作完成之後,發現了B的插入數據沒有操作,就好似發生了幻覺一樣。

其中不可重複度和幻讀有些類似。

重點在於:不可重複讀側重於現有數據的修改,而幻讀側重於增刪數據。

最後:mysql和oracle的默認事務隔離級別你知道嗎?

  • Mysql: repeatable read 可重複度
  • Oracle: read commited 讀已提交


分享到:


相關文章: