From: | Russ Brown <pickscrape(at)gmail(dot)com> |
---|---|
To: | Csaba Nagy <nagy(at)ecircle-ag(dot)com> |
Cc: | Postgres general mailing list <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: FK locking still too strong |
Date: | 2006-12-01 14:55:15 |
Message-ID: | 45704253.5080705@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Csaba Nagy wrote:
> Hi all,
>
> While postgres 8.x improved a lot the locking issues related to foreign
> keys, the locking used is still stronger than needed.
>
> The following test case deadlocks on postgres but goes through on
> oracle:
>
> preparation of tables:
>
> create table test1(col_fk integer primary key, col_1 integer);
> create table test2(col_2 integer primary key, col_fk integer references
> test1(col_fk));
> insert into test1 (col_fk, col_1) values (1, 1);
> insert into test1 (col_fk, col_1) values (2, 2);
>
> session_1:
>
> begin;
> update test1 set col_1 = 10 where col_fk = 1;
>
> session_2:
>
> begin;
> insert into test2 (col_2, col_fk) values (1, 2);
>
> session_1:
>
> -- this locks on postgres, does not on oracle
> update test1 set col_1 = 20 where col_fk = 2;
>
> session_2:
>
> -- deadlock on postgres, goes through on oracle
> insert into test2 (col_2, col_fk) values (2, 1);
>
Purely out of interest I just tried this on MySQL 5.0.26 and found
almost the same results. In MySQL session 1 was rolled back, on pg 8.1.5
session 2 was rolled back.
From | Date | Subject | |
---|---|---|---|
Next Message | Richard Huxton | 2006-12-01 15:02:54 | Re: initdb problem on Windows XP Home |
Previous Message | George Weaver | 2006-12-01 14:51:32 | Re: PostgreSQL doesn't accept connections when Windows |