Re: [GENERAL] Full Vacuum/Reindex vs autovacuum

2011-02-28 Thread Jason Long
On Mon, 2010-11-08 at 16:23 -0700, Scott Marlowe wrote:
 On Mon, Nov 8, 2010 at 3:42 PM, Jason Long ja...@octgsoftware.com wrote:
  On Mon, 2010-11-08 at 14:58 -0700, Scott Marlowe wrote:
  On Mon, Nov 8, 2010 at 11:50 AM, Jason Long ja...@octgsoftware.com wrote:
   I currently have Postgres 9.0 install after an upgrade.  My database is
   relatively small, but complex.  The dump is about 90MB.
  
   Every night when there is no activity I do a full vacuum, a reindex,
 
  One question, why?
 
   and then dump a nightly backup.
 
  Good idea.
 
   Is this optimal with regards to performance?  autovacuum is set to the
   default.
 
  that depends very much on your answer to the question of why are you
  doing it and what you're trying to gain / work around with vacuum full
  / reindex every night.
 
 
  I have been doing this for several years.  Since my database is small
  and it takes little time to do a full vacuum.  I am doing the reindex
  because I thought that was recommended after a full vacuum.
 
 Definitely reindex after a full vacuum on previous versions (i.e.
 before 9.0) I think with 9.0 vacuum full is like a cluster without any
 reordering, so it likely doesn't need reindexing, but I've not played
 with 9.0 much yet.
 
  As the data has grown the system is slowing down.  Right now I am
  looking at ways to improve performance without getting into the queries
  themselves because I am swamped with new development.
 
 OK, so it's a standard maintenance procedure you've been doing for a
 while.  That doesn't really explain why you started doing it, but I
 can guess that you had some bloat issues way back when and vacuum full
 fixed them, so doing it got kind of enshrined in the nightly
 maintenance.
 
  Is doing the full vacuum and reindex hurting or helping anything?
 
 It might help a small amount if you've got regular usage patterns.  If
 you routinely update whole tables over and over then it might be
 helping.
 
  Any other quick fixes that I can try?
 
 Increasing work_mem, shared_buffers, changing random_page_cost and /
 or seq_page_cost.
 
 Log long running queries and run explain analyze on any that show up very 
 often.
 
 But for real performance, you do often have to get into the queries
 because an inefficient query may be something you can cut down to
 1/1th the run time with a simple change, and often that change is
 impossible to make by tuning the db, only the query can be tuned.  It
 might be something simple like you need to cast a type to match some
 other type.  Hard to say without looking.
 
 When a 90Meg database is slow, it's almost always poorly written /
 non-optimized queries at the heart of it.
 

I stopped doing the nightly vacuum full and reindex.  After 3 months
some queries would not complete within 2 minutes.  Normally these take
less than 5 seconds.  I tried vacuum without full and reindex, but the
problem was still there.  Only vacuum full and reindex returned
performance to normal.  Now I am back to my previous nightly full vacuum
and reindex.

Any suggestions?
 
-- 
Thank you for your time,

Jason Long
CEO and Chief Software Engineer
BS Physics, MS Chemical Engineering
http://www.octgsoftware.com
HJBug Founder and President
http://www.hjbug.com


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Full Vacuum/Reindex vs autovacuum

2011-02-28 Thread Jason Long
On Mon, 2010-11-08 at 16:23 -0700, Scott Marlowe wrote:
 On Mon, Nov 8, 2010 at 3:42 PM, Jason Long ja...@octgsoftware.com wrote:
  On Mon, 2010-11-08 at 14:58 -0700, Scott Marlowe wrote:
  On Mon, Nov 8, 2010 at 11:50 AM, Jason Long ja...@octgsoftware.com wrote:
   I currently have Postgres 9.0 install after an upgrade.  My database is
   relatively small, but complex.  The dump is about 90MB.
  
   Every night when there is no activity I do a full vacuum, a reindex,
 
  One question, why?
 
   and then dump a nightly backup.
 
  Good idea.
 
   Is this optimal with regards to performance?  autovacuum is set to the
   default.
 
  that depends very much on your answer to the question of why are you
  doing it and what you're trying to gain / work around with vacuum full
  / reindex every night.
 
 
  I have been doing this for several years.  Since my database is small
  and it takes little time to do a full vacuum.  I am doing the reindex
  because I thought that was recommended after a full vacuum.
 
 Definitely reindex after a full vacuum on previous versions (i.e.
 before 9.0) I think with 9.0 vacuum full is like a cluster without any
 reordering, so it likely doesn't need reindexing, but I've not played
 with 9.0 much yet.
 
  As the data has grown the system is slowing down.  Right now I am
  looking at ways to improve performance without getting into the queries
  themselves because I am swamped with new development.
 
 OK, so it's a standard maintenance procedure you've been doing for a
 while.  That doesn't really explain why you started doing it, but I
 can guess that you had some bloat issues way back when and vacuum full
 fixed them, so doing it got kind of enshrined in the nightly
 maintenance.
 
  Is doing the full vacuum and reindex hurting or helping anything?
 
 It might help a small amount if you've got regular usage patterns.  If
 you routinely update whole tables over and over then it might be
 helping.
 
  Any other quick fixes that I can try?
 
 Increasing work_mem, shared_buffers, changing random_page_cost and /
 or seq_page_cost.
 
 Log long running queries and run explain analyze on any that show up very 
 often.
 
 But for real performance, you do often have to get into the queries
 because an inefficient query may be something you can cut down to
 1/1th the run time with a simple change, and often that change is
 impossible to make by tuning the db, only the query can be tuned.  It
 might be something simple like you need to cast a type to match some
 other type.  Hard to say without looking.
 
 When a 90Meg database is slow, it's almost always poorly written /
 non-optimized queries at the heart of it.
 

I stopped doing the nightly vacuum full and reindex.  After 3 months
some queries would not complete within 2 minutes.  Normally these take
less than 5 seconds.  I tried vacuum without full and reindex, but the
problem was still there.  Only vacuum full and reindex returned
performance to normal.  Now I am back to my previous nightly full vacuum
and reindex.

Any suggestions?

-- 
Thank you for your time,

Jason Long
CEO and Chief Software Engineer
BS Physics, MS Chemical Engineering
http://www.octgsoftware.com
HJBug Founder and President
http://www.hjbug.com


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Full Vacuum/Reindex vs autovacuum

2011-02-28 Thread Andrew Sullivan
On Mon, Feb 28, 2011 at 01:48:30PM -0600, Jason Long wrote:

 I stopped doing the nightly vacuum full and reindex.  After 3 months
 some queries would not complete within 2 minutes.  Normally these take
 less than 5 seconds.  I tried vacuum without full and reindex, but the
 problem was still there.  Only vacuum full and reindex returned
 performance to normal.  Now I am back to my previous nightly full vacuum
 and reindex.

Are you logging autovacuum?  Is it actually doing what it needs to?  I
haven't had any experience with autovacuum under 9.x, and I certainly
won't say that there's no problem there, but I have a suspicion that
your settings are such that either the full vacuum or (at least as
likely) the reindex is having an effect that autovacuum ought to be
catching.

The first thing I'd do is log all the vacuums so that you can see how
much vacuum full is recovering.  I suggest this only so as not to
disrupt your regular operations; otherwise, I'd suggest going back to
autovacuum and seeing whether reindex alone would help you.

A


-- 
Andrew Sullivan
a...@crankycanuck.ca

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Full Vacuum/Reindex vs autovacuum

2010-11-09 Thread Vick Khera
On Mon, Nov 8, 2010 at 2:06 PM, Jason Long
mailing.li...@octgsoftware.com wrote:
 Every night when there is no activity I do a full vacuum, a reindex, and
 then dump a nightly backup.

 Is this optimal with regards to performance?  autovacuum is set to the
 default.

In the general case this seems way overkill.  Do you suffer from a lot
of churn daily?  That is, are there bunches of updates?

One thing you lose when running vacuum full is the space in the file
that is pre-allocated but empty.  If you do lots of updates and
inserts, you'll be allocating pages and growing the underlying files
to hold your data.  If you leave the unused space there, it is much
faster for postgres just to fill it.  The key is keeping that unused
space from growing beyond reason... the trick is defining for your own
use case what within reason means.

As for re-index, don't bother.  Unless you have some degenerate case
(something like a queue) where you always insert values at the tail
end of the index and delete from the front end of the index, and let
autovacuum do its work, you should remain in a fairly steady state.

There are queries you can run against the database to detect how
bloated your indexes are after a while, and then reindex if necessary.

I find that some of my data needs a reindex about every 4 to 6 months,
while others never benefit.  I *never* run a vacuum full.

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[GENERAL] Full Vacuum/Reindex vs autovacuum

2010-11-08 Thread Jason Long
I currently have Postgres 9.0 install after an upgrade.  My database is
relatively small, but complex.  The dump is about 90MB.

Every night when there is no activity I do a full vacuum, a reindex, and
then dump a nightly backup.

Is this optimal with regards to performance?  autovacuum is set to the
default.


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Full Vacuum/Reindex vs autovacuum

2010-11-08 Thread Leif Biberg Kristensen
On Monday 8. November 2010 20.06.13 Jason Long wrote:
 I currently have Postgres 9.0 install after an upgrade.  My database is
 relatively small, but complex.  The dump is about 90MB.
 
 Every night when there is no activity I do a full vacuum, a reindex, and
 then dump a nightly backup.
 
 Is this optimal with regards to performance?  autovacuum is set to the
 default.

I've got a database about the same size order (65 MB on disk, 5 MB dump.tgz) 
and I never bother with neither full vacuum nor reindexing. I run the default 
autovacuum, and if the db becomes bloated for some reason, I just do a 
dump/drop/reload cycle. It's done in a few seconds.

regards,
Leif B. Kristensen
http://solumslekt.org/

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


[GENERAL] Full Vacuum/Reindex vs autovacuum

2010-11-08 Thread Jason Long
I currently have Postgres 9.0 install after an upgrade.  My database is
relatively small, but complex.  The dump is about 90MB.

Every night when there is no activity I do a full vacuum, a reindex, and
then dump a nightly backup.

Is this optimal with regards to performance?  autovacuum is set to the
default.

-- 
Thank you for your time,

Jason Long
CEO and Chief Software Engineer
BS Physics, MS Chemical Engineering
http://www.octgsoftware.com
HJBug Founder and President
http://www.hjbug.com


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Full Vacuum/Reindex vs autovacuum

2010-11-08 Thread John R Pierce

On 11/08/10 10:50 AM, Jason Long wrote:

I currently have Postgres 9.0 install after an upgrade.  My database is
relatively small, but complex.  The dump is about 90MB.

Every night when there is no activity I do a full vacuum, a reindex, and
then dump a nightly backup.

Is this optimal with regards to performance?  autovacuum is set to the
default.



if you have frequently updated tables that are accessed mostly from 
their primary key, it may pay to CLUSTER those tables on said index 
rather than doing the full vacuum.


VACUUM FULL is usually not recommended, btw.

Also, if you have tables that get lots of updates that only affect data 
and not indexed columns, setting a FILL FACTOR of, say, 70 or 80 (its in 
%) might help with performance by better facilitating HOT updates (HOT 
is a internal feature added to pg 8.3 to speed up these sorts of updates)




--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Full Vacuum/Reindex vs autovacuum

2010-11-08 Thread Scott Marlowe
On Mon, Nov 8, 2010 at 11:50 AM, Jason Long ja...@octgsoftware.com wrote:
 I currently have Postgres 9.0 install after an upgrade.  My database is
 relatively small, but complex.  The dump is about 90MB.

 Every night when there is no activity I do a full vacuum, a reindex,

One question, why?

 and then dump a nightly backup.

Good idea.

 Is this optimal with regards to performance?  autovacuum is set to the
 default.

that depends very much on your answer to the question of why are you
doing it and what you're trying to gain / work around with vacuum full
/ reindex every night.

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Full Vacuum/Reindex vs autovacuum

2010-11-08 Thread Jason Long
On Mon, 2010-11-08 at 13:28 -0800, John R Pierce wrote:
 On 11/08/10 10:50 AM, Jason Long wrote:
  I currently have Postgres 9.0 install after an upgrade.  My database is
  relatively small, but complex.  The dump is about 90MB.
 
  Every night when there is no activity I do a full vacuum, a reindex, and
  then dump a nightly backup.
 
  Is this optimal with regards to performance?  autovacuum is set to the
  default.
 
 
 if you have frequently updated tables that are accessed mostly from 
 their primary key, it may pay to CLUSTER those tables on said index 
 rather than doing the full vacuum.
 
 VACUUM FULL is usually not recommended, btw.
 
 Also, if you have tables that get lots of updates that only affect data 
 and not indexed columns, setting a FILL FACTOR of, say, 70 or 80 (its in 
 %) might help with performance by better facilitating HOT updates (HOT 
 is a internal feature added to pg 8.3 to speed up these sorts of updates)
 
 
 

Just so I understand, why is full vacuum not recommended?



-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Full Vacuum/Reindex vs autovacuum

2010-11-08 Thread Jason Long
On Mon, 2010-11-08 at 13:28 -0800, John R Pierce wrote:
 On 11/08/10 10:50 AM, Jason Long wrote:
  I currently have Postgres 9.0 install after an upgrade.  My database is
  relatively small, but complex.  The dump is about 90MB.
 
  Every night when there is no activity I do a full vacuum, a reindex, and
  then dump a nightly backup.
 
  Is this optimal with regards to performance?  autovacuum is set to the
  default.
 
 
 if you have frequently updated tables that are accessed mostly from 
 their primary key, it may pay to CLUSTER those tables on said index 
 rather than doing the full vacuum.
 
 VACUUM FULL is usually not recommended, btw.
 
 Also, if you have tables that get lots of updates that only affect data 
 and not indexed columns, setting a FILL FACTOR of, say, 70 or 80 (its in 
 %) might help with performance by better facilitating HOT updates (HOT 
 is a internal feature added to pg 8.3 to speed up these sorts of updates)
 
 
 

Thanks for the tip on CLUSTER.

My application has a couple hundred tables that all have an int8 for
their primary key.  They are joined heavily on their primary key from
views and dynamically generated SQL.  I am going to looking into
clustering the most frequently updated tables.  Thanks for the tip.

Currently my performance problems are reads to display data.


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Full Vacuum/Reindex vs autovacuum

2010-11-08 Thread Jason Long
On Mon, 2010-11-08 at 14:58 -0700, Scott Marlowe wrote:
 On Mon, Nov 8, 2010 at 11:50 AM, Jason Long ja...@octgsoftware.com wrote:
  I currently have Postgres 9.0 install after an upgrade.  My database is
  relatively small, but complex.  The dump is about 90MB.
 
  Every night when there is no activity I do a full vacuum, a reindex,
 
 One question, why?
 
  and then dump a nightly backup.
 
 Good idea.
 
  Is this optimal with regards to performance?  autovacuum is set to the
  default.
 
 that depends very much on your answer to the question of why are you
 doing it and what you're trying to gain / work around with vacuum full
 / reindex every night.
 

Sorry I am not bumping this.  I meant to send this to the list as well.

I have been doing this for several years.  Since my database is small
and it takes little time to do a full vacuum.  I am doing the reindex
because I thought that was recommended after a full vacuum.

As the data has grown the system is slowing down.  Right now I am
looking at ways to improve performance without getting into the queries
themselves because I am swamped with new development.

Is doing the full vacuum and reindex hurting or helping anything?

Any other quick fixes that I can try?

-- 
Thank you for your time,

Jason Long
CEO and Chief Software Engineer
BS Physics, MS Chemical Engineering
http://www.octgsoftware.com
HJBug Founder and President
http://www.hjbug.com


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Full Vacuum/Reindex vs autovacuum

2010-11-08 Thread Scott Marlowe
On Mon, Nov 8, 2010 at 3:42 PM, Jason Long ja...@octgsoftware.com wrote:
 On Mon, 2010-11-08 at 14:58 -0700, Scott Marlowe wrote:
 On Mon, Nov 8, 2010 at 11:50 AM, Jason Long ja...@octgsoftware.com wrote:
  I currently have Postgres 9.0 install after an upgrade.  My database is
  relatively small, but complex.  The dump is about 90MB.
 
  Every night when there is no activity I do a full vacuum, a reindex,

 One question, why?

  and then dump a nightly backup.

 Good idea.

  Is this optimal with regards to performance?  autovacuum is set to the
  default.

 that depends very much on your answer to the question of why are you
 doing it and what you're trying to gain / work around with vacuum full
 / reindex every night.


 I have been doing this for several years.  Since my database is small
 and it takes little time to do a full vacuum.  I am doing the reindex
 because I thought that was recommended after a full vacuum.

Definitely reindex after a full vacuum on previous versions (i.e.
before 9.0) I think with 9.0 vacuum full is like a cluster without any
reordering, so it likely doesn't need reindexing, but I've not played
with 9.0 much yet.

 As the data has grown the system is slowing down.  Right now I am
 looking at ways to improve performance without getting into the queries
 themselves because I am swamped with new development.

OK, so it's a standard maintenance procedure you've been doing for a
while.  That doesn't really explain why you started doing it, but I
can guess that you had some bloat issues way back when and vacuum full
fixed them, so doing it got kind of enshrined in the nightly
maintenance.

 Is doing the full vacuum and reindex hurting or helping anything?

It might help a small amount if you've got regular usage patterns.  If
you routinely update whole tables over and over then it might be
helping.

 Any other quick fixes that I can try?

Increasing work_mem, shared_buffers, changing random_page_cost and /
or seq_page_cost.

Log long running queries and run explain analyze on any that show up very often.

But for real performance, you do often have to get into the queries
because an inefficient query may be something you can cut down to
1/1th the run time with a simple change, and often that change is
impossible to make by tuning the db, only the query can be tuned.  It
might be something simple like you need to cast a type to match some
other type.  Hard to say without looking.

When a 90Meg database is slow, it's almost always poorly written /
non-optimized queries at the heart of it.

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Full Vacuum/Reindex vs autovacuum

2010-11-08 Thread Jason Long
On Mon, 2010-11-08 at 16:23 -0700, Scott Marlowe wrote:
 On Mon, Nov 8, 2010 at 3:42 PM, Jason Long ja...@octgsoftware.com wrote:
  On Mon, 2010-11-08 at 14:58 -0700, Scott Marlowe wrote:
  On Mon, Nov 8, 2010 at 11:50 AM, Jason Long ja...@octgsoftware.com wrote:
   I currently have Postgres 9.0 install after an upgrade.  My database is
   relatively small, but complex.  The dump is about 90MB.
  
   Every night when there is no activity I do a full vacuum, a reindex,
 
  One question, why?
 
   and then dump a nightly backup.
 
  Good idea.
 
   Is this optimal with regards to performance?  autovacuum is set to the
   default.
 
  that depends very much on your answer to the question of why are you
  doing it and what you're trying to gain / work around with vacuum full
  / reindex every night.
 
 
  I have been doing this for several years.  Since my database is small
  and it takes little time to do a full vacuum.  I am doing the reindex
  because I thought that was recommended after a full vacuum.
 
 Definitely reindex after a full vacuum on previous versions (i.e.
 before 9.0) I think with 9.0 vacuum full is like a cluster without any
 reordering, so it likely doesn't need reindexing, but I've not played
 with 9.0 much yet.
 
  As the data has grown the system is slowing down.  Right now I am
  looking at ways to improve performance without getting into the queries
  themselves because I am swamped with new development.
 
 OK, so it's a standard maintenance procedure you've been doing for a
 while.  That doesn't really explain why you started doing it, but I
 can guess that you had some bloat issues way back when and vacuum full
 fixed them, so doing it got kind of enshrined in the nightly
 maintenance.
Exactly.
 
  Is doing the full vacuum and reindex hurting or helping anything?
 
 It might help a small amount if you've got regular usage patterns.  If
 you routinely update whole tables over and over then it might be
 helping.
I rarely update whole tables.
 
  Any other quick fixes that I can try?
 
 Increasing work_mem, shared_buffers, changing random_page_cost and /
 or seq_page_cost.
I did up those at one point, but saw little improvement.  I will
reinvestigate.
 
 Log long running queries and run explain analyze on any that show up very 
 often.
 
 But for real performance, you do often have to get into the queries
 because an inefficient query may be something you can cut down to
 1/1th the run time with a simple change, and often that change is
 impossible to make by tuning the db, only the query can be tuned.  It
 might be something simple like you need to cast a type to match some
 other type.  Hard to say without looking.
 
 When a 90Meg database is slow, it's almost always poorly written /
 non-optimized queries at the heart of it.

I have no doubt that poorly written and non-optimized queries are at the
heart of it.  Stupid developer I'll have to fire that lazy bastard... Oh
wait that's me. ;)

I am going to start using auto_explain and logging long running queries.
Also time to learn how to read query plans.  So far I have gotten by by
throwing faster hardware at the problem.



-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] Full Vacuum/Reindex vs autovacuum

2010-11-08 Thread Scott Marlowe
On Mon, Nov 8, 2010 at 4:41 PM, Jason Long
mailing.li...@octgsoftware.com wrote:
 On Mon, 2010-11-08 at 16:23 -0700, Scott Marlowe wrote:
 On Mon, Nov 8, 2010 at 3:42 PM, Jason Long ja...@octgsoftware.com wrote:
  On Mon, 2010-11-08 at 14:58 -0700, Scott Marlowe wrote:
  On Mon, Nov 8, 2010 at 11:50 AM, Jason Long ja...@octgsoftware.com 
  wrote:
   I currently have Postgres 9.0 install after an upgrade.  My database is
   relatively small, but complex.  The dump is about 90MB.
  
   Every night when there is no activity I do a full vacuum, a reindex,
 
  One question, why?
 
   and then dump a nightly backup.
 
  Good idea.
 
   Is this optimal with regards to performance?  autovacuum is set to the
   default.
 
  that depends very much on your answer to the question of why are you
  doing it and what you're trying to gain / work around with vacuum full
  / reindex every night.
 
 
  I have been doing this for several years.  Since my database is small
  and it takes little time to do a full vacuum.  I am doing the reindex
  because I thought that was recommended after a full vacuum.

 Definitely reindex after a full vacuum on previous versions (i.e.
 before 9.0) I think with 9.0 vacuum full is like a cluster without any
 reordering, so it likely doesn't need reindexing, but I've not played
 with 9.0 much yet.

  As the data has grown the system is slowing down.  Right now I am
  looking at ways to improve performance without getting into the queries
  themselves because I am swamped with new development.

 OK, so it's a standard maintenance procedure you've been doing for a
 while.  That doesn't really explain why you started doing it, but I
 can guess that you had some bloat issues way back when and vacuum full
 fixed them, so doing it got kind of enshrined in the nightly
 maintenance.
 Exactly.

  Is doing the full vacuum and reindex hurting or helping anything?

 It might help a small amount if you've got regular usage patterns.  If
 you routinely update whole tables over and over then it might be
 helping.
 I rarely update whole tables.

  Any other quick fixes that I can try?

 Increasing work_mem, shared_buffers, changing random_page_cost and /
 or seq_page_cost.
 I did up those at one point, but saw little improvement.  I will
 reinvestigate.

 Log long running queries and run explain analyze on any that show up very 
 often.

 But for real performance, you do often have to get into the queries
 because an inefficient query may be something you can cut down to
 1/1th the run time with a simple change, and often that change is
 impossible to make by tuning the db, only the query can be tuned.  It
 might be something simple like you need to cast a type to match some
 other type.  Hard to say without looking.

 When a 90Meg database is slow, it's almost always poorly written /
 non-optimized queries at the heart of it.

 I have no doubt that poorly written and non-optimized queries are at the
 heart of it.  Stupid developer I'll have to fire that lazy bastard... Oh
 wait that's me. ;)

Yeah, I've got one of those bastards where I work too.  :)

 I am going to start using auto_explain and logging long running queries.
 Also time to learn how to read query plans.  So far I have gotten by by
 throwing faster hardware at the problem.

Faster hardware, sadly only gets you so far.

For help with explain, start here:
http://explain.depesz.com/

-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general