[HACKERS] Proposal for Re-ordering CONF (was: Re: GUC and postgresql.conf docs)

2003-06-03 Thread Josh Berkus
Bruce,

 I have developed the following patch to address these issues.  I have
 removed the lock GUC settings from postgresql.conf, as suggested.  (They
 aren't even enabled in the general builds.)

Great!   Just to keep you from getting complacent, what follows is a proposal 
for re-ordering the settings in the postgresql.conf.sample file. (sorry for 
replying to your thread on a different list; I'm not subscribed to PATCHES).  

THE PROPOSAL:  We should re-order the settings in postgresql.conf.sample in 
order to make more logical groupings per the attached outline.  The online 
documenation should be then re-sorted to match this order.

THE REASONS WHY:  Our current ordering of settings in the CONF file is largely 
based on history (i.e. based on when settings were added rather than any more 
logical order).   This makes understanding the CONF file baffling to 
newcomers, and even experienced DBAs can miss important settings because they 
are not grouped with their logical associates.
For that matter, the current ordering can be baffling to developers.  When I 
started this thread, Tom wasn't sure that CONF and GUC.c corresponded 100%.  
And no wonder!   postgresql.conf.sample is in one order, the Run-time 
configuration doc page in a second order, and GUC.c in yet a third order!   
It took me most of an afternoon just to match up the various options.  The 
CONF file and the docs should be in the same order, leaving us only two 
orderings to keep track of.

THE ARGUMENT AGAINST:  This would be an annoyance for anyone who diffs their 
conf files as part of upgrading.  I cannot think of any other objection, 
except for the work involved, which I am quite willing to help with.

THE OUTLINE ATTACHED:  is my proposed ordering.  I've put it in outline form, 
so that the groupings I'm using are obvious; I feel that the final 
postgresql.conf.sample should keep the group and subgroup headers as comments 
for additional clarity. I welcome improvements and suggestions -- the only 
thing I'm attached to is the idea of logical re-ordering, not this particular 
order.
PLEASE NOTE THAT THIS OUTLINE IS BASED ON 7.3.2 postgresql.conf.  My laptop 
is in the shop and I don't have a copy of 7.4 cvs on my back-up computer.   
If my proposal is accepted in general, I will flesh it out for 7.4 before 
June 15.

COMMITTMENT TO FOLLOW-UP:  I will also be posting an article entitled The 
Annotated PostgreSQL.conf either on Techdocs or at Elein's web site based on 
this ordering to help people decipher their .conf files.   This will include 
the official docs, comments from the -PERFORMANCE mailing list, the command 
line options, and whether or not each variable can be SET by the user.

-- 
Josh Berkus
Aglio Database Solutions
San Francisco
#CONNECTIONS AND AUTHENTICATION
#Connection Settings
tcpip_socket
max_connections
superuser_reserved_connections
port
unix_socket_directory
unix_socket_group
unix_socket_permissions
#Security  Authentication
ssl
authentication_timeout
virtual_host
krb_server_keyfile
db_user_namespace


#MEMORY USAGE
#Memory
shared_buffers
sort_mem
vacuum_mem
#Free Space Map
max_fsm_relations
max_fsm_pages


#WAL Options
fsync
wal_sync_method
wal_buffers
checkpoint_segments
checkpoint_timeout
commit_delay
commit_siblings
wal_debug

#QUERY TUNING
#Join Methods
enable_seqscan
enable_indexscan
enable_tidscan
enable_sort
enable_nestloop
enable_mergejoin
enable_hashjoin
#Planner Cost Constants
effective_cache_size
random_page_cost
cpu_tuple_cost
cpu_index_tuple_cost
cpu_operator_cost
default_statistics_target
#Genetic Estimate Query Optimizer
geqo
geqo_threshold
geqo_selection_bias
geqo_pool_size
geqo_effort
geqo_generations
geqo_random_seed
#Other
explain_pretty_print
max_expr_depth


#CLIENT CONNECTION DEFAULTS
#Statement Behaviour
autocommit
search_path
default_transaction_isolation
statement_timeout
#Locale and Formatting
datestyle
timezone
australian_timezones
client_encoding
lc_messages
lc_monetary
 

Re: [HACKERS] Proposal for Re-ordering CONF (was: Re: GUC and postgresql.conf docs)

2003-06-03 Thread Josh Berkus
Bruce,

 I don't think people change _that_ _many_ postgresql.conf settings, so
 reordering should be OK with them, especially if they get a clearer
 output.

Yeah.  I put in the objection because Elein already made it to me.

I also think that most people don't adjust *enough* Postgresql.conf settings, 
which is one thing I'm trying to change.

 Just to throw in a wrench, consider that SHOW ALL shows the settings in
 alphabetical order.  I think that is OK, but I thought I should mention
 it.

I think it's OK too.  Presumably, people running SHOW ALL are looking for a 
particular setting, not trying to tweak everything.

I considered simply alpha-ordering the CONF file.  However, too many options 
have a logical grouping that really need to be adjusted together and are 
spread wide apart in the alphabet (WAL_files and Checkpoint_segments, for 
example).   For that matter, I dealt with a couple of distros of SAMBA that 
decided to simplify smb.conf by alphabetizing the settings, and ended up 
reordering them on my own.  Bleah.

-- 
Josh Berkus
Aglio Database Solutions
San Francisco

---(end of broadcast)---
TIP 6: Have you searched our list archives?

http://archives.postgresql.org


Re: [HACKERS] Proposal for Re-ordering CONF (was: Re: GUC and postgresql.conf docs)

2003-06-03 Thread Tom Lane
Bruce Momjian [EMAIL PROTECTED] writes:
 Agreed, postgresql.conf and the documentation should match.  Guc.c needs
 to be in variable _type_ order, so I don't know what can be done
 there.

We could make each table in guc.c follow the logical ordering Josh
suggests for its subset of the variables.  But on the other hand, it'd
be just as defensible to put each table in alphabetical order.  I'd vote
for doing one or the other rather than leaving the kinda-random order
that's there now.

Josh's proposal looks pretty good to me in general, though some of the
details seem a little odd.  max_files_per_process doesn't belong under
lock management (perhaps better to stick it under Memory Usage, possibly
renaming that category to Resource Consumption) and the Query Tuning/Other
section seems kinda random.  But miscellaneous variables are always a
bear to classify.

regards, tom lane

---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster


Re: [HACKERS] Proposal for Re-ordering CONF (was: Re: GUC and postgresql.conf docs)

2003-06-03 Thread Josh Berkus
Tom,

 Josh's proposal looks pretty good to me in general, though some of the
 details seem a little odd.  max_files_per_process doesn't belong under
 lock management (perhaps better to stick it under Memory Usage, possibly
 renaming that category to Resource Consumption) and the Query Tuning/Other
 section seems kinda random.  But miscellaneous variables are always a
 bear to classify.

OK, sure.  I'll track everybody's suggestions an post a revised ordering 
tommorrow or wednesday.

One of my objectives was to avoid having a Miscellaneous section, as I find 
such sections tend to grow with time.   I couldn't avoid the Query 
Tuning/Other section, though, or for that matter Client Connection/Other; the 
options named definitely belong in that category, but don't have an 
appropriate sub-category that I can think of. 

Anybody see anything else that should be moved?

-- 
Josh Berkus
Aglio Database Solutions
San Francisco

---(end of broadcast)---
TIP 6: Have you searched our list archives?

http://archives.postgresql.org