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
                lc_time
                lc_numeric
        #Other Defaults
                dynamic_library_path
                password_encryption


#LOGGING & DEBUGGING
        #Debugging/Logging Levels
                server_min_messages
                client_min_messages
                log_min_error_statement
                debug_print_parse
                debug_print_rewritten
                debug_print_plan
                debug_pretty_print
                debug_assertions
                silent_mode
        #Additional Info to Log
                log_connections
                log_pid
                log_statement
                log_duration
                log_timestamp
                hostname_lookup
                show_source_port
        #Syslog
                syslog
                syslog_facility
                syslog_ident


#STATISTICS
        #Statistics monitoring
                show_parser_stats
                show_planner_stats
                show_executor_stats
                show_statement_stats
        #Query/Index Statistics Collector
                stats_start_collector
                stats_reset_on_server_start
                stats_command_string
                stats_row_level
                stats_block_level


#LOCK MANAGEMENT
                max_files_per_process
                max_locks_per_transaction
                deadlock_timeout


#VERSION COMPATIBILITY OPTIONS
                sql_inheritance
                transform_null_equals






---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to