| PostgreSQL | ||
|---|---|---|
| 上一頁 | 第十章. 多版本並行控制 | 下一頁 |
Postgres 提供多種鎖模式來控制對表中數據的並行訪問。有些鎖模式是在語句執行之前由 Postgres 自動施加的,而其他的提供用來由應用使用的。一個事務裡要求的所有鎖模式(除了 AccessShareLock)都是在整個事務期間保有的。
除了鎖以外,短期的共享/排他銷也在共享的緩衝區刈谻於控制對表頁面的讀/寫訪問。銷在一條記錄抓取或者更新後馬上被釋放。
只與 AccessExclusiveLock 衝突。
與 ExclusiveLock 和 AccessExclusiveLock 模式衝突。
與 ShareLock, ShareRowExclusiveLock, ExclusiveLock 和 AccessExclusiveLock 模式衝突。
與 RowExclusiveLock, ShareRowExclusiveLock, ExclusiveLock 和 AccessExclusiveLock 模式衝突。
與 RowExclusiveLock, ShareLock, ShareRowExclusiveLock, ExclusiveLock 和 AccessExclusiveLock 模式衝突。
與 RowShareLock, RowExclusiveLock, ShareLock, ShareRowExclusiveLock, ExclusiveLock 和 AccessExclusiveLock 模式衝突。
與 RowShareLock, RowExclusiveLock, ShareLock, ShareRowExclusiveLock, ExclusiveLock 和 AccessExclusiveLock 模式衝突。
注意: 只有 AccessExclusiveLock 阻塞 SELECT (沒有 FOR UPDATE)語句。
當某行的一個內部字段被更新(或刪除或標記為更新)時要求使用這些鎖。Postgres 在內存裡不做關於已更新的行的任何記憶,因而對鎖定的行數沒有任何限制,也沒有鎖定遞增。
但是,要注意 SELECT FOR UPDATE 會更改所選定的行以標記它們,因而會導致硬碟寫動作。
行級別的所不影響數據查詢。它們只是用於阻塞對同一行 的寫。
| 上一頁 | 首頁 | 下一頁 |
| 可串行化隔離級別 | 開頭 | 鎖和索引 |