From: | Carlos Alves <carlos(dot)alves(at)tecnisys(dot)com(dot)br> |
---|---|
To: | pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: Question about tuple´s lock |
Date: | 2023-10-24 16:33:10 |
Message-ID: | 03df282dff2b539f8c182fb14bcc5361@tecnisys.com.br |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Em 24/10/2023 13:27, Carlos Alves escreveu:
> Hi!
>
> I need some help to understand why a transaction wiht a row delete aquire a AccessExclusiveLock and a row update a ExclusiveLock.
>
> To ilustrate, a made this scenario:
>
> create table tblock
>
> (
>
> id int primary key,
>
> value text
>
> );
>
> insert into tblock values (1, 'somevalue');
>
> First start Transaction 1:
>
> begin;
>
> update tblock set value = 'othervalue' where id = 1;
>
> -- keep this transaction opened
>
> After, start Transaction 2:
>
> begin;
>
> update tblock set value = 'onemorevalue' where id = 1;
>
> -- at this point, this transaction assumes a ExclusiveLock in the tuple;
>
> -- keep this transaction opend
>
> Then, start Transaction 3:
>
> begin;
>
> update tblock set value = 'lastofthevalues' where id = 1;
>
> -- here i can see this transaction trying to aquire a AccessExclusiveLock in this tuple
>
> So, my question is: why a delete row requires a AccessExclusiveLock in the tuple insteead of ExclusiveLock?
>
> Bellow, a image of a query over pg_locks:
>
> PostgreSQL version: 13
>
> OS: Centos 7
>
> Thanks in advance.
I typed the last command wrong. Should be:
Transaction 3:
begin;
delete from tblock where id = 1;
Sorry!
Attachment | Content-Type | Size |
---|---|---|
![]() |
image/gif | 43 bytes |
![]() |
image/gif | 3.1 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | pf | 2023-10-24 18:09:37 | Re: Disk wait problem... 15.4 |
Previous Message | Carlos Alves | 2023-10-24 16:27:35 | Question about tuple´s lock |