oracle事務
事務含義:組成單個邏輯單元的一系列操作。
事務特征:
第一、原子性,即不可分割性;
第二、一致性,保證數據更新前后與業務的一致性;
第三、隔離性,多個事務不相影響;
第四、持久性,事務提交后數據將永久存儲雜數據庫。
隔離級別:
1.未提交讀(read uncommitted):會出現臟讀、不可重復讀和幻讀。臟讀的設計只是為了提供非阻塞讀,但是對於oracle來說,默認就提供非阻塞讀,
即查詢不會受到任何增刪改操作的影像,因為oracle提供了undo來存放更新前的數據。
2.提交讀(read committed):會出現不可重復讀和幻讀。oracle的默認事務隔離級別。
3.重復讀(repeatable read):會出現幻讀。
4.串行化(serializable):隔離級別最高,不允許出現臟讀、不可重復讀和幻讀。即一個事務執行結束了另一個事務才能執行。當然並發性也就最差。
除了這四種,oracle還提供read only隔離級別,即只支持讀,在該級別中,該事務只能看到事務開始那一刻提交的修改。
臟讀、不可重復讀、幻讀含義
臟讀:一個事務可以讀物另一個事務未提交的數據。
不可重復讀:在一個事務中不同時間段查詢出現不同的結果,可能被更新可能被刪除。
幻讀:在一個事務中不同時間段查詢,記錄數不同。與不可重復讀的區別是:在幻讀中,已經讀取的數據不會改變,只是與以前相比,會有更多的數據滿足查詢條件。
