Обсуждение: pg_locks - what is a virtualxid locktype

Поиск
Список
Период
Сортировка

pg_locks - what is a virtualxid locktype

От
Mariel Cherkassky
Дата:
Hey,
I noticed that pg_locks has an addition row for every transaction that is created with a locktype "virtualxid". Tried to search it online but I didnt find an explanation for this behavior. Does anyone can explain why it happens ?

Re: pg_locks - what is a virtualxid locktype

От
Shreeyansh Dba
Дата:
The virtualxid lock is special. It’s a exclusive lock on the transaction’s own virtual transaction ID that every transaction always holds. No other transaction can ever acquire it while the transaction is running. 
The purpose of this is to allow one transaction to wait until another transaction commits or rolls back using PostgreSQL’s locking mechanism, and it’s used internally.

Thanks & Regards,
Shreeyansh DBA Team
www.shreeyansh.com


On Tue, Jan 29, 2019 at 2:27 PM Mariel Cherkassky <mariel.cherkassky@gmail.com> wrote:
Hey,
I noticed that pg_locks has an addition row for every transaction that is created with a locktype "virtualxid". Tried to search it online but I didnt find an explanation for this behavior. Does anyone can explain why it happens ?

Re: pg_locks - what is a virtualxid locktype

От
Shreeyansh Dba
Дата:
The virtualxid lock is special. It’s a exclusive lock on the transaction’s own virtual transaction ID that every transaction always holds. No other transaction can ever acquire it while the transaction is running. 
The purpose of this is to allow one transaction to wait until another transaction commits or rolls back using PostgreSQL’s locking mechanism, and it’s used internally.

Thanks & Regards,
Shreeyansh DBA Team
www.shreeyansh.com


On Tue, Jan 29, 2019 at 2:27 PM Mariel Cherkassky <mariel.cherkassky@gmail.com> wrote:
Hey,
I noticed that pg_locks has an addition row for every transaction that is created with a locktype "virtualxid". Tried to search it online but I didnt find an explanation for this behavior. Does anyone can explain why it happens ?

Re: pg_locks - what is a virtualxid locktype

От
Alvaro Herrera
Дата:
On 2019-Jan-29, Shreeyansh Dba wrote:

> The virtualxid lock is special. It’s a exclusive lock on the transaction’s
> own virtual transaction ID that every transaction always holds. No other
> transaction can ever acquire it while the transaction is running.
> The purpose of this is to allow one transaction to wait until another
> transaction commits or rolls back using PostgreSQL’s locking mechanism, and
> it’s used internally.

A little more specific than that: it's used when some process (such as
CREATE INDEX CONCURRENTLY) needs to wait even on sessions that might be
read-only.  Such transactions don't have transaction-ids that write
transactions have, which is why the only way is to wait on the virtual
transaction-id.


-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Re: pg_locks - what is a virtualxid locktype

От
Alvaro Herrera
Дата:
On 2019-Jan-29, Shreeyansh Dba wrote:

> The virtualxid lock is special. It’s a exclusive lock on the transaction’s
> own virtual transaction ID that every transaction always holds. No other
> transaction can ever acquire it while the transaction is running.
> The purpose of this is to allow one transaction to wait until another
> transaction commits or rolls back using PostgreSQL’s locking mechanism, and
> it’s used internally.

A little more specific than that: it's used when some process (such as
CREATE INDEX CONCURRENTLY) needs to wait even on sessions that might be
read-only.  Such transactions don't have transaction-ids that write
transactions have, which is why the only way is to wait on the virtual
transaction-id.


-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services