In article <20051219023616.GA89670@winnie.fuhr.org>,
mike@fuhr.org (Michael Fuhr) wrote:
> On Sat, Dec 17, 2005 at 09:10:40PM -0800, James Klo wrote:
> > I'd like some suggestions on how to get the deletes to happen faster, as
> > while deleting individually appears to extremely fast, when I go to
> > delete lots of rows the operation takes an extremely long time to
> > complete (5000 rows takes about 3 minutes, 1000000 rows takes almost
> > close to 4 hours or more depending upon server load; wall time btw).
>
> Those times do seem excessive -- do any other tables have foreign
> key references to the table you're deleting from? If so, do those
> tables have indexes on the referring columns? Does this table or
> any referring table have triggers? Also, are you regularly vacuuming
> and analyzing your tables? Have you examined pg_locks to see if
> an unacquired lock might be slowing things down?
As the table was originally created using Hibernate, yes, there are
several key references, however I've already added indexes those tables
on referring keys. There are no triggers, we were running
pg_autovaccum, but found that it wasn't completing. I believe we
disabled, and are now running a cron every 4 hours. My archiving method,
is also running analyze - as I figure after a mass deletes, it would
probably keep query speeds from degrading.)
I've looked at pg_locks, but not sure I understand quite how to use it
to determine if there are unacquired locks. I do know that we
occasionally get some warnings from C3P0 that states it detects a
deadlock, and allocates emergency threads.
BTW, If I didn't mention, we are using PG 8.1 on Red Hat Enterprise, 4GB
RAM, 4 dual-core CPUs, think its RAID5 (looks like what I would consider
typical Linux partitioning /, /tmp, /usr, /var, /boot, /home). After
trolling the archives, and doing a bit of sleuthing on the DB, I'm lead
to believe that this is more or less a default install of PG 8.1. As I'm
relatively new to PG, I'm not sure how it should be configured for our
setup. I would suspect that this could probably effect the speed of
deletes (and queries as well).
Thanks for any help you can provide.