From 8d5f3c8d89bd108d65bb43fc61a76d8c827bc9d5 Mon Sep 17 00:00:00 2001 From: Bruce Momjian <bruce@momjian.us> Date: Tue, 1 Aug 2006 00:09:06 +0000 Subject: [PATCH] Improvements to Maintenance and External Projects documentation. Joshua D. Drake Robert Treat --- doc/src/sgml/external-projects.sgml | 111 ++++++++++++---------------- doc/src/sgml/maintenance.sgml | 69 +++++++++-------- 2 files changed, 82 insertions(+), 98 deletions(-) diff --git a/doc/src/sgml/external-projects.sgml b/doc/src/sgml/external-projects.sgml index f649de386d1..23d67b44ced 100644 --- a/doc/src/sgml/external-projects.sgml +++ b/doc/src/sgml/external-projects.sgml @@ -1,29 +1,34 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.10 2006/03/10 19:10:47 momjian Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/external-projects.sgml,v 1.11 2006/08/01 00:09:06 momjian Exp $ --> <appendix id="external-projects"> - <title>External Projects</title> + <title>PgFoundry and External Projects</title> <para> <productname>PostgreSQL</productname> is a complex software project, - and managing it is difficult. We have found that many + and managing the project is difficult. We have found that many enhancements to <productname>PostgreSQL</productname> can be more - efficiently developed separately from the core project. Separate - projects can - have their own developer teams, email lists, bug tracking, - and release schedules. While their independence makes - development easier, it makes users' jobs harder. They have to hunt - around looking for database enhancements to meet their needs. - This section describes some of the more popular externally - developed enhancements and guides you on how to find them. + efficiently developed separately from the core project. + </para> + + <para> + To help our community with the development of their external projects, + we have created the <ulink url="http://www.pgfoundry.org/">PgFoundry</ulink>. + <ulink url="http://www.pgfoundry.org/">PgFoundry</ulink> is built using the + GForge software project and is similar to SourceForge in its feature set. If + you have a PostgreSQL related Open Source project that you would like to + develop and need project management resources such as mailing lists, forums, + bug tracking, and CVS, please feel free to create a new project. </para> <para> - Many <productname>PostgreSQL</productname>-related projects are - hosted at either - <ulink url="http://gborg.postgresql.org"><productname>GBorg</></ulink> - or <ulink url="http://pgfoundry.org"><productname>pgFoundry</></ulink>. - There are other <productname>PostgreSQL</productname>-related projects that are hosted - elsewhere, but you will have to do an Internet search to find them. + Secondly, many <productname>PostgreSQL</productname>-related projects are + still hosted at <ulink url="http://gborg.postgresql.org"><productname>GBorg</></ulink>. + GBorg is the original external community developer site, and while it is + currently closed to new projects in favor of PgFoundry, it still contains + many active and relevant projects. There are other popular <productname>PostgreSQL</productname> + related projects that are hosted independently as well at other community + sites such as <ulink url="http://www.sf.net">SourceForge</ulink>. You should + google if you don't find the project you are looking for. </para> <sect1 id="external-interfaces"> @@ -36,11 +41,10 @@ <para> <productname>PostgreSQL</productname> includes very few interfaces with the base distribution. <application>libpq</> is packaged because - it is the primary <application>C</> interface and many other - interfaces are built on top of it. <application>ecpg</> is packaged - because it is tied to the server-side grammar so is very dependent - on the database version. All the other interfaces are independent - projects and must be installed separately. + it is the primary dependecy of most interfaces available to PostgreSQL. + We also package <application>ecpg</> because it is tied to the + server-side grammar. All other interfaces, such as PHP, Perl, Python, + and Ruby, are external projects. </para> <para> @@ -52,64 +56,57 @@ <listitem> <para> This is the most common interface for <application>Windows</> - applications. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>pgjdbc</term> - <listitem> - <para> - A <application>JDBC</> interface. + applications. <ulink url="http://odbc.postgresql.org/">Website.</ulink> </para> </listitem> </varlistentry> <varlistentry> - <term>Npgsql</term> + <term>ODBCng</term> <listitem> <para> - <application>.Net</> interface for more recent - <application>Windows</> applications. + Another ODBC driver for PostgreSQL. + <ulink url="http://projects.commandprompt.com/public/odbcng/">Website.</ulink> </para> </listitem> </varlistentry> <varlistentry> - <term>libpqxx</term> + <term>pgjdbc</term> <listitem> <para> - A newer <application>C++</> interface. + A <application>JDBC</> interface. + <ulink url="http://jdbc.postgresql.org/">Website.</ulink> </para> </listitem> </varlistentry> <varlistentry> - <term>libpq++</term> + <term>Npgsql</term> <listitem> <para> - An older <application>C++</> interface. + <application>.Net</> interface for more recent <application>mono/C#</> applications. + <ulink url="http://pgfoundry.org/projects/npgsql/">Website.</ulink> </para> </listitem> </varlistentry> <varlistentry> - <term>pgperl</term> + <term>libpqxx</term> <listitem> <para> - A <application>Perl</> interface with an <acronym>API</> similar - to <application>libpq</>. + A newer <application>C++</> interface. + <ulink url="http://thaiopensource.org/development/libpqxx/">Website.</ulink> </para> </listitem> </varlistentry> <varlistentry> - <term>DBD-Pg</term> + <term>DBD::Pg</term> <listitem> <para> - A <application>Perl</> interface that uses the - <acronym>DBD</>-standard <application>API</>. + A <application>Perl</> DBI driver for PostgreSQL. + <ulink url="http://search.cpan.org/dist/DBD-Pg/">Website.</ulink> </para> </listitem> </varlistentry> @@ -119,33 +116,21 @@ <listitem> <para> A newer version of the <application>Tcl</> interface. + <ulink url="http://gborg.postgresql.org/project/pgtclng/projdisplay.php">Website.</ulink> </para> </listitem> </varlistentry> <varlistentry> - <term>pgtcl</term> - <listitem> - <para> - The original version of the <application>Tcl</> interface. - </para> - </listitem> - </varlistentry> - - <varlistentry> - <term>PyGreSQL</term> + <term>Pyscopg</term> <listitem> <para> - A <application>Python</> interface library. + A <application>Python</> interface library that is DB API 2.0 compliant. + <ulink url="http://www.initd.org/">Website.</ulink> </para> </listitem> </varlistentry> - </variablelist> - - All of these can be found at - <ulink url="http://gborg.postgresql.org"><productname>GBorg</></ulink> - or <ulink url="http://pgfoundry.org"><productname>pgFoundry</></ulink>. </para> </sect1> @@ -175,8 +160,8 @@ <para> There are several administration tools available for <productname>PostgreSQL</>. The most popular is - <application>pgAdmin</>, and there are several commercially - available ones. + <application><ulink url="http://www.pgadmin.org/">pgAdmin III</ulink></>, + and there are several commercially available ones as well. </para> </sect1> diff --git a/doc/src/sgml/maintenance.sgml b/doc/src/sgml/maintenance.sgml index 784b21bb5c6..1576d72dd47 100644 --- a/doc/src/sgml/maintenance.sgml +++ b/doc/src/sgml/maintenance.sgml @@ -1,4 +1,4 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/maintenance.sgml,v 1.56 2006/06/18 15:38:35 petere Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/maintenance.sgml,v 1.57 2006/08/01 00:09:06 momjian Exp $ --> <chapter id="maintenance"> <title>Routine Database Maintenance Tasks</title> @@ -7,42 +7,40 @@ <primary>maintenance</primary> </indexterm> + <indexterm zone="maintenance"> + <primary>Routine maintenance</primary> + </indexterm> + <para> - There are a few routine maintenance chores that must be performed on - a regular basis to keep a <productname>PostgreSQL</productname> - server running smoothly. The tasks discussed here are repetitive - in nature and can easily be automated using standard Unix tools such - as <application>cron</application> scripts. But it is the database - administrator's responsibility to set up appropriate scripts, and to - check that they execute successfully. + PostgreSQL, like any database software, requires that certain tasks + be performed regularly to achieve optimum performance. The tasks + discussed here are <emphasis>required</emphasis>, but they + are repetitive in nature and can easily be automated using standard + Unix tools such as <application>cron</application> scripts. </para> - + <para> - One obvious maintenance task is creation of backup copies of the data on a - regular schedule. Without a recent backup, you have no chance of recovery - after a catastrophe (disk failure, fire, mistakenly dropping a critical - table, etc.). The backup and recovery mechanisms available in - <productname>PostgreSQL</productname> are discussed at length in - <xref linkend="backup">. + <productname>PostgreSQL</productname> is low-maintenance compared + to other database management systems. It is also fairly easy, provided + you read the documentation. </para> <para> - The other main category of maintenance task is periodic <quote>vacuuming</> - of the database. This activity is discussed in - <xref linkend="routine-vacuuming">. + There are three tasks that <emphasis>must</emphasis> be performed on + a periodic basis. The first is backups. If you do not have a current backup + and your system experiences a catastrophic failure, you will lose your data. + You can read further about backups procedures in <xref linkend="backup">. + The second is vacuum which is discussed in <xref linkend="routine-vacuuming">. + The third is to update the planner statistics using the analyze command as + discussed in <xref linkend="vacuum-for-statistics">. </para> <para> - Something else that might need periodic attention is log file management. + Another task that may need periodic attention is log file management. This is discussed in <xref linkend="logfile-maintenance">. </para> - <para> - <productname>PostgreSQL</productname> is low-maintenance compared - to some other database management systems. Nonetheless, - appropriate attention to these tasks will go far towards ensuring a - pleasant and productive experience with the system. - </para> + <sect1 id="routine-vacuuming"> <title>Routine Vacuuming</title> @@ -53,11 +51,11 @@ <para> <productname>PostgreSQL</productname>'s <command>VACUUM</> command - must be run on a regular basis for several reasons: + <emphasis>must</emphasis> be run on a regular basis for several reasons: <orderedlist> <listitem> - <simpara>To recover disk space occupied by updated or deleted + <simpara>To recover or reuse disk space occupied by updated or deleted rows.</simpara> </listitem> @@ -82,11 +80,12 @@ </para> <para> - The standard form of <command>VACUUM</> can run in parallel with - normal database operations (SELECTs, INSERTs, UPDATEs, DELETEs, but not - changes to table definitions). - Beginning in <productname>PostgreSQL</productname> 8.0, there are - configuration parameters that can be adjusted to further reduce the + The standard form of <command>VACUUM</> does not intefere with production + database operations. Items such as SELECTS, INSERTS, UPDATES and DELETES + will continue to function as normal, though you will not be able to modify the + definition (Such as ALTER TABLE ADD COLUMN) of a table while it is being vacuumed. + The release of <productname>PostgreSQL</productname> 8.0, introduced new + configuration parameters to further reduce the potentially negative performance impact of background vacuuming. See <xref linkend="runtime-config-resource-vacuum-cost">. </para> @@ -187,9 +186,9 @@ </para> <para> - If you have a table whose contents are deleted on a periodic - basis, consider doing it with <command>TRUNCATE</command> rather - than using <command>DELETE</command> followed by + If you have a table whose entire contents are deleted on a periodic + basis, consider doing it with the <command>TRUNCATE</command> rather + than using the <command>DELETE</command> followed by <command>VACUUM</command>. <command>TRUNCATE</command> removes the entire content of the table immediately, without requiring a subsequent <command>VACUUM</command> or <command>VACUUM -- GitLab