插入内部事务导致独占锁定

时间:2015-11-04 13:38:11

标签: database postgresql transactions

我在事务中做了一个简单的插入行,这是我遵循的步骤

  • 开始;
  • 插入数据
  • 查询pg_locks

pg_locks现在说有一个独占锁,如下图所示。

根据文档,只有刷新物化视图同时获取Exclusive Lock。

我在这里做错了什么?

使用pgsql - 9.4

Pg Locks表在insert之前有四行,这是由于在两个单独的会话中查询pg_locks表本身。

插入后,它有两个额外的行,一个是实际的事务id本身,它是一个独占锁,另一个是关系RowExclusiveLock

1 个答案:

答案 0 :(得分:2)

这些是对事务ID的锁定。那是完全正常的。

目的是另一个事务可以尝试获取此事务的锁定,使其等到第一个事务提交或回滚(从而释放其自身的锁定),然后继续。

你只需要担心关系锁。