什麼是隔離等級

決定要把同時執行之交易間的干擾防止到什麼程度的設定。SQL標準規格中有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE共4個等級,等級越高越能防止髒讀、不可重複讀取與幻影讀取,但能同時處理的量也越少。

日文名稱: 分離レベル

「隔離等級」出現在1領域的3道練習題中(資料庫基礎等)。

這個名詞所屬的領域: 資料庫基礎

練習隔離等級的題目

在SQL標準規格所定義的隔離等級中,關於READ COMMITTED下可能發生之現象的組合,下列何者正確?

  1. A髒讀、不可重複讀取、幻影讀取都不會發生
  2. B不會發生髒讀,但可能發生不可重複讀取與幻影讀取
  3. C不會發生髒讀與不可重複讀取,但可能發生幻影讀取
查看答案與解析

正確答案:B. 不會發生髒讀,但可能發生不可重複讀取與幻影讀取

SQL標準規格依可防止之現象由少到多的順序,定義了READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE共4個隔離等級。在READ UNCOMMITTED下,3種現象都可能發生。READ COMMITTED只讀取已提交的資料,因此能防止髒讀,但每次讀取都會看到當下已提交的值,因此可能發生不可重複讀取與幻影讀取。REPEATABLE READ進一步防止不可重複讀取,但仍可能發生幻影讀取。SERIALIZABLE能防止全部3種現象,保證結果與依某種順序逐一執行交易時相同。隔離等級越高,等待鎖與重新執行的情況越多,能同時處理的量也越少,因此要依用途選擇。實際的DBMS中,預設的隔離等級以及各等級實際能防止的現象,有時比標準規格的最低要求更嚴格。

解析中的「隔離等級」

出現「隔離等級」的題目(3題)

  1. 在SQL標準規格所定義的隔離等級中,關於READ COMMITTED下可能發生之現象的組合,下列何者正確?
  2. 在同時執行交易時發生的問題中,下列何者正確說明了髒讀(Dirty read)?
  3. 交易T1執行 SELECT COUNT(*) FROM 訂單 WHERE 金額 >= 1000,結果為8筆。緊接著T2以INSERT新增一筆金額2000的訂單並提交。T1再次執行相同的SELECT敘述,結果變為9筆。這個現象是下列何者?

相關名詞

SQL 交易 主鍵 外鍵 正規化 兩階段鎖定(2PL) 索引 第三正規化(3NF) 檢視表 關聯式資料庫

前往名詞解釋列表