Thread: deadlock using sequences?

deadlock using sequences?

From
Lars
Date:
(Accidently posted to pgadmin-support.)

Hi,

I get occasional deadlocks when using sequences from
multiple clients.

Here's the table DDL:

create sequence ids;
create table foo( id integer default nextval('ids'),
parent integer, type char(4), name text, value text )
without oids;
create index xml_id on xml(id);

I'm inserting 1000s of tuples from 4-5 different
clients (all use JDBC but are single threaded).
About once every 1000 tuples I get

ERROR:  deadlock detected

I can't use OIDS because I have to guarantee
monotonically increasing ids.

Any ideas? Shouldn't sequences be implemented deadlock
free?

Thanks.

-- Lars


Re: deadlock using sequences?

From
Martijn van Oosterhout
Date:
On Sat, Oct 05, 2002 at 02:31:43AM -0700, Lars wrote:
> (Accidently posted to pgadmin-support.)
>
> Hi,
>
> I get occasional deadlocks when using sequences from
> multiple clients.
>
> Here's the table DDL:
>
> create sequence ids;
> create table foo( id integer default nextval('ids'),
> parent integer, type char(4), name text, value text )
> without oids;
> create index xml_id on xml(id);
>
> I'm inserting 1000s of tuples from 4-5 different
> clients (all use JDBC but are single threaded).
> About once every 1000 tuples I get
>
> ERROR:  deadlock detected
>
> I can't use OIDS because I have to guarantee
> monotonically increasing ids.

Whatever it is, it's not the sequences causing this. Do you have any foreign
keys?

--
Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> There are 10 kinds of people in the world, those that can do binary
> arithmetic and those that can't.