一、事務和隔離級別
事務的概念:事務是把對數據庫的一系列操作都看做一個整體,要么全部成功,要么全部失敗,利用事務我們可以保證數據庫的完整性,事務具有原子性。
隔離級別:隔離級別定義了事務與事務之間的隔離距離。
臟讀(dirty read):當一個事務讀取另一個事務未提交的修改時,產生臟讀。
不可重復讀(nonrepeated read):同一查詢在同一事務中多次進行,由於其他事務提交所做的修改,導致每次返回的結果不同,此時發生不可重復讀。
幻讀(phantom read):同一查詢在同一事務中多次進行,由於其他事務提交所做的新增或刪除操作,導致每次得到的不同的結果集,此時發生幻讀。
不可重復讀側重於修改,幻讀側重於新增或者刪除。解決不可重復讀只需要鎖住滿足條件的行,解決幻讀需要鎖表。
二、Oracle的事務隔離級別有兩種
- READ COMMITTED :讀已提交
- SERIALIZABLE:串行讀取
Oracle默認隔離級別為:讀已提交(READ COMMITTED)
三、MySQL的事務隔離級別有四種
- 讀未提交 (Read uncommitted)
- 讀已提交 (Read committed)
- 可重復讀 (Repeated read)
- 可串行化 (Serializable)
MySQL默認隔離級別為:可重復讀 (Repeated read)