Received: from localhost (unknown [200.46.204.183]) by developer.postgresql.org (Postfix) with ESMTP id 6FB162E0153 for ; Sat, 31 May 2008 04:32:14 -0300 (ADT) Received: from developer.postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.183]) (amavisd-maia, port 10024) with ESMTP id 33766-06 for ; Sat, 31 May 2008 04:32:06 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from outmail136187.authsmtp.co.uk (outmail136187.authsmtp.co.uk [62.13.136.187]) by developer.postgresql.org (Postfix) with ESMTP id 6C7822E0152 for ; Sat, 31 May 2008 04:32:10 -0300 (ADT) Received: from mail.authsmtp.com (mail.authsmtp.com [62.13.128.187]) by punt6.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m4V7VpMK056518; Sat, 31 May 2008 08:31:51 +0100 (BST) Received: from [192.168.0.3] (85-211-65-92.dyn.gotadsl.co.uk [85.211.65.92]) (authenticated bits=0) by mail.authsmtp.com (8.14.2/8.14.2/Kp) with ESMTP id m4V7VoUl006550; Sat, 31 May 2008 08:31:50 +0100 (BST) Subject: Re: Overhauling GUCS From: Simon Riggs To: Josh Berkus Cc: pgsql-hackers@postgresql.org In-Reply-To: <48409D1E.3070208@agliodbs.com> References: <48409D1E.3070208@agliodbs.com> Content-Type: text/plain Date: Sat, 31 May 2008 08:34:34 +0100 Message-Id: <1212219274.4120.191.camel@ebony.site> Mime-Version: 1.0 X-Mailer: Evolution 2.12.0 Content-Transfer-Encoding: 7bit X-Server-Quench: a2a3a615-2ee3-11dd-8782-001185d377ca X-AuthRoute: OCdxZQATClZOTQEd DAteCiNZVAwpPBRK HVkIKg5MJUcNSQVJ NksadBtFawRbYFhI HGQLW1xEUFV7WmJ/ bgsfZQBDYEtPQQNv TkFLXVBXFgB3AVJc AngZNEYXKwVGfnt1 ZQhhXHZdEhV4JEUs RE9RCG9TMGR9aWFL BF1QcAtWbQNKfx5N bwR8U3ReMCtlM3Bw LC8aFBMcBw5qYANL TxsNJE8WQEAEVhEB bCtq X-Authentic-SMTP: 61633235383639.squirrel.dmpriest.net.uk:1045/Kp X-Report-SPAM: If SPAM / abuse - report it at: http://www.authsmtp.com/abuse X-Virus-Status: No virus detected - but ensure you scan with your own anti-virus system! X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200805/1083 X-Sequence-Number: 119082 On Fri, 2008-05-30 at 17:34 -0700, Josh Berkus wrote: > There's obviously some refinements needed, but what do people think of > the above general idea? My initial reaction is that this is too much change, though I agree with many of the points and understand it is well intended. We have many supporters, though 90% of them seldom touch the database from one release to the next. Many are dismayed that every time they do we've fiddled with the knobs so some don't work anymore, some are missing or renamed and there's a few new ones. So if they don't know what they're doing it is frequently because we keep moving the goalposts. We should also consider that most people with multiple databases are running multiple versions of PostgreSQL. The main reason for that is that we keep changing the behaviour of SQL between releases, so even if you had a magic superfast upgrade utility, in perhaps 50% of cases they won't use it because they have to do a full application re-test, which costs time and money. Trying to be a Postgres DBA is hard when each new release is configured differently to the last one and we have a major release about 3-5 more frequently than Oracle/SQLServer. That is probably largest source of questions and annoyance from the students on the courses I run. So my viewpoint is that we should be aggressively adding new features, yet be conservative in changing existing behaviour: provide options for behaves-like-previous-release and keep the administrative interfaces as similar as possible between releases. If you wish to make changes, I would suggest that you simply reorder some of the parameters in the .conf file, so that the ones you think are important are grouped at the top. Another suggestion would be to allow a #include style interface within postgresql.conf. We can then do this: #include standard_postgresql.conf # now we put Josh's favourite GUCs as overrides on the above ... That keeps things simple because the standard_postgresql.conf looks almost identical to what people are used to. It also provides a new feature, allowing people to include site-wide defaults for various settings to allow easy implementation of local policy. It also demonstrates a best practice approach to managing GUCs. Some other problems I see with GUCs * It's not possible to set one parameter depending upon the setting of another. * It's always unclear which GUCs can be changed, and when. That is much more infrequently understood than the meaning of them. * We should rename effective_cache_size to something that doesn't sound like it does what shared_buffers does * There is no config verification utility, so if you make a change and then try to restart and it won't, you are in trouble. -- Simon Riggs www.2ndQuadrant.com PostgreSQL Training, Services and Support