From: Kevin Grittner <Kevin.Grittner@wicourts.gov>
To: Ibrahim Harrani <ibrahim.harrani@gmail.com>
To: Yeb Havinga <yebhavinga@gmail.com>
Cc: pgsql-admin@postgresql.org
Subject: Re: vacuum deadlock
Date: Fri, 05 Feb 2010 12:47:30 -0600
Message-ID: <4B6C1362020000250002F02E@gw.wicourts.gov> (raw)
In-Reply-To: <530068a1002051014r65c160aej81d267cf30cb600e@mail.gmail.com>
References: <530068a1002050143n26ee05c6hda0de69f5ed97a9d@mail.gmail.com>
<4B6C10BA.8050003@gmail.com>
<530068a1002051014r65c160aej81d267cf30cb600e@mail.gmail.com>
Ibrahim Harrani <ibrahim.harrani@gmail.com> wrote:
> Yeb Havinga <yebhavinga@gmail.com> wrote:
>> Ibrahim Harrani wrote:
>>> I am using PostgreSQL 8.3.7.
>>> autovacuum is enabled in postgresql.conf
>>>
>>> I got a deadlock while vacuuming all databases with vacuumdb
>>> command.
>>>
>>> vacuumdb: vacuuming of database "mydb" failed: ERROR: deadlock
>>> detected
>>> DETAIL: Process 1294 waits for AccessExclusiveLock on relation
>>> 2662 of database ; blocked by process 1807.
>>> Process 1807 waits for AccessShareLock on relation 1259 of
>>> database 16389; blocked by process 1294.
>>>
>>> I think, because of this lock, deleting a large table (15
>>> million records) was taking too much time
>>> How can I know the name of the relations 2662 and 1259?
>>>
>> postgres=# select oid,relname from pg_class where oid in
>> (2662,1259);
>> oid | relname ------+--------------------
>> 2662 | pg_class_oid_index
>> 1259 | pg_class
>> (2 rows)
> As far as I know, pg_class_oid_index and pg_class are postgresql
> internal relations.
>
> Normally, there is not application that directly using those
> relations.
> How should I map this lock issue on this relations to my
> application side?
> On which cases those are locked and used by applications?
Are you creating temporary tables somehow during this process, like
within functions (including trigger functions)?
Can you test the delete with autovacuum disabled?
When you say "deleting a large table" do you mean, dropping the
table, deleting all rows from the table, or deleting some of the
rows from the table?
If you could show the actual delete statement and all information
about the table(s) involved, including indexes, triggers, and
foreign keys, that might help.
-Kevin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-admin@postgresql.org
Cc: Kevin.Grittner@wicourts.gov, ibrahim.harrani@gmail.com, yebhavinga@gmail.com
Subject: Re: vacuum deadlock
In-Reply-To: <4B6C1362020000250002F02E@gw.wicourts.gov>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox