在 Oracle 資料庫的學習與實務操作中,事務隔離級別是繞不開的核心概念。它定義了事務之間的隔離程度,直接影響資料庫的並發性能與資料一致性。簡單來說,隔離級別越高,資料一致性保障越強,但並發處理能力越弱;隔離級別越低,並發性能越好,但可能面臨髒讀、不可重複讀等問題。
國際標準定義了四種隔離級別,由低到高依次為:
兩個事務同時更新同一筆資料,後提交的事務覆蓋先提交的修改,導致先前更新丟失。
事務讀取另一事務尚未提交的修改,若該事務回滾,讀到的資料即為「髒資料」。
同一事務多次查詢同一資料,因其他已提交事務修改或刪除,導致結果集前後不一致。
同一事務多次執行相同查詢,因其他已提交事務插入新資料,導致結果集行數發生變化。
Oracle 僅支援 Read Committed(提交讀) 與 Serializable(序列化) 兩種標準隔離級別,預設為 Read Committed。若業務對一致性要求極高,可在事務開始時指定 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE,但需評估對並發效能的影響。實務上,善用行級鎖(SELECT ... FOR UPDATE)與樂觀鎖機制,往往比單純提高隔離級別更靈活高效。