| 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 会更改所选定的行以标记它们,因而会导致磁盘写动作。
行级别的所不影响数据查询。它们只是用于阻塞对同一行 的写。
| 上一页 | 首页 | 下一页 |
| 可串行化隔离级别 | 开头 | 锁和索引 |