| PostgreSQL | ||
|---|---|---|
| 上一頁 | 第十章. 多版本並行控制 | 下一頁 |
可串行化(Serializable)提供最高級別的事務隔離。當一個事務處於可串行化級別,一個查詢只能看到在事務開始之前提交的數據而永遠看不到臟數據或事務執行中其他並行事務提交的修改。所以,這個級別模擬串行事務執行,就好像事務將被一個接著一個那樣串行的,而不是並行的執行。
如果一個正在執行一個 UPDATE 語句(或者 DELETE 或者 SELECT FOR UPDATE)的查詢返回的行正在被另一個並行的未提交的事務更新,那麼第二個試圖更新此行的事務將等待另一個事務的提交或者回卷。如果發生了回卷,等待中的事務可以繼續修改此行。如果發生一個並行的事務的提交,一個可串行化的事務將回卷,並返回下面資訊。
ERROR: Can't serialize access due to concurrent update
因為一個可串行化的事務在可串行化事務開始之後不能更改被其他事務更改過的行。
注意: SELECT 或 INSERT 語句執行的結果(在一個查詢裡)將不會被並行事務影響。
| 上一頁 | 首頁 | 下一頁 |
| 讀已提交隔離級別 | 開頭 | 鎖和表 |