我正在尝试理解Postgres中的锁,目前我已经了解到以下内容:
- pg_locks包含锁信息
- 在Postgres中,所有语句都在事务内运行(显式/隐式)。(Postgres 9.0高性能)
据我所知,虚拟事务ID(virtualxids)并非真正的事务,事务ID(transactionidxid)才是表示事务的标志。
当我简单地连接到psql shell,并查询pg_locks表时,就已经存在一个虚拟事务ID了。
我没有启动事务或运行查询,那么为什么会创建这个虚拟事务ID呢?是因为这个连接可能会在将来启动一个事务吗?
我在这里缺少了什么?