Received: from maia.hub.org (unknown [200.46.208.211]) by mail.postgresql.org (Postfix) with ESMTP id 8DB42632F34 for ; Tue, 20 Apr 2010 15:04:04 -0300 (ADT) Received: from mail.postgresql.org ([200.46.204.86]) by maia.hub.org (mx1.hub.org [200.46.208.211]) (amavisd-maia, port 10024) with ESMTP id 65543-05 for ; Tue, 20 Apr 2010 18:03:41 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from vexbert.mr-paradox.net (vexbert.mr-paradox.net [198.145.180.174]) by mail.postgresql.org (Postfix) with ESMTP id 5DB4D6323E2 for ; Tue, 20 Apr 2010 15:03:52 -0300 (ADT) Received: by vexbert.mr-paradox.net (Postfix, from userid 18391) id 40E5D845CD; Tue, 20 Apr 2010 14:03:51 -0400 (EDT) Date: Tue, 20 Apr 2010 11:03:51 -0700 From: David Kerr To: Robert Haas Cc: pgsql-performance@postgresql.org Subject: Re: Very high effective_cache_size == worse performance? Message-ID: <20100420180351.GA51940@mr-paradox.net> References: <20100420173936.GA50886@mr-paradox.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=-2.101 tagged_above=-10 required=5 tests=AWL=-0.191, BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01 X-Spam-Level: X-Archive-Number: 201004/244 X-Sequence-Number: 38494 On Tue, Apr 20, 2010 at 01:44:18PM -0400, Robert Haas wrote: - On Tue, Apr 20, 2010 at 1:39 PM, David Kerr wrote: - > My initial thought was hardware issues so we got sar, vmstat, etc all running on the box and they didn't give - > any indication that we had resource issues. - > - > So I decided to just make the 2 PG config files look the same. (the only change was dropping effective_cache_size - > from 128GB to 2GB). - > - > Now the large box performs the same as the smaller box. (which is fine). - > - > incidentally, both tests were starting from a blank database. - > - > Is this expected? - - Lowering effective_cache_size tends to discourage the planner from - using a nested-loop-with-inner-indexscan plan - that's it. - - What may be happening is that you may be loading data into some tables - and then running a query against those tables before the autovacuum - daemon has a chance to analyze them. I suspect that if you enable - some logging you'll find that one of those queries is really, really - slow, and that (by happy coincidence) discouraging it from using the - index it thinks it should use happens to produce a better plan. What - you should probably do is, for each table that you bulk load and then - query, insert a manual ANALYZE between the two. - - ...Robert - that thought occured to me while I was testing this. I ran a vacuumdb -z on my database during the load and it didn't impact performance at all. Incidentally the code is written to work like this : while (read X lines in file){ Process those lines. write lines to DB. } So i would generally expect to get the benefits of the updated staticis once the loop ended. no? (would prepared statements affect that possibly?) Also, while I was debugging the problem, I did load a 2nd file into the DB ontop of one that had been loaded. So the statistics almost certinaly should have been decent at that point. I did turn on log_min_duration_statement but that caused performance to be unbearable, but i could turn it on again if it would help. Dave