runtime.sgml
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:14k
- <Chapter Id="runtime">
- <Title>Runtime Environment</Title>
- <Para>
- This chapter outlines the interaction between <Productname>Postgres</Productname> and
- the operating system.
- </para>
- <sect1>
- <title>Using <Productname>Postgres</Productname> from Unix</title>
- <para>
- All <Productname>Postgres</Productname> commands that are executed
- directly from a Unix shell are
- found in the directory <quote>.../bin</quote>. Including this directory in
- your search path will make executing the commands easier.
- </para>
- <para>
- A collection of system catalogs exist at each site. These include a
- class (<literal>pg_user</literal>) that contains an instance for each valid
- <Productname>Postgres</Productname> user. The instance specifies a set of
- <Productname>Postgres</Productname> privileges, such as
- the ability to act as <Productname>Postgres</Productname> super-user,
- the ability to create/destroy
- databases, and the ability to update the system catalogs. A Unix
- user cannot do anything with <Productname>Postgres</Productname>
- until an appropriate instance is
- installed in this class. Further information on the system catalogs
- is available by running queries on the appropriate classes.
- </para>
- </sect1>
- <sect1 Id="postmaster">
- <Title>Starting <Application>postmaster</Application></Title>
- <Para>
- Nothing can happen to a database unless the
- <Application>postmaster</Application>
- process is running. As the site administrator, there
- are a number of things you should remember before
- starting the <Application>postmaster</Application>.
- These are discussed in the installation and configuration sections
- of this manual.
- However, if <ProductName>Postgres</ProductName> has been installed by following
- the installation instructions exactly as written, the
- following simple command is all you should
- need to start the <Application>postmaster</Application>:
- <ProgramListing>
- % postmaster
- </ProgramListing>
- </para>
- <para>
- The <Application>postmaster</Application> occasionally prints out
- messages which
- are often helpful during troubleshooting. If you wish
- to view debugging messages from the <Application>postmaster</Application>,
- you can
- start it with the -d option and redirect the output to
- the log file:
- <ProgramListing>
- % postmaster -d >& pm.log &
- </ProgramListing>
- If you do not wish to see these messages, you can type
- <ProgramListing>
- % postmaster -S
- </ProgramListing>
- and the <Application>postmaster</Application> will be "S"ilent.
- Notice that there
- is no ampersand ("&") at the end of the last example so
- postmaster will be running in the foreground.
- </Para>
- </sect1>
- <sect1 Id="pg-options">
- <Title id="pg-options-title">Using pg_options</Title>
- <Para>
- <Note>
- <Para>
- Contributed by <ULink url="mailto:dz@cs.unitn.it">Massimo Dal Zotto</ULink>
- </Para>
- </Note>
- </para>
- <Para>
- The optional file <filename>data/pg_options</filename> contains runtime
- options used by the backend to control trace messages and other backend
- tunable parameters.
- The file is re-read by a backend
- when it receives a SIGHUP signal, making thus possible to change run-time
- options on the fly without needing to restart
- <productname>Postgres</productname>.
- The options specified in this file may be debugging flags used by the trace
- package (<filename>backend/utils/misc/trace.c</filename>) or numeric
- parameters which can be used by the backend to control its behaviour.
- </para>
- <para>
- All pg_options are initialized to zero at backend startup.
- New or modified options will be read by all new backends when they are started.
- To make effective any changes for all running backends we need to send a
- SIGHUP to the postmaster. The signal will be automatically sent to all the
- backends. We can also activate the changes only for a specific backend by
- sending the SIGHUP directly to it.
- </para>
- <para>
- pg_options can also be specified with the <option>-T</option> switch of
- <productname>Postgres</productname>:
- <programlisting>
- postgres <replaceable>options</replaceable> -T "verbose=2,query,hostlookup-"
- </programlisting>
- </para>
- <Para>
- The functions used for printing errors and debug messages can now make use
- of the <citetitle>syslog(2)</citetitle> facility. Message printed to stdout
- or stderr are prefixed by a timestamp containing also the backend pid:
- <programlisting>
- #timestamp #pid #message
- 980127.17:52:14.173 [29271] StartTransactionCommand
- 980127.17:52:14.174 [29271] ProcessUtility: drop table t;
- 980127.17:52:14.186 [29271] SIIncNumEntries: table is 70% full
- 980127.17:52:14.186 [29286] Async_NotifyHandler
- 980127.17:52:14.186 [29286] Waking up sleeping backend process
- 980127.19:52:14.292 [29286] Async_NotifyFrontEnd
- 980127.19:52:14.413 [29286] Async_NotifyFrontEnd done
- 980127.19:52:14.466 [29286] Async_NotifyHandler done
- </programlisting>
- </para>
- <para>
- This format improves readability of the logs and allows people to understand
- exactly which backend is doing what and at which time. It also makes
- easier to write simple awk or perl scripts which monitor the log to
- detect database errors or problem, or to compute transaction time statistics.
- </para>
- <para>
- Messages printed to syslog use the log facility LOG_LOCAL0.
- The use of syslog can be controlled with the syslog pg_option.
- Unfortunately many functions call directly <function>printf()</function>
- to print their messages to stdout or stderr and this output can't be
- redirected to syslog or have timestamps in it.
- It would be advisable that all calls to printf would be replaced with the
- PRINTF macro and output to stderr be changed to use EPRINTF instead so that
- we can control all output in a uniform way.
- </Para>
- <para>
- The format of the <filename>pg_options</filename> file is as follows:
- <programlisting>
- # <replaceable>comment</replaceable>
- <replaceable>option</replaceable>=<replaceable class="parameter">integer_value</replaceable> # set value for <replaceable>option</replaceable>
- <replaceable>option</replaceable> # set <replaceable>option</replaceable> = 1
- <replaceable>option</replaceable>+ # set <replaceable>option</replaceable> = 1
- <replaceable>option</replaceable>- # set <replaceable>option</replaceable> = 0
- </programlisting>
- Note that <replaceable class="parameter">keyword</replaceable> can also be
- an abbreviation of the option name defined in
- <filename>backend/utils/misc/trace.c</filename>.
- <example>
- <title>pg_options File</title>
- <para>
- For example my pg_options file contains the following values:
- <programlisting>
- verbose=2
- query
- hostlookup
- showportnumber
- </programlisting>
- </para>
- </example>
- </para>
- <sect2>
- <title>Recognized Options</title>
- <Para>
- The options currently defined are:
- <variablelist>
- <varlistentry>
- <term>
- all
- </term>
- <listitem>
- <para>
- Global trace flag. Allowed values are:
- </para>
- <variablelist>
- <varlistentry>
- <term>
- 0
- </term>
- <listitem>
- <para>
- Trace messages enabled individually
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- 1
- </term>
- <listitem>
- <para>
- Enable all trace messages
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- -1
- </term>
- <listitem>
- <para>
- Disable all trace messages
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- verbose
- </term>
- <listitem>
- <para>
- Verbosity flag. Allowed values are:
- </para>
- <variablelist>
- <varlistentry>
- <term>
- 0
- </term>
- <listitem>
- <para>
- No messages. This is the default.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- 1
- </term>
- <listitem>
- <para>
- Print information messages.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- 2
- </term>
- <listitem>
- <para>
- Print more information messages.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- query
- </term>
- <listitem>
- <para>
- Query trace flag. Allowed values are:
- </para>
- <variablelist>
- <varlistentry>
- <term>
- 0
- </term>
- <listitem>
- <para>
- Don't print query.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- 1
- </term>
- <listitem>
- <para>
- Print a condensed query in one line.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- 4
- </term>
- <listitem>
- <para>
- Print the full query.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- plan
- </term>
- <listitem>
- <para>
- Print query plan.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- parse
- </term>
- <listitem>
- <para>
- Print parser output.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- rewritten
- </term>
- <listitem>
- <para>
- Print rewritten query.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- parserstats
- </term>
- <listitem>
- <para>
- Print parser statistics.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- plannerstats
- </term>
- <listitem>
- <para>
- Print planner statistics.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- executorstats
- </term>
- <listitem>
- <para>
- Print executor statistics.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- shortlocks
- </term>
- <listitem>
- <para>
- Currently unused but needed to enable features in the future.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- locks
- </term>
- <listitem>
- <para>
- Trace locks.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- userlocks
- </term>
- <listitem>
- <para>
- Trace user locks.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term>
- spinlocks
- </term>
- <listitem>
- <para>
- Trace spin locks.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- notify
- </term>
- <listitem>
- <para>
- Trace notify functions.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- malloc
- </term>
- <listitem>
- <para>
- Currently unused.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- palloc
- </term>
- <listitem>
- <para>
- Currently unused.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- lock_debug_oidmin
- </term>
- <listitem>
- <para>
- Minimum relation oid traced by locks.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- lock_debug_relid
- </term>
- <listitem>
- <para>
- oid, if not zero, of relation traced by locks.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- lock_read_priority
- </term>
- <listitem>
- <para>
- Currently unused.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- deadlock_timeout
- </term>
- <listitem>
- <para>
- Deadlock check timer.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- syslog
- </term>
- <listitem>
- <para>
- syslog flag. Allowed values are:
- </para>
- <variablelist>
- <varlistentry>
- <term>
- 0
- </term>
- <listitem>
- <para>
- Messages to stdout/stderr.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- 1
- </term>
- <listitem>
- <para>
- Messages to stdout/stderr and syslog.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- 2
- </term>
- <listitem>
- <para>
- Messages only to syslog.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- hostlookup
- </term>
- <listitem>
- <para>
- Enable hostname lookup in ps_status.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- showportnumber
- </term>
- <listitem>
- <para>
- Show port number in ps_status.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- notifyunlock
- </term>
- <listitem>
- <para>
- Unlock of pg_listener after notify.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- notifyhack
- </term>
- <listitem>
- <para>
- Remove duplicate tuples from pg_listener.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </para>
- </sect2>
- </sect1>
- </Chapter>
- <!-- Keep this comment at the end of the file
- Local variables:
- mode: sgml
- sgml-omittag:nil
- sgml-shorttag:t
- sgml-minimize-attributes:nil
- sgml-always-quote-attributes:t
- sgml-indent-step:1
- sgml-indent-data:t
- sgml-parent-document:nil
- sgml-default-dtd-file:"./reference.ced"
- sgml-exposed-tags:nil
- sgml-local-catalogs:"/usr/lib/sgml/CATALOG"
- sgml-local-ecat-files:nil
- End:
- -->