Question about tuple´s lock

From: Carlos Alves <carlos(dot)alves(at)tecnisys(dot)com(dot)br>
To: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Question about tuple´s lock
Date: 2023-10-24 16:27:35
Message-ID: 2fa29bee5e4a7c369f54f02198423814@tecnisys.com.br
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

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.

--

Carlos Alves
Especialista

Sia Trecho 08, lotes 245 / 255 / 265 || +55 (61) 3039-9700
71205-080 || Guará || Brasília, DF 0800-6020097

www.tecnisys.com.br [1]

Links:
------
[1] http://www.tecnisys.com.br

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Carlos Alves 2023-10-24 16:33:10 Re: Question about tuple´s lock
Previous Message Ron 2023-10-24 13:52:35 Re: setting up streaming replication