head	1.27;
access;
symbols
	REL7_4_29:1.12.2.2
	REL8_0_25:1.18.4.2
	REL8_1_21:1.20.2.1
	REL8_2_17:1.21.2.2
	REL8_3_11:1.25
	REL7_4_28:1.12.2.2
	REL8_0_24:1.18.4.2
	REL8_1_20:1.20.2.1
	REL8_2_16:1.21.2.2
	REL8_3_10:1.25
	REL7_4_27:1.12.2.2
	REL8_0_23:1.18.4.2
	REL8_1_19:1.20.2.1
	REL8_2_15:1.21.2.2
	REL8_3_9:1.25
	REL7_4_26:1.12.2.2
	REL8_0_22:1.18.4.2
	REL8_1_18:1.20.2.1
	REL8_2_14:1.21.2.2
	REL8_3_8:1.25
	REL8_4_STABLE:1.26.0.2
	REL8_4_0:1.26
	REL8_4_RC2:1.26
	REL8_4_RC1:1.26
	REL8_4_BETA2:1.26
	REL8_4_BETA1:1.26
	REL7_4_25:1.12.2.2
	REL8_0_21:1.18.4.2
	REL8_1_17:1.20.2.1
	REL8_2_13:1.21.2.2
	REL8_3_7:1.25
	REL7_4_24:1.12.2.2
	REL8_0_20:1.18.4.2
	REL8_1_16:1.20.2.1
	REL8_2_12:1.21.2.2
	REL8_3_6:1.25
	REL7_4_23:1.12.2.2
	REL8_0_19:1.18.4.2
	REL8_1_15:1.20.2.1
	REL8_2_11:1.21.2.2
	REL8_3_5:1.25
	REL7_4_22:1.12.2.2
	REL8_0_18:1.18.4.2
	REL8_1_14:1.20.2.1
	REL8_2_10:1.21.2.2
	REL8_3_4:1.25
	REL7_4_21:1.12.2.2
	REL8_0_17:1.18.4.2
	REL8_1_13:1.20.2.1
	REL8_2_9:1.21.2.2
	REL8_3_3:1.25
	REL7_4_20:1.12.2.2
	REL8_0_16:1.18.4.2
	REL8_1_12:1.20.2.1
	REL8_2_8:1.21.2.2
	REL8_3_2:1.25
	REL8_2_7:1.21.2.2
	REL8_3_1:1.25
	REL8_3_STABLE:1.25.0.2
	REL8_3_0:1.25
	REL8_3_RC2:1.25
	REL7_3_21:1.5.2.2
	REL7_4_19:1.12.2.2
	REL8_0_15:1.18.4.2
	REL8_1_11:1.20.2.1
	REL8_2_6:1.21.2.2
	REL8_3_RC1:1.25
	REL8_3_BETA4:1.24
	REL8_3_BETA3:1.24
	REL8_3_BETA2:1.24
	REL8_3_BETA1:1.23
	REL7_3_20:1.5.2.2
	REL7_4_18:1.12.2.2
	REL8_0_14:1.18.4.2
	REL8_1_10:1.20.2.1
	REL8_2_5:1.21.2.2
	REL7_3_19:1.5.2.2
	REL7_4_17:1.12.2.2
	REL8_0_13:1.18.4.2
	REL8_1_9:1.20.2.1
	REL8_2_4:1.21.2.2
	REL8_0_12:1.18.4.2
	REL8_1_8:1.20.2.1
	REL8_2_3:1.21.2.1
	REL7_3_18:1.5.2.2
	REL7_4_16:1.12.2.2
	REL8_0_11:1.18.4.2
	REL8_1_7:1.20.2.1
	REL8_2_2:1.21.2.1
	REL8_0_10:1.18.4.2
	REL8_1_6:1.20.2.1
	REL8_2_1:1.21
	REL7_4_15:1.12.2.2
	REL7_3_17:1.5.2.2
	REL8_2_STABLE:1.21.0.2
	REL8_2_0:1.21
	REL8_2_RC1:1.21
	REL8_2_BETA3:1.21
	REL8_2_BETA2:1.21
	REL8_1_5:1.20.2.1
	REL8_0_9:1.18.4.2
	REL7_4_14:1.12.2.2
	REL7_3_16:1.5.2.2
	REL8_2_BETA1:1.21
	REL7_3_15:1.5.2.2
	REL7_4_13:1.12.2.2
	REL8_0_8:1.18.4.2
	REL8_1_4:1.20.2.1
	REL7_3_14:1.5.2.2
	REL7_4_12:1.12.2.2
	REL8_0_7:1.18.4.2
	REL8_1_3:1.20
	REL7_3_13:1.5.2.2
	REL7_4_11:1.12.2.2
	REL8_0_6:1.18.4.2
	REL8_1_2:1.20
	REL7_3_12:1.5.2.2
	REL7_4_10:1.12.2.2
	REL8_0_5:1.18.4.2
	REL8_1_1:1.20
	REL8_1_STABLE:1.20.0.2
	REL8_1_0:1.20
	REL8_1_0RC1:1.20
	REL8_1_0BETA4:1.20
	REL8_1_0BETA3:1.20
	REL7_3_11:1.5.2.2
	REL7_4_9:1.12.2.2
	REL8_0_4:1.18.4.2
	REL8_1_0BETA2:1.20
	REL8_1_0BETA1:1.20
	REL7_2_8:1.4
	REL7_3_10:1.5.2.2
	REL7_4_8:1.12.2.2
	REL8_0_3:1.18.4.1
	REL8_0_2:1.18.4.1
	REL7_2_7:1.4
	REL7_3_9:1.5.2.2
	REL7_4_7:1.12.2.2
	REL8_0_1:1.18
	REL8_0_STABLE:1.18.0.4
	REL8_0_0:1.18.0.2
	REL8_0_0RC5:1.17
	REL8_0_0RC4:1.17
	REL8_0_0RC3:1.17
	REL8_0_0RC2:1.17
	REL8_0_0RC1:1.16
	REL8_0_0BETA5:1.16
	REL8_0_0BETA4:1.15
	REL7_4_6:1.12.2.2
	REL7_3_8:1.5.2.2
	REL7_2_6:1.4
	REL8_0_0BETA3:1.15
	REL8_0_0BETA2:1.15
	REL7_2_5:1.4
	REL7_4_5:1.12.2.2
	REL7_3_7:1.5.2.2
	REL7_4_4:1.12.2.2
	REL8_0_0BETA1:1.15
	REL7_4_3:1.12.2.2
	REL7_4_2:1.12.2.1
	REL7_3_6:1.5.2.2
	REL7_4_1:1.12
	REL7_3_5:1.5.2.2
	REL7_4:1.12
	REL7_4_RC2:1.12
	REL7_4_STABLE:1.12.0.2
	REL7_4_RC1:1.12
	REL7_4_BETA5:1.12
	REL7_4_BETA4:1.12
	REL7_4_BETA3:1.12
	REL7_4_BETA2:1.11
	WIN32_DEV:1.11.0.2
	REL7_4_BETA1:1.11
	REL7_3_4:1.5.2.2
	REL7_3_2:1.5.2.1
	REL7_2_4:1.4
	REL7_3_STABLE:1.5.0.2
	REL7_2_3:1.4
	REL7_2_STABLE:1.4.0.2
	REL7_2:1.4
	REL7_2_RC2:1.4
	REL7_2_RC1:1.4
	REL7_2_BETA5:1.4
	REL7_2_BETA4:1.4
	REL7_2_BETA3:1.4
	REL7_2_BETA2:1.4
	REL7_2_BETA1:1.4
	REL7_1_2:1.3
	REL7_1_STABLE:1.3.0.2
	REL7_1_BETA:1.1
	REL7_1_BETA3:1.2
	REL7_1_BETA2:1.2
	REL7_1:1.3;
locks; strict;
comment	@# @;


1.27
date	2009.07.21.19.20.32;	author petere;	state dead;
branches;
next	1.26;

1.26
date	2009.01.01.17.23.32;	author momjian;	state Exp;
branches
	1.26.2.1;
next	1.25;

1.25
date	2008.01.01.19.45.45;	author momjian;	state Exp;
branches;
next	1.24;

1.24
date	2007.10.20.15.49.09;	author momjian;	state Exp;
branches;
next	1.23;

1.23
date	2007.02.21.16.49.36;	author momjian;	state Exp;
branches;
next	1.22;

1.22
date	2007.01.05.22.19.19;	author momjian;	state Exp;
branches;
next	1.21;

1.21
date	2006.03.05.15.58.19;	author momjian;	state Exp;
branches
	1.21.2.1;
next	1.20;

1.20
date	2005.05.11.16.13.19;	author momjian;	state Exp;
branches
	1.20.2.1;
next	1.19;

1.19
date	2005.03.11.21.46.53;	author momjian;	state Exp;
branches;
next	1.18;

1.18
date	2005.01.17.02.42.14;	author momjian;	state Exp;
branches
	1.18.4.1;
next	1.17;

1.17
date	2004.12.18.04.17.44;	author momjian;	state Exp;
branches;
next	1.16;

1.16
date	2004.10.27.02.01.09;	author momjian;	state Exp;
branches;
next	1.15;

1.15
date	2004.07.11.23.07.18;	author momjian;	state Exp;
branches;
next	1.14;

1.14
date	2004.03.08.17.38.31;	author momjian;	state Exp;
branches;
next	1.13;

1.13
date	2004.01.09.01.51.31;	author momjian;	state Exp;
branches;
next	1.12;

1.12
date	2003.09.03.20.28.14;	author momjian;	state Exp;
branches
	1.12.2.1;
next	1.11;

1.11
date	2003.07.23.17.08.04;	author momjian;	state Exp;
branches
	1.11.2.1;
next	1.10;

1.10
date	2003.06.06.22.21.35;	author momjian;	state Exp;
branches;
next	1.9;

1.9
date	2003.04.28.22.40.38;	author momjian;	state Exp;
branches;
next	1.8;

1.8
date	2003.03.10.16.06.41;	author momjian;	state Exp;
branches;
next	1.7;

1.7
date	2003.02.18.05.08.10;	author momjian;	state Exp;
branches;
next	1.6;

1.6
date	2002.12.18.04.46.17;	author momjian;	state Exp;
branches;
next	1.5;

1.5
date	2002.10.22.21.44.51;	author momjian;	state Exp;
branches
	1.5.2.1;
next	1.4;

1.4
date	2001.08.24.14.07.48;	author petere;	state Exp;
branches;
next	1.3;

1.3
date	2001.03.05.18.09.54;	author momjian;	state Exp;
branches;
next	1.2;

1.2
date	2000.12.15.20.01.54;	author momjian;	state Exp;
branches;
next	1.1;

1.1
date	2000.09.14.02.21.31;	author momjian;	state Exp;
branches;
next	;

1.5.2.1
date	2002.12.18.20.39.31;	author momjian;	state Exp;
branches;
next	1.5.2.2;

1.5.2.2
date	2003.07.23.04.13.11;	author momjian;	state Exp;
branches;
next	;

1.11.2.1
date	2003.09.07.04.36.40;	author momjian;	state Exp;
branches;
next	;

1.12.2.1
date	2004.03.05.19.57.20;	author momjian;	state Exp;
branches;
next	1.12.2.2;

1.12.2.2
date	2004.03.08.17.39.04;	author momjian;	state Exp;
branches;
next	;

1.18.4.1
date	2005.03.11.21.47.36;	author momjian;	state Exp;
branches;
next	1.18.4.2;

1.18.4.2
date	2005.05.11.16.13.57;	author momjian;	state Exp;
branches;
next	;

1.20.2.1
date	2006.04.05.22.56.11;	author momjian;	state Exp;
branches;
next	;

1.21.2.1
date	2007.02.01.04.56.41;	author momjian;	state Exp;
branches;
next	1.21.2.2;

1.21.2.2
date	2007.04.19.03.07.22;	author momjian;	state Exp;
branches;
next	;

1.26.2.1
date	2009.07.21.19.21.02;	author petere;	state dead;
branches;
next	;


desc
@@


1.27
log
@Remove translated FAQs

The English FAQ has been moved to the wiki, so the translated versions should
have been removed at that point as well.

The FAQ_MINGW.html should have been removed when the platform FAQs were
integrated into the documentation (or earlier).

applied to both 8.4 and 8.5
@
text
@
                  Hufig gestellte Fragen (FAQ) zu PostgreSQL
                                       
   Current maintainer: Bruce Momjian (bruce@@momjian.us).
   
   Deutsche bersetzung von Ian Barwick (barwick@@gmail.com).
   
   Letzte Aktualisierung der deutschen bersetzung: Fr., den 19.10.2007,
   17:00 MEZ
   
   Die aktuellste Version dieses Dokuments liegt auf der
   PostgreSQL-Website:
     * http://www.postgresql.org/docs/faqs.FAQ.html (engl.)
     * http://www.postgresql.org/docs/faqs.FAQ_german.html (dt.)
       
   bersetzungen dieses Dokuments in anderen Sprachen sowie plattform-
   spezifische FAQs knnen unter http://www.postgresql.org/docs/faq/
   eingesehen werden.
     _________________________________________________________________
   
                             Allgemeine Fragen
                                      
   1.1) Was ist PostgreSQL? Wie wird es ausgesprochen?
   1.2) Wer kontrolliert PostgreSQL?
   1.3) Welchem Copyright unterliegt PostgreSQL?
   1.4) Auf welchen Plattformen luft PostgreSQL?
   1.5) Woher bekomme ich PostgreSQL?
   1.6) Was ist die neueste Version von PostgreSQL?
   1.7) Wo bekomme ich Support fr PostgreSQL?
   1.8) Wie kann ich einen Fehlerbericht abgeben?
   1.9) Wie erfahre ich von bekannten Bugs oder fehlenden Features?
   1.10) Welche Dokumentation ist fr PostgreSQL verfgbar?
   1.11) Wie kann ich SQL lernen?
   1.12) Wie kann ich im Entwicklerteam mitarbeiten?
   1.13) Wie luft PostgreSQL im Vergleich zu anderen Datenbanksystemen?
   1.14) Kommt PostgreSQL mit den Anpassungen der Sommerzeit in
   verschiedenen Lndern klar?
   
                        Fragen zu Benutzerprogrammen
                                      
   2.1) Welche Schnittstellen gibt es fr PostgreSQL?
   2.2) Wie kann man PostgreSQL mit einer Website nutzen?
   2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle?
   
                           Administrative Fragen
                                      
   3.1) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql?
   3.2) Wie regle ich Zugriffe von anderen Rechnern?
   3.3) Wie kann ich eine bessere Performanz erreichen?
   3.4) Welche Debugging-Funktionen sind fr PostgreSQL verfgbar?
   3.5) Ich bekomme die Meldung "Sorry, too many clients", wenn ich eine
   Verbindung aufzubauen versuche. Warum?
   3.6) Wie wird PostgreSQL aktualisiert?
   3.7) Welche Hardware eignet sich fr den Betrieb mit PostgreSQL?
   
                             Fragen zum Betrieb
                                      
   4.1) Wie whle ich per SELECT-Anweisung nur die ersten paar Zeilen
   bzw. eine beliebige Zeile in einer Abfrage aus?
   4.2) Wie finde ich heraus, welche Tabellen, Indexe, Datenbanken oder
   Benutzer in der Datenbank definiert sind? Wie bekomme ich die von psql
   verwendeten Abfragen?
   4.3) Wie ndere ich den Datentyp einer Spalte?
   4.4) Was ist die Maximalgre fr eine Zeile, eine Tabelle, eine
   Datenbank?
   4.5) Wieviel Plattenplatz wird bentigt, um die Daten aus einer
   typischen Textdatei abzuspeichern?
   4.6) Meine Abfragen sind langsam oder benutzen die Indexe nicht.
   Warum?
   4.7) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer meine
   Abfrage auswertet?
   4.8) Wie verfahre ich bei der Suche mit regulren Ausdrcken und bei
   einer Suche, bei der Gro- und Kleinschreibweisen ignoriert werden?
   Wie verwende ich einen Index bei solchen Suchabfragen?
   4.9) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist?
   4.10) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
   4.11.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhhung
   des Wertes?
   4.11.2) Wie bekomme ich den Wert einer SERIAL-Sequenz?
   4.11.3) Fhrt currval() zu einer Race-Condition mit anderen Nutzern?
   4.11.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch
   nicht zurckgesetzt? Warum gibt es Lcken in der Nummerierung meiner
   Sequenz-/SERIAL-Spalte?
   4.12) Was ist ein OID? Was ist ein CTID?
   4.13) Wieso bekomme ich den Fehler: "FATAL: Memory exhausted in
   AllocSetAlloc()"?
   4.14) Wie kann ich feststellen, welche PostgreSQL-Version bei mir
   luft?
   4.15) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die
   aktuelle Uhrzeit enthalten soll?
   4.16) Wie fhre ich eine OUTER JOIN durch?
   4.17) Wie kann ich Abfragen ber mehrere Datenbanken hinweg ausfhren?
   4.18) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion
   zurckgeben lassen?
   4.19) Warum bekomme ich eine Fehlermeldung wie
   "relation with OID ##### does not exist" wenn ich temporre Tabellen
   in
   PL/PgSQL-Funktionen benutze?
   4.20) Welche Replikationslsungen gibt es?
   4.21) Warum werden die Tabellen- und Spaltennamen in meiner Abfrage
   nicht erkannt? Warum werden Grobuchstaben umgewandelt?
     _________________________________________________________________
   
                             Allgemeine Fragen
                                      
  1.1) Was ist PostgreSQL? Wie wird es ausgesprochen?
  
   Die (englische) Aussprache ist "Post-Gres-Q-L". Im allgemeinen
   Sprachgebrauch hat sich die Kurzform "Postgres" auch durchgesetzt.
   (Fr diejenigen, die es interessiert: eine MP3-Datei mit der
   amerikanischen Aussprache befindet sich hier:
   http://www.postgresql.org/files/postgresql.mp3
   
   PostgreSQL ist ein objektrelationales Datenbanksystem, das die Vorzge
   von kommerziellen Datenbanksystemen mit zukunftsweisenden Innovationen
   kombiniert. PostgreSQL ist freie Software und dessen kompletter
   Quellcode ist ffentlich verfgbar.
   
   Die PostgreSQL-Entwicklung wird von einem Team von meist freiwilligen
   Entwicklern durchgefhrt. Dieses Team ist fr die Gesamtentwicklung
   von PostgreSQL verantwortlich. Es handelt sich um ein
   Gemeinschaftsprojekt, das nicht von einer bestimmten Firma
   kontrolliert wird. Lesen Sie die Entwickler-FAQ:
   http://www.postgresql.org/docs/faqs.FAQ_DEV.html wenn Sie an einer
   Mitarbeit interessiert sind.
   
  1.2) Wer kontrolliert PostgreSQL?
  
   Falls Sie nach dem Namen eines etwaigen Inhabers bzw. nach einem
   allmchtigen Zentralkommittee suchen - sparen Sie sich die Mhe, sowas
   existiert gar nicht. Es gibt zwar das "Core Committee" sowie
   Entwickler, die CVS-Schreibberechtigung haben, jedoch haben diese
   Gruppen eher nur eine administrative Rolle. Das Projekt wird durch die
   Community gesteuert, die aus den Entwicklern sowie natrlich auch den
   Nutzern besteht - jeder kann daran teilnehmen. (Lesen Sie die
   Entwickler-FAQ: http://www.postgresql.org/docs/faqs.FAQ_DEV.html wenn
   Sie an der PostgreSQL-Entwicklung teilnehmen mchten).
   
  1.3) Welchem Copyright unterliegt PostgreSQL?
  
   PostgreSQL wird unter der klassischen BSD-Lizenz herausgegeben. Im
   Grunde genommen erlaubt diese den Nutzern, beliebig mit dem Code
   umzugehen, auch der Weiterverkauf von Binrversionen ohne Quellcode
   ist erlaubt. Die einzige Einschrnkung besteht darin, dass PostgreSQL
   auf keinen Fall fr etwaige Probleme mit der Software haftet. Auerdem
   mu der Copyright- Text in allen Kopien der Software enthalten sein.
   Dies ist der Originaltext der BSD-Lizenz:
   
   PostgreSQL Data Base Management System
   
   Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
   Portions Copyright (c) 1994-6 Regents of the University of California
   
   Permission to use, copy, modify, and distribute this software and its
   documentation for any purpose, without fee, and without a written
   agreement is hereby granted, provided that the above copyright notice
   and this paragraph and the following two paragraphs appear in all
   copies.
   
   IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
   FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
   INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
   ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
   ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   
   THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
   PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
   CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
   UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
   
   Es gilt die Copyright-Klausel im Original!
   
  1.4) Auf welchen Plattformen luft PostgreSQL?
  
   Normalerweise kann PostgreSQL auf jeder modernen UNIX-kompatiblen
   Plattform eingesetzt werden. Diejenigen Plattformen, die bei der
   jeweiligen Versionsfreigabe getestet wurden, sind in den
   Installationsanleitungen aufgelistet.
   
   PostgreSQL luft auch auf Microsoft NT-basierten Betriebssystemen wie
   Windows 2000 SP4, XP und Server 2003. Ein vorgefertigtes
   Installationspaket kann von http://pgfoundry.org/projects/pginstaller
   heruntergeladen werden. DOS-basierte Windows-Versionen (Win95, Win98,
   WinMe) knnen PostgreSQL nur mit Hilfe der Cygwin-Umgebung ausfhren.
   
   Eine Portierung fr Novell Netware 6 gibt es unter
   http://forge.novell.com sowie eine OS/2 (eComStation) version unter
   http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
   SQL&stype=all&sort=type&dir=%2F.
   
  1.5) Woher bekomme ich PostgreSQL?
  
   Per Web-Browser hier: http://www.postgresql.org/ftp/ und per FTP hier:
   ftp://ftp.postgresql.org/pub/.
   
  1.6) Was ist die neueste Version von PostgreSQL?
  
   Die neueste Version von PostgreSQL ist 8.2.5.
   
   Die Freigabe einer neuen Hauptversion erfolgt in der Regel jhrlich,
   kleinere Korrekturversionen alle paar Monaten.
   
  1.7) Wo bekomme ich Support fr PostgreSQL?
  
   Die PostgreSQL-Community bietet Untersttzung per Mailing-Liste. Die
   Web-Seite http://www.postgresql.org/community/lists/ bietet einen
   berblick. Die Listen general und bugs bieten einen guten Einstieg.
   
   Eine deutschsprachige Mailing-Liste gibt es hier:
   http://archives.postgresql.org/pgsql-de-allgemein/.
   
   Der wichtigsten IRC-Channel ist #postgresql auf Freenode
   (irc.freenode.net). Unter UNIX/Linux knnen Sie mit z.B. irc -c
   '#postgresql' "$USER" irc.freenode.net. daran teilnehmen. Auf Freenode
   gibt es einen spanischsprachigen Channel #postgresql-es, einen
   franzsischen, #postgresqlfr sowie einen brasilianischen,
   #postgresql-br . Es gibt auerdem einen PostgreSQL-Channel bei EFNet.
   
   Eine Liste von Unternehmen, die Support fr PostgreSQL auf
   kommerzieller Basis leisten, kann unter
   http://www.postgresql.org/support/professional_support eingesehen
   werden.
   
  1.8) Wie kann ich einen Fehlerbericht abgeben?
  
   Nutzen Sie das Formular unter
   http://www.postgresql.org/support/submitbug. Schauen Sie aber vorher
   unter ftp://ftp.postgresql.org/pub/ nach, ob es mittlerweile eine
   neuere PostgreSQL-Version gibt, in der der Fehler behoben wurde.
   
   Bugs, die ber das Formular bzw. eine der Mailing-Listen
   bekanntgegeben wurden, erhalten typischerweise einer der folgenden
   Reaktionen:
     * es ist kein Bug, der Grund wird benannt
     * es ist ein bereits bekannter Bug, der bereits auf der TODO-Liste
       aufgenommen wurde
     * der Bug wurde in der aktuellen Version behoben
     * der Bug wurde bereits behoben, befindet sich aber noch nicht in
       einer offiziell verffentlichten Version
     * es wird um eingehendere Informationen gebeten, z.B.:
          + Betriebssystem
          + PostgreSQL-Version
          + reproduzierbarer Fallbeispiel
          + Debugging-Information
          + Debugger-Backtrace-Ausgabe
     * der Bug ist neu. Folgendes knnte passieren:
          + ein Patch wird erstellt und in der nchsten Version
            eingebaut;
          + oder der Bug kann nicht sofort behoben werden und wird auf
            die TODO-Liste gesetzt
       
  1.9) Wie erfahre ich von bekannten Bugs oder fehlenden Features?
  
   PostgreSQL untersttzt eine erweiterte Teilmenge von SQL:2003. Siehe
   unsere TODO-Liste unter http://www.postgresql.org/docs/faqs.TODO.html
   fr eine Auflistung der bekannten Bugs, fehlenden Features und
   zuknftigen Plne.
   
   Eine Anfrage nach einem neuen Feature fhrt normalerweise zu einer der
   folgenden Antworten:
     * das Feature ist bereits auf der TODO-Liste
     * das Feature ist nicht wnschenswert, weil:
          + es vorhandene Funktionalitt dupliziert, welche bereits dem
            SQL-Standard folgt
          + es wrde die Komplexitt der Code-Basis erhhen, ohne
            nennenswerte Vorteile zu bringen
          + es wre unsicher bzw. unzuverlssig
     * das neue Feature wird der TODO-Liste hinzugefgt
       
   PostgreSQL verwendet kein Bugtracking-System, da es sich als
   effizienter erwiesen hat, E-Mails direkt zu beantworten und die
   TODO-Liste aktuell zu halten. In der Praxis werden Bugs sehr schnell
   beseitigt, und diejenigen Bugs, die Auswirkungen auf eine groe Anzahl
   von Nutzern haben, werden meist kurzfristig korrigiert. Der einzige
   berblick ber alle nderungen, Verbesserungen und Korrekturen in
   einer PostgreSQL-Version befindet sich in den CVS-Log-Meldungen. Auch
   die Release-Notes listen nicht jede nderung in der Software auf.
   
  1.10) Welche Dokumentation ist fr PostgreSQL verfgbar?
  
   PostgreSQL bietet umfangreiche Dokumentation, darunter ein groes
   Handbuch, man-Pages und einige kleine Testprogramme. Siehe das /doc-
   Verzeichnis. Ausserdem sind alle Handbcher online unter
   http://www.postgresql.org/docs/ verfgbar.
   
   Zwei Bcher zu PostgreSQL sind online verfgbar unter
   http://www.postgresql.org/docs/books/awbook.html und
   http://www.commandprompt.com/ppbook/ .
   
   Eine Liste lieferbarer PostgreSQL-Bcher befindet sich unter
   http://www.postgresql.org/docs/books Diverse technische Artikel
   befinden sich unter http://www.postgresql.org/docs/techdocs .
   
   psql hat einige ntzliche \d-Befehle, um Informationen ber Typen,
   Operatoren, Funktionen, Aggregate, usw. zu zeigen.
   
   Die PostgreSQL-Website enthlt noch mehr Dokumentation.
   
  1.11) Wie kann ich SQL lernen?
  
   Die oben erwhnten PostgreSQL-spezifische Bcher bieten einen guten
   Einstieg. Viele PostgreSQL-Anwender mgen "The Practical SQL Handbook"
   (Bowman et al., Addison Wesley). Andere dagegen mgen "The Complete
   Reference SQL" (Groff et al., McGraw-Hill).
   
   Es gibt ausserdem einige ntzliche Online-Tutorials:
     * http://www.intermedia.net/support/sql/sqltut.shtm
     * http://sqlcourse.com
     * http://www.w3schools.com/sql/default.asp
     * http://mysite.verizon.net/Graeme_Birchall/id1.html
       
  1.12) Wie kann ich im Entwicklerteam mitarbeiten?
  
   Lesen Sie in der Entwickler-FAQ unter
   http://www.postgresql.org/docs/faqs.FAQ_DEV.html nach.
   
  1.13) Wie luft PostgreSQL im Vergleich zu anderen Datenbanksystemen?
  
   Es gibt verschiedene Methoden, Software zu messen: Eigenschaften,
   Performanz, Zuverlssigkeit, Support und Preis.
   
   Eigenschaften
          PostgreSQL besitzt die meisten Eigenschaften - wie
          Transaktionen, Unterabfragen (Subqueries), Trigger, Views,
          referenzielle Integritt bei Fremdschlsseln und verfeinertes
          Locking - die bei groen kommerziellen DBMS vorhanden sind. Es
          bietet auerdem einige anderen Eigenschaften, die diese nicht
          immer haben, wie benutzerbestimmte Typen, Vererbung, Regeln,
          und die Multi-Versionen-Steuerung zum Verringern
          konkurrierender Locks.
          
   Performanz
          Die Performanz von PostgreSQL ist mit der von kommerziellen und
          anderen Open-Source-Datenbanken vergleichbar. In manchen
          Bereichen ist es schneller, in anderen langsamer. In der Regel
          betrgt der Unterschied +/-10%.
          
   Zuverlssigkeit
          Es ist selbstredend, dass ein DBMS wertlos ist, wenn es nicht
          zuverlssig arbeitet. Daher bemhen wir uns, nur streng
          geprften und bestndigen Code freizugeben, der nur ein Minimum
          an Programmfehlern aufweist. Jede Freigabe hat mindestens einen
          Monat Betatest-Phase hinter sich, und unsere Freigabehistorie
          beweist, dass wir stabile und solide Versionen freigeben, die
          im Produktionsbetrieb genutzt werden knnen. Wir glauben, dass
          wir im Vergleich mit anderer Datenbanksoftware vorteilhaft
          dastehen.
          
   Support
          Unsere Mailinglisten bieten die Mglichkeit, gemeinsam mit
          einer groen Gruppe von Entwicklern und Benutzern mgliche
          Probleme zu lsen. Wir knnen nicht immer eine Fehlerbehebung
          garantieren, kommerzielle DBMS tun dies aber auch nicht. Der
          direkte Kontakt zur Entwickler- und Benutzergemeinschaft und
          der Zugriff auf die Handbcher und den Quellcode ermglicht
          einen im Vergleich zu anderen DBMS hherwertigeren Support. Es
          gibt jedoch auch Anbieter von kommerziellen Support-Leistungen
          (siehe FAQ-Punkt 1.7).
          
   Preis
          PostgreSQL ist frei verfgbar, sowohl fr die kommerzielle wie
          auch fr die nicht-kommerzielle Nutzung. Sie knnen den
          PostgreSQL-Code ohne Einschrnkungen (auer denjenigen, die in
          der oben angegebene BSD-artigen Lizenz erwhnt werden) in Ihr
          Produkt integrieren.
          
  1.14) Kommt PostgreSQL mit den Anpassungen der Sommerzeit in verschiedenen
  Lndern klar?
  
   nderungen bei der US-Sommerzeit sind ab PostgreSQL Version 8.0.4
   bercksichtigt. nderungen in Canada und Western Australia sind ab
   8.0.10 bzw. 8.1.6 bercksichtigt. PostgreSQL-Versionen vor 8.0 nutzen
   die Zeitzonendatenbank des Betriebssystems, um die Sommerzeit zu
   berechnen.
   
                        Fragen zu Benutzerprogrammen
                                      
  2.1) Welche Schnittstellen gibt es fr PostgreSQL?
  
   Die PostgreSQL-Installation stellt nur Schnittstellen fr C und
   Embedded C bereit. Alle weitere Schnittstellen sind unabhngige
   Projekte, die einzeln heruntergeladen werden werden mssen. Diese
   Trennung ermglicht individuelle Entwickler-Teams und
   Entwicklungszyklen fr die jeweiligen Projekte.
   
   Einige Programmiersprachen wie PHP haben eine PostgreSQL-
   Schnittstelle bereits eingebaut. Schnittstellen fr Sprachen wie Perl,
   TCL, Python und viele anderen sind unter http://gborg.postgresql.org
   im Bereich Drivers/Interfaces verfgbar sowie per Internet-Suche.
   
  2.2) Wie kann man PostgreSQL in einer Website nutzen?
  
   Eine nette Einfhrung zu datenbank-gesttzten Webseiten kann unter
   http://www.webreview.com (engl.) eingesehen werden.
   
   Fr die Web-Integration ist PHP eine ausgezeichnete Schnittstelle. PHP
   gibt es bei http://www.php.net
   
   Fr komplexere Aufgaben bietet sich die Perl-Schnittstelle mit CGI.pm
   oder mod_perl.
   
  2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle?
  
   Es gibt eine groe Anzahl von GUI-Programmen fr PostgreSQL - sowohl
   kommerziell als auch Open-Source. Eine ausfhrliche Liste befindet
   sich unter http://www.postgresql.org/docs/techdocs.54 .
     _________________________________________________________________
   
                           Administrative Fragen
                                      
  3.1) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql?
  
   Bei der Ausfhrung von configure die Option --prefix mit dem
   Zielverzeichnis angeben.
   
  3.2) Wie regle ich Zugriffe von anderen Rechnern?
  
   PostgreSQL ist standardmig so eingestellt, dass Verbindungen nur vom
   lokalen Rechner ber Unix Domain Sockets bzw. TCP/IP mglich sind.
   Verbindungen von anderen Rechnern werden erst dann ermglicht, wenn
   Sie in der Datei postgresql.conf die Einstellung listen_addresses
   anpassen, in der Datei $PGDATA/pg_hba.conf host-basierte
   Authentifizierung einschalten und den Server neu starten.
   
  3.3) Wie kann ich eine bessere Performanz erreichen?
  
   Es gibt drei groe Bereiche, in denen Performanzverbesserungen erzielt
   werden knnen:
   
   Abfrageoptimierung
          Die Modifizierung von Abfragen kann eine bessere Performanz
          erzielen:
          
          + Erstellung von Indexen, einschliesslich partieller Indexe
            sowie Expressionsindexe
          + Einsatz von COPY anstelle multipler INSERT-Anweisungen
          + Gruppierung von mehreren Abfragen innerhalb einer
            Transaktion, um Aufwand beim Abschluss von Transaktionen
            einzusparen
          + Einsatz von CLUSTER beim Holen von einer groen Anzahl von
            Datenreihen aus einem Index
          + Einsatz von LIMIT, um eine Untermenge der Abfragen-
            ergebnisse zurckzuliefern
          + Einsatz von vorbereiteten Befehlen (prepared queries)
          + Einsatz von ANALYZE, um die Datenbankstatistik fr den
            Abfragenplaner aktuell zu halten
          + Regelmiger Einsatz von VACUUM bzw. pg_autovacuum
          + Bei groen Datenvernderungen die Lschung von Indexen
            
   Server-Konfiguration
          Einige Einstellungen in der Datei postgresql.conf wirken auf
          die Performanz aus. Das Handbuch enthlt unter
          http://www.postgresql.org/docs/current/static/runtime-config.ht
          ml eine komplette Auflistung. Kommentare zu den jeweiligen
          Einstellungen gibt es unter
          http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_co
          nf_e.html und
          http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
          
   Hardware-Auswahl
          Die Auswirkung von Hardware auf Performanz wird unter
          http://momjian.us/main/writings/pgsql/hw_performance/index.html
          und http://www.powerpostgresql.com/PerfList/ erlutert.
          
  3.4) Welche Debugging-Funktionen sind fr PostgreSQL verfgbar?
  
   Unter den Optionen fr die Server-Konfigurierung gibt es zahlreiche
   log_*-Variablen, die die Ausgabe von Abfrage- und Prozessstatistiken
   ermglichen. Diese knnen fr Debugging-Zwecke sowie Performanz-Tests
   sehr ntzlich sein.
   
  3.5) Ich bekomme die Meldung "Sorry, too many clients", wenn ich eine
  Verbindung aufzubauen versuche. Warum?
  
   Ihr System hat die maximal zulssige Anzahl von Datenbankverbindungen
   erreicht (Voreinstellung 100). Sie mssen die maximale Anzahl der
   gleichzeitig ausfhrbaren Backend-Prozesse hochsetzen, indem Sie in
   postgresql.conf den Wert max_connections ndern und den Server
   neustarten.
   
  3.6) Wie wird PostgreSQL aktualisiert?
  
   Allgemeine Informationen zur Aktualisierung von PostgreSQL gibt es auf
   der Seite http://www.postgresql.org/support/versioning. Detaillierte
   technische Informationen gibt es auf der Seite
   http://www.postgresql.org/docs/current/static/install-upgrading.html
   
  3.7) Welche Hardware eignet sich fr den Betrieb mit PostgreSQL?
  
   PostgreSQL luft auf fast jeder Hardware-Kombination. Im PC-Bereich
   gibt es allerdings sehr groe Abweichungen in der Qualitt. Fr einen
   Arbeitsplatz- oder Entwicklungsrechner mag dies nicht so bedeutend
   sein, im Server-Betrieb jedoch lohnt sich auf jeden Fall die
   Investition in teurere Bestandteile (Stichwrter ECC-Speicher, SCSI,
   Hauptplatinen und Netzteile von namhaften Herstellern). Nutzen Sie
   unsere Mailing-Listen, um Hardware-Optionen zu diskutieren.
     _________________________________________________________________
   
                             Fragen zum Betrieb
                                      
  4.1) Wie whle ich per SELECT-Anweisung nur die ersten paar Zeilen bzw. eine
  beliebige Zeile in einer Abfrage aus?
  
   Wenn Sie bei der Ausfhrung der Abfrage die Anzahl der anzufordenden
   Reihen bereits kennen, nutzen Sie LIMIT. Wenn die ORDER BY- Anweisung
   mit einem Index verwendet wird, ist es mglich, dass die gesamte
   Abfrage nicht ausgefhrt werden muss. Wenn Sie die Anzahl der der
   anzufordenden Reihen nicht kennen, verwenden Sie einen Cursor und
   FETCH.
   
   Um eine beliebige Zeile auszuwhlen, nutzen Sie ORDER BY random():
       SELECT spalte
         FROM tabelle
     ORDER BY random()
        LIMIT 1


  4.2) Wie finde ich heraus, welche Tabellen, Indexe, Datenbanken oder Benutzer
  in der Datenbank definiert sind? Wie bekomme ich die von psql verwendeten
  Abfragen?
  
   In psql zeigt der Befehl \dt eine Liste der Datenbanktabellen. Weitere
   psql-Befehle lassen sich mit \? anzeigen. Sie knnen sich die Datei
   pgsql/src/bin/psql/describe.c mit dem Quellcode fr psql ansehen. Sie
   enthlt die SQL-Abfragen, die die Backslash-Kommandos (\) ausfhren.
   Sie knnen psql auch mit der -E Option starten. Danach gibt psql die
   Abfragen aus, die es bei der Ausfhrung der Befehle benutzt. Auerdem
   biete PostgreSQL ein SQL-kompatibles INFORMATION SCHEMA, das
   Metainformation ber die Datenbank zur Verfgung stellt.
   
   Mit psql -l knnen Sie alle Datenbanken anzeigen lassen.
   
   Die Datei pgsql/src/tutorial/syscat.source enthlt auerdem viele
   SELECT- Abfragen, mit deren Hilfe man Information ber die
   Systemtabellen erhalten kann.
   
  4.3) Wie ndere ich den Datentyp einer Spalte?
  
   Ab Version 8.0 kann der Datentyp einer Spalte mit ALTER TABLE ALTER
   COLUMN TYPE gendert werden, sofern der neue Datentyp die Werte des
   alten Datentype aufnehmen kann.
   
   Bei frheren Versionen gehen Sie wie folgt vor:
       BEGIN;
       ALTER TABLE tabelle ADD COLUMN neue_spalte neuer_datentyp;
       UPDATE tabelle SET neue_spalte = CAST(alte_spalte AS neuer_datentyp);
       ALTER TABLE tabelle DROP COLUMN alte_spalte;
       COMMIT;


   Um den Speicherplatz freizugeben, der von der gelschten Spalte
   verwendet wurde, fhren Sie VACUUM FULL aus.
   
  4.4) Was ist die Maximalgre fr eine Zeile, eine Tabelle, eine Datenbank?
  
   Es bestehen folgende Obergrenzen:
    Maximale Gre eine Datenbank?           unbeschrnkt (es existieren
                                               Datenbanken mit 32 TB)
    Maximale Gre einer Tabelle?            32 TB
    Maximale Gre einer Zeile?              400 GB
    Maximale Gre einer Spalte?             1 GB
    Maximale Anzahl von Zeilen in einer Tabelle?
                                             unbeschrnkt
    Maximale Anzahl von Spalten in einer Tabelle?
                                             250-1600 je nach Spaltentyp
    Maximale Anzahl von Indexen fr eine Tabelle?
                                             unbeschrnkt

   Selbstverstndlich sind dies theoretische Werte, die oft durch die
   verfgbaren Platten- und Speicherressourcen beschrnkt werden. Extreme
   Gren knnen zu Leistungseinbuen fhren.
   
   Die maximale Tabellengre von 32 TB bentigt keine
   Large-File-Untersttzung im Betriebssystem. Groe Tabellen werden in
   Dateien mit einer Gre von je 1 GB aufgeteilt, wodurch etwaige
   dateisystem-bedingte Beschrnkungen nicht relevant sind.
   
   Die maximale Tabellengre und die maximale Anzahl von Spalten knnen
   vervierfacht werden, indem man die Default-Blockgre auf 32 KB
   heraufsetzt. Die Tabellengre kann auch durch Tabellenpartitionierung
   vergrert werden.
   
   Eine Einschrnkung ist, dass Indexe nur auf Spalten erstellt werden
   knnen, die bis etwa 2.000 Zeichen gro sind. Um auf grere Spalten
   eine UNIQUE-Constraint setzen zu knnen, nutzen Sie einen funktionalen
   Index mit dem MD5-Hash-Wert der Spalte. Um innerhalb einer groen, mit
   Text belegten Spalte suchen zu knnen, verwenden Sie einen
   Volltext-Index.
   
  4.5) Wieviel Plattenplatz wird bentigt, um die Daten aus einer typischen
  Textdatei abzuspeichern?
  
   Eine PostgreSQL-Datenbank kann beim Abspeichern einer einfachen
   Textdatei bis zu fnfmal mehr Platz gegenber der eigentlichen Gre
   der Datei beanspruchen.
   
   Betrachten wir eine Datei mit 100.000 Zeilen mit einem Integer und
   einer Textbeschreibung pro Zeile. Gehen wir davon aus, dass die
   durchschnittliche Lnge der Textbeschreibung 20 Byte betrgt. Die
   einfache Datei wrde 2,8 MB gro sein. Die Gre der
   PostgreSQL-Datenbankdatei, die diese Daten enthlt, liegt ungefhr bei
   5,2 MB:
    24 Bytes: jeder Zeilenkopf (ungefhr)
   +24 Bytes: ein Integer-Feld und ein Textfeld
   + 4 Bytes: Zeiger auf der Datenseite auf den Tupel
   -----------------------------------------------
    52 Bytes pro Zeile

   Die Gre einer Datenseite in PostgreSQL betrgt 8192 Bytes (8 KB),
   also:
   8192 Bytes pro Seite
   ---------------------   =  146 Zeilen pro Seite (abgerundet)
     52 Bytes pro Zeile

   100.000 Datenzeilen
   ------------------------  =  685 Datenbankseiten (aufgerundet)
       158 Zeilen pro Seite

   633 Datenbankseiten * 8192 Bytes pro Seite  =  5,185,536 bytes (5,2 MB)

   Indexe beanspruchen nicht so viel Platz. Da sie jedoch die Daten
   beinhalten, die sie indizieren, knnen auch sie sehr gro werden.
   
   NULL-Werte werden als Bitmaps gespeichert, wodurch sie sehr wenig
   Platz in Anspruch nehmen.
   
  4.6) Meine Abfragen sind langsam oder benutzen die Indexe nicht. Warum?
  
   Indexe werden nicht automatisch bei jeder Abfrage verwendet. Indexe
   werden nur dann verwendet, wenn die abzufragende Tabelle eine
   bestimmte Gre bersteigt, und die Abfrage nur eine kleine
   Prozentzahl der Tabellenzeilen abfragt. Der Grund hierfr ist der,
   dass die durch einen Index verursachten Festplattenzugriffe manchmal
   lnger dauern wrden als ein einfaches Auslesen aller Tabellenzeilen
   (sequentieller Scan).
   
   Um festzustellen, ob ein Index verwendet werden soll, braucht
   PostgreSQL Statistiken ber die Tabelle. Diese Statistiken werden
   durch die Anweisungen VACUUM ANALYZE bzw. ANALYZE berechnet. Anhand
   der Statistiken kennt der Abfragenoptimierer die Anzahl der
   Tabellenzeilen und kann besser entscheiden, ob Indexe verwendet werden
   sollen. Statistiken sind auch bei der Ermittlung der optimalen
   JOIN-Reihenfolgen und -Methoden wertvoll. Daher sollten diese
   regelmssig durchgefhrt werden, da sich der Inhalt einer Tabelle ja
   auch verndert.
   
   Indexe werden normalerweise nicht in ORDER BY-Abfrage oder in JOINs
   verwendet. Ein sequentieller Scan mit anschlieendem explizitem
   Sortiervorgang ist normalerweise schneller als ein Index-Scan einer
   groen Tabelle. Jedoch wird bei einer Abfrage, in der LIMIT zusammen
   mit ORDER BY verwendet wird, oftmals ein Index verwendet, da nur ein
   kleiner Abschnitt der Tabelle zurckgeliefert wird.
   
   Sollte es danach aussehen, also ob der Optimierer irrtmlich einen
   sequentiellen Scan ausfhrt, fhren Sie SET enable_seqscan TO 'off'
   aus und prfen Sie, ob die Indexabfrage dadurch scheller geworden ist.
   
   Bei der Nutzung von Wildcard-Operatoren wie LIKE oder ~, knnen Indexe
   nur unter bestimmten Umstnden verwendet werden:
     * Das Suchmuster muss sich an Anfang des Strings befinden, d.h.:
          + LIKE-Suchmuster drfen nicht mit % anfangen;
          + ~ (regulre Ausdrcke) mssen mit ^ anfangen.
     * Das Suchmuster darf nicht mit einer Zeichenklasse (z.B. [a-e])
       beginnen.
     * Suchmuster, die Gross- und Kleinschreibung nicht bercksichtigen
       (z.B. ILIKE bzw. ~*), verwenden keine Indexe. Stattdessen knnen
       funktionale Indexe verwendet werden, die im Punkt 4.8 beschrieben
       werden.
     * Die Standard-Locale "C" muss whrend der Datenbank-Initialisierung
       mit initdb verwendet worden sein, da andere locales den
       nchstgrten Wert nicht ermitteln knnen. Es ist allerdings
       mglich, einen besonderen text_pattern_ops-Index fr solche Flle
       zu erstellen.
       
   In Versionen vor 8.0 werden Indexe oft nicht benutzt, wenn die
   jeweiligen Datentypen nicht genau bereinstimmen. Dies gilt besonders
   fr Indexe auf Spalten mit den Datentypen INT2, INT8 und NUMERIC
   
  4.7) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer meine
  Abfrage auswertet?
  
   Vgl. die EXPLAIN Man-Page.
   
  4.8) Wie verfahre ich bei der Suche mit regulren Ausdrcken und bei einer
  Suche, bei der Gro- und Kleinschreibweisen ignoriert werden? Wie verwende
  ich einen Index bei solchen Suchabfragen?
  
   Der Operator ~ wendet einen regulren Ausdruck an und ~* wendet ihn
   an, ohne die Gro- und Kleinschreibung zu beachten. Ebenso beachtet
   LIKE die Gro- und Kleinschreibung, und ILIKE nicht.
   
   Gleichheitsvergleiche, die Gro- und Kleinschreibung ignorieren,
   werden in der Regel so ausgedruckt:
      SELECT *
        FROM tabelle
       WHERE LOWER(spalte) = 'abc'

   Hier wird kein normaler Index benutzt. Legt man hingegen einen
   funktionalen Index an, so wird er auf jeden Fall verwendet:
      CREATE INDEX tabelle_index ON tabelle (LOWER(spalte))

   Falls der obige Index als einen UNIQUE-Index angelegt wird, knnen
   keine Werte in die Spalte eingefgt werden, die sich nur durch ihre
   Gro- und Kleinschreibung unterscheiden. Um Fehler zu vermeiden mu
   ein CHECK-Constraint oder ein Trigger eingesetzt werden.
   
  4.9) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist? Kann nach der
  NULL-Belegung sortiert werden?
  
   Testen Sie die Spalte mit IS NULL bzw. IS NOT NULL.
      SELECT *
        FROM tabelle
       WHERE spalte IS NULL

   Um die Spalte danach zu sortieren, ob sie mit NULL belegt ist oder
   nicht, verwenden Sie die Bedingungen IS NULL bzw. IS NOT NULL in der
   ORDER BY-Klausel. Da Bedingungen, die wahr sind, hher als das
   Gegenteil sortiert werden, bewirkt die folgende Abfrage, dass die
   NULL-Spalten zuerst gelistet werden:
      SELECT *
        FROM tabelle
    ORDER BY (spalte IS NOT NULL)

  4.10) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
  
Typ           interner Name   Bemerkungen
-------------------------------------------------
VARCHAR(n)    varchar         die Gre legt die Maximallnge fest; kein
                              Auffllen mit Leerzeichen
CHAR(n)       bpchar          mit Leerzeichen gefllt bis zur angegebenen Lnge
TEXT          text            keine obere Schranke fr die Lnge
BYTEA         bytea           Bytearray mit variabler Lnge (auch fr
                              '\0'-Bytes geeignet)
"char"        char            1 Zeichen

   Der interne Name kommt vor allem in den Systemkatalogen und in manchen
   Fehlermeldungen vor.
   
   Die ersten vier Typen sind "varlena"-Typen (d.h. die ersten vier Bytes
   geben die Lnge an, gefolgt von den Daten). Daher ist der tatschlich
   belegte Platz immer etwas mehr als die deklarierte Feldgre.
   Allerdings wird unter Umstnden auf diese Datentypen Datenkompression
   durch das TOAST- Verfahren angewendet, womit der tatschlich belegte
   Platz auch geringer als erwartet ausfallen kann.
   
   Fr die Speicherung von Zeichenketten variabler Lnge empfiehlt sich
   VARCHAR(n). Die maximale Lnge eines VARCHAR(n)-Felds wird bei der
   Tabellendefinition festgelegt. TEXT setzt keine Lngengrenze,
   allerdings gibt es eine systembedingte Obergrenze von 1 GB.
   
   CHAR(n) ist geeignet fr die Speicherung von Zeichenketten, die alle
   die gleiche Lnge haben. Bitte beachten Sie, dass CHAR(n) automatisch
   Zeichenketten bis zur definierten Feldlnge mit Leerzeichen ausfllt,
   whrend bei VARCHAR(n) nur die tatschlich eingegebene Zeichenkette
   gespeichert wird.
   
   BYTEA ist fr binre Daten, besonders fr Werte, die NULL-Bytes haben.
   
   Alle der hier erwhnten Typen weisen hnliche Performanzeigenschaften
   auf.
   
  4.11.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhhung des
  Wert?
  
   PostgreSQL bietet einen SERIAL-Datentyp. Dieser erzeugt automatisch
   eine Sequenz auf die angegebene Spalte. Zum Beispiel:
      CREATE TABLE person (
          id   SERIAL,
          name TEXT
      )

   wird automatisch in:
      CREATE SEQUENCE person_id_seq;
      CREATE TABLE person (
        id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
        name TEXT
      );

   umgewandelt.
   
   Die create_sequence Man-Page liefert weitere Informationen ber
   Sequenzen.
   
  4.11.2) Wie bekomme ich den Wert einer SERIAL-Sequenz?
  
   Eine Mglichkeit wre, mit der nextval()-Funktion den nchsten
   SERIAL-Wert von dem Sequenzobjekt vor der Auszufhrung einer
   INSERT-Anweisung anzufordern und ihn dann explizit in die
   INSERT-Anweisung einzubinden. Anhand der Beispieltabelle in 4.11.1
   knnte dieser Vorgang in einer Pseudosprache so aussehen:
    new_id = output of execute("SELECT nextval('person_id_seq')");
    execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");

   Danach stnde der neue Wert in der Variablen new_id fr die Verwendung
   in weiteren Abfragen zur Verfgung, zum Beispiel als Fremdschlssel
   zur Tabelle 'person'). Bitte beachten Sie, dass der Name des
   automatisch erstellten SEQUENCE-Objektes folgenden Name hat:
   table_serialcolumn_seq wobei 'table' und 'serialcolumn' die Namen
   der jeweils betreffenden Tabelle / Spalte darstellen.
   
   Als weitere Mglichkeit knnen Sie nach einer INSERT-Anweisung den
   automatisch eingefgten SERIAL-Wert mit der currval()-Funktion
   zurckgeben lassen:
    execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
    new_id = output of execute("SELECT currval('person_id_seq')");

  4.11.3) Fhrt currval() zu einer Race-Condition mit anderen Nutzern?
  
   Nein. currval() liefert einen Wert zurck, der von Ihrer
   Datenbank-Session bestimmt wird, und der anderen Sessionen nicht zur
   Verfgung steht.
   
  4.11.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch nicht
  zurckgesetzt? Warum gibt es Lcken in der Nummerierung meiner
  Sequenz-/SERIAL-Spalte?
  
   Um die gleichzeitige Abarbeitung von Transaktionen zu verbessern,
   werden Sequenzen gerade nicht fr andere Transaktionen gesperrt,
   sondern die Sequenznummern werden den laufenden Transaktionen sofort
   zugeteilt. Lcken in der Sequenznummerierung werden durch abgebrochene
   Transaktionen verursacht.
   
  4.12) Was ist ein OID? Was ist ein CTID?
  
   Jede Zeile, die in PostgreSQL erzeugt wird, bekommt eine eindeutige
   OID, sofern die Tabelle nicht mit der Option WITHOUT OIDS angelegt
   wurde. OIDs sind automatisch zugewiesene 4-Byte-Integer, die innerhalb
   der gesamten Datenbank einmalig sind. Allerdings laufen sie bei einem
   Wert von ungefhr 4 Milliarden ber. PostgreSQL verwendet OIDs, um
   seine interne Systemtabellen zu verbinden.
   
   Um einmalige Idenfikatoren in Datentabellen zu erstellen, wird
   allerdings empfohlen, statt OIDs Werte zu verwenden, die vonSERIAL-
   Sequenzen erzeugt werden. SERIAL-Sequenzen sind innerhalb einer
   Tabelle einmalig und daher weniger anfllig fr berlufe. Auerdem
   knnen 8-Byte-Sequenzwerte mit SERIAL8 erzeugt werden.
   
   CTIDs werden benutzt, um bestimmte physikalische Zeilen durch Block
   und Offset Werte zu identifizieren. CTIDs verndern sich, sobald
   Zeilen verndert oder zurckgeladen werden. Sie werden in
   Indexeintrgen benutzt um auf die physikalischen Zeilen zu zeigen.
   
  4.13) Wieso bekomme ich einen Fehler: "ERROR: Memory exhausted in
  AllocSetAlloc()"?
  
   Wahrscheinlich gibt es keinen virtuellen Speicher mehr in Ihrem System
   oder Ihr Kernel hat niedrige Hchstgrenzen fr bestimmte Ressourcen.
   Probieren Sie vor dem Start von postmaster folgendes:
      ulimit -d 262144
      limit datasize 256m

   Je nach benutzter Shell wird nur einer dieser Befehle erfolgreich
   ausgefhrt werden. Auf jedem Fall wird die Grenze des Datensegments
   fr Prozesse erhht werden und eventuell die erfolgreiche Ausfhrung
   der Abfrage ermglichen. Falls Sie ein Problem mit dem SQL-CLient
   haben, weil das Backend zu viele Daten zurckliefert, versuchen Sie
   dies vor dem Start des SQL-Clients.
   
  4.14) Wie kann ich feststellen, welche PostgreSQL-Version bei mir luft?
  
   Geben Sie in psql SELECT VERSION(); ein.
   
  4.15) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die
  aktuelle Uhrzeit enthalten soll?
  
   Dazu verwenden Sie CURRENT_TIMESTAMP:
      CREATE TABLE test (x INT, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

  4.16) Wie fhre ich eine OUTER JOIN durch?
  
   PostgreSQL untersttzt OUTER JOINs nach dem SQL- Standardsyntax. Hier
   zwei Beispiele:
      SELECT *
        FROM tabelle_1 t1
             LEFT OUTER JOIN tabelle_2 t2 ON (t1.spalte = t2.spalte)

   bzw.:
      SELECT *
        FROM tabelle_1 t1
             LEFT OUTER JOIN tabelle_2 t2 USING (spalte)

   Diese identischen Abfragen verknpfen tabelle_1 mit tabelle_2 ber die
   Spalte 'spalte' und geben auerdem alle unverknpften Zeilen in
   tabelle_1 (diejenigen, die keine Entsprechung in tabelle_2 haben)
   zurck. Ein RIGHT JOIN wrde hingegen alle unverknpften Zeilen in
   tabelle_2 hinzufgen und ein FULL JOIN wrde alle verknpften Zeilen
   sowie jeweils alle unverknpften Zeilen aus den beiden Tabellen
   zurckliefern. Die Angabe von OUTER ist nicht zwingend und kann in
   LEFT, RIGHT und FULL-Verknpfungen weggelassen werden. Normale
   Verknpfungen sind INNER JOINs.
   
  4.17) Wie kann ich Abfragen ber mehrere Datenbanken hinweg ausfhren?
  
   Es gibt keinen Weg, innerhalb einer Abfrage auf mehr als eine
   Datenbank zuzugreifen. Da PostgreSQL datenbank-spezifische
   Systemkataloge ldt, ist eine datenbankbergreifende Abfrage nicht
   mglich.
   
   contrib/dblink ist eine Erweiterung, die datenbankbergreifende
   Abfragen ber Funktionsaufrufe ermglicht.
   
  4.18) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion zurckgeben
  lassen?
  
   Funktionen knnen mehrere Zeilen und Spalten zurckgeben, vgl.:
   http://www.postgresql.org/docs/techdocs.17.
   
  4.19) Warum bekomme ich eine Fehlermeldung wie "relation with OID ##### does
  not exist" wenn ich temporre Tabellen in PL/PgSQL-Funktionen benutze?
  
   In PostgreSQL-Versionen vor 8.3 verarbeitet PL/PgSQL Funktionen in
   einer Cache. Dies hat eine unangenehme Nebenwirkung, nmlich dass wenn
   eine PL/PgSQL-Funktion auf eine temporre Tabelle zugreift, und diese
   Tabelle anschlieend gelscht bzw. neu erstellt wird, die Funktion
   fehlschlagen wird, da die gecachten Funktionsinhalte noch auf die alte
   temporre Tabelle zeigen. Die Lsung fr diese Probleme besteht darin,
   in der PL/PgSQL- Funktion mittels EXECUTE auf temporre Tabellen
   zuzugreifen. Dies bewirkt, dass bei jedem Funktionsruf die betreffende
   Abfrage neu geparst wird.
   
   Dieses Problem taucht in PostgreSQL 8.3 und spteren Versionen nicht
   mehr auf.
   
  4.20) Welche Replikationslsungen gibt es?
  
   Der Begriff "replikation" umfasst mehrere verschiedene Technologien,
   jede mit eigenen Vor- und Nachteilen.
   
   Mit "Master/slave"-Replikation werden nderungen in einer
   Hauptdatenbank durchgefhrt und an "Sklaven" verteilt, die im
   Nur-Lese-Modus arbeiten. Die populrste Lsung fr PostgreSQL ist
   Slony-I.
   
   "Multi-master replication" ermglicht sowohl lesende als auch
   schreibende Zugriffe ber mehrere Datenbank-Server hinweg. Allerdings
   hat diese Art von Replikation eine negative Auswirkung auf die
   Performanz durch die Notwendigkeit, nderungen zwischen Servern zu
   synchronisieren. Pgcluster ist die populrste freie Lsung fr
   PostgreSQL.
   
   Es gibt auch einige kommerzielle und hardware-basierte
   Replikationslsungen fr verschiedene Arten der Replikation.
   
  4.21) Warum werden die Tabellen- und Spaltennamen in meiner Abfrage nicht
  erkannt? Warum werden Grobuchstaben umgewandelt?
  
   Die hufigste Ursache ist die Verwendung von Gnsefchen bei der
   Anlegung von Tabellen, z.B.:
       CREATE TABLE "Tabelle"
                   ("SPALTE1" INT)

   Dadurch werden Tabellen- und Spaltennamen (sog. Identifikatoren) in
   genau der Schreibweise gespeichert (vgl. Dokumentation), was dazu
   fhrt, dass man sie danach immer in Gnsefchen angeben muss. Im
   obigen Beispiel muss man also immer etwa SELECT * FROM "Tabelle"
   verwenden. Um dieses Problem zu vermeiden, mssen Sie immer eines der
   folgenden Punkte beachten:
     * bei der Tabellenanlegung keine Gnsefchen verwenden;
     * in Identifikatoren nur Kleinschreibung verwenden;
     * immer Identifikatoren mit Gnsefchen versehen
     _________________________________________________________________
   
  Anmerkungen des bersetzers
  
   Die englische Vorlage dieser FAQ wird stndig berarbeitet. Daher
   liegt die bersetzung nicht immer auf dem aktuellsten Stand.
   
   Die aktuellste Version der deutschen bersetzung befindet sich immer
   unter http://sql-info.de/de/postgresql/FAQ_german.html. Diese
   "Arbeitsversion" enthlt eventuell nderungen, die noch nicht auf der
   PostgreSQL-Website eingebunden worden sind.
   
   ber Verbesserungshinweise und Korrekturvorschlge sowie
   Verstndnisfragen zum Inhalt der FAQ freue ich mich. Ich nehme auch
   allgemeine Fragen zu PostgreSQL gerne entgegen, verweise jedoch auf
   die Mailing-Listen als schnelle und zuverlssige Anlaufstellen.
@


1.26
log
@Update copyright for 2009.
@
text
@@


1.26.2.1
log
@Remove translated FAQs

The English FAQ has been moved to the wiki, so the translated versions should
have been removed at that point as well.

The FAQ_MINGW.html should have been removed when the platform FAQs were
integrated into the documentation (or earlier).

applied to both 8.4 and 8.5
@
text
@@


1.25
log
@Update copyrights in source tree to 2008.
@
text
@d151 1
a151 1
   Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
@


1.24
log
@Update German FAQ.

Ian Barwick
@
text
@d151 1
a151 1
   Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
@


1.23
log
@Update URL in German FAQ for bug form, per Schima, Fabian
@
text
@d4 1
a4 1
   Current maintainer: Bruce Momjian (pgman@@candle.pha.pa.us).
d6 1
a6 1
   Deutsche bersetzung von Ian Barwick (barwick@@gmx.net).
d8 2
a9 2
   Letzte Aktualisierung der deutschen bersetzung: So., den 16.1.2005,
   22:30 MEZ
d13 2
a14 4
     * http://www.postgresql.org/files/documentation/faqs/FAQ.html
       (engl.)
     * http://www.postgresql.org/files/documentation/faqs/FAQ_german.html
       (dt.)
d16 1
a16 1
   bersetzungen dieses Dokuments in andere Sprachen sowie plattform-
d24 3
a26 3
   1.2) Welchem Copyright unterliegt PostgreSQL?
   1.3) Auf welchen Unix-Plattformen luft PostgreSQL?
   1.4) Welche Nicht-Unix-Versionen sind verfgbar?
d28 3
a30 3
   1.6) Wo bekomme ich Support fr PostgreSQL?
   1.7) Was ist die neueste Version von PostgreSQL?
   1.8) Welche Dokumentation ist fr PostgreSQL verfgbar?
d32 2
a33 2
   1.10) Wie kann ich SQL lernen?
   1.11) Ist PostgreSQL Y2K (Jahr 2000) fhig?
d35 3
a37 3
   1.13) Wie sende ich einen Fehler-Bericht?
   1.14) Wie luft PostgreSQL im Vergleich zu anderen Datenbanksystemen?
   1.15) Wie kann ich PostgreSQL finanziell untersttzen?
d41 2
a42 3
   2.1) Gibt es ODBC-Treiber fr PostgreSQL?
   2.2) Welche Werkzeuge gibt es, um Web-Seiten mit PostgreSQL zu
   verbinden?
a43 1
   2.4) Welche Programmiersprachen knnen mit PostgreSQL kommunizieren?
d48 4
a51 10
   3.2) Wenn ich den postmaster starte, erhalte ich die Nachricht "Bad
   System Call" bzw. "core dumped". Warum?
   3.3) Wenn ich versuche, den postmaster zu starten, bekomme ich
   "IpcMemoryCreate"-Fehlermeldungen. Warum?
   3.4) Wenn ich versuche, den postmaster zu starten, bekomme ich
   "IpcSemaphoreCreate"-Fehlermeldungen. Warum?
   3.5) Wie regle ich Zugriffe von anderen Rechnern?
   3.6) Wie optimiere ich die Datenbank fr bessere Leistung?
   3.7) Welche Debugging-Funktionen sind bei PostgreSQL verfgbar?
   3.8) Ich bekomme die Meldung "Sorry, too many clients", wenn ich eine
d53 2
a54 4
   3.9) Was befindet sich im Verzeichnis pgsql_tmp/?
   3.10) Warum mu ich bei jeder neuen Hauptversion von PostgreSQL die
   komplette Datenbank exportieren und anschlieend reimportieren?
   3.11) Welche Hardware eignet sich fr den Betrieb mit PostgreSQL?
d58 1
a58 3
   4.1) Worin besteht der Unterschied zwischen Binary Cursors und Normal
   Cursors?
   4.2) Wie whle ich per SELECT-Anweisung nur die ersten paar Zeilen
d60 1
a60 1
   4.3) Wie finde ich heraus, welche Tabellen, Indizes, Datenbanken oder
d63 2
a64 3
   4.4) Wie entferne ich eine Spalte aus einer Tabelle? Wie ndere ich
   den Datentyp einer Spalte?
   4.5) Was ist die Maximalgre fr eine Zeile, eine Tabelle, eine
d66 1
a66 1
   4.6) Wieviel Plattenplatz wird bentigt, um die Daten aus einer
d68 5
a72 6
   4.7) Meine Abfragen sind langsam oder nutzen die Indizes nicht. Warum?
   4.8) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer
   ("GEQO") meine Abfrage auswertet?
   4.9) Was ist ein R-Tree Index?
   4.10) Was ist der "Genetic Query Optimizer"?
   4.11) Wie verfahre ich bei der Suche mit regulren Ausdrcken und bei
d74 4
a77 4
   Wie verwende ich bei solchen Suchabfragen einen Index?
   4.12) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist?
   4.13) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
   4.14.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhhung
d79 3
a81 3
   4.14.2) Wie bekomme ich den Wert einer SERIAL-Sequenz?
   4.14.3) Fhrt currval() zu einer Race-Condition mit anderen Nutzern?
   4.14.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch
d84 2
a85 4
   4.15) Was ist ein OID? Was ist ein TID?
   4.16) Welche Bedeutung haben die verschiedenen Ausdrcke, die in
   PostgreSQL benutzt werden (z.B. attribute, class,...)?
   4.17) Wieso bekomme ich den Fehler: "FATAL: Memory exhausted in
d87 1
a87 1
   4.18) Wie kann ich feststellen, welche PostgreSQL-Version bei mir
d89 1
a89 3
   4.19) Bei "large-object"-Operationen kommt die Fehlermeldung: "invalid
   large obj descriptor". Warum?
   4.20) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die
d91 3
a93 5
   4.21) Warum sind meine Unterabfragen (subqueries), die IN verwenden,
   so langsam?
   4.22) Wie fhre ich einen OUTER JOIN durch?
   4.23) Wie kann ich Abfragen ber mehrere Datenbanken hinweg ausfhren?
   4.24) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion
d95 7
a101 14
   4.25) Warum kann ich temporre Tabellen in PL/PgSQL-Funktionen nicht
   zuverlssig erstellen bzw. lschen?
   4.26) Welche Mglichkeiten zur Verschlsselung gibt es?
   
                            PostgreSQL erweitern
                                      
   5.1) Ich habe eine benutzerdefinierte Funktion geschrieben. Wenn ich
   sie in psql aufrufe, kommt ein core dump. Warum?
   5.2) Wie kann ich praktische neue Typen und Funktionen zu PostgreSQL
   hinzufgen?
   5.3) Wie schreibe ich eine Funktion in C, die einen Tupel
   zurckliefert?
   5.4) Ich habe eine der Quellendateien gendert. Warum macht sich die
   nderung beim erneuten Kompilieren nicht bemerkbar?
d106 2
a107 2
    1.1) Was ist PostgreSQL? Wie wird es ausgesprochen?
    
d110 38
a147 33
   
   PostgreSQL ist eine Weiterentwicklung des POSTGRES-Datenbank-Systems,
   eines zukunftsweisenden DBMS-Forschungsprototyps. Whrend PostgreSQL
   das leistungsfhige Datenmodell und die reichhaltigen Datentypen von
   POSTGRES beibehlt, ersetzt es dessen PostQuel-Abfragesprache durch
   eine erweiterte Teilmenge von SQL. PostgreSQL und dessen kompletter
   Quellcode sind frei und ffentlich verfgbar.
   
   Die PostgreSQL-Entwicklung wird von einem Entwickler-Team
   durchgefhrt, die alle Teilnehmer der
   PostgreSQL-Entwicklungs-Mailingliste sind. Der aktuelle Koordinator
   ist Marc G. Fournier (scrappy@@postgresql.org) (Anmeldemglichkeit:
   siehe unten). Dieses Team ist fr die Gesamtentwicklung von PostgreSQL
   verantwortlich. Es handelt sich um ein Gemeinschaftsprojekt, das nicht
   von einer bestimmten Firma kontrolliert wird. Lesen Sie die
   Entwickler-FAQ: http://www.postgresql.org/docs/faqs/FAQ_DEV.html wenn
   Sie an einer Mitarbeit interessiert sind.
   
   Die Autoren von PostgreSQL 1.01 waren Andrew Yu und Jolly Chen. Viele
   andere haben zur Portierung, zum Testen, zur Fehlersuche und zur
   Verbesserung des Codes beigetragen. Der ursprngliche Postgres-Code,
   von dem PostgreSQL abstammt, ist auf die Arbeit von vielen
   Studierenden und Diplomanden sowie Programmierern zurckzufhren, die
   unter der Leitung des Professors Michael Stonebraker an der
   Universitt von Kalifornien, Berkeley arbeiteten.
   
   Der ursprngliche Name der Software in Berkeley war Postgres. Als die
   SQL-Funktionalitt 1995 hinzugefgt wurde, wurde sein Name zu
   Postgres95 erweitert. Der Name wurde Ende 1996 in PostgreSQL gendert.
   
    1.2).Welchem Copyright unterliegt PostgreSQL?
    
   PostgreSQL unterliegt folgendem COPYRIGHT (Originaltext):
a172 5
   Bei der obigen Lizenz handelt es sich um die BSD-Lizenz, die klassiche
   Open-Source-Lizenz. Sie schrnkt die Verwendung des Quellcodes in
   keine Weise ein. Wir mgen diese Lizenz und haben nicht vor, sie zu
   ndern.
   
d175 2
a176 2
    1.3) Auf welchen Unix-Plattformen luft PostgreSQL?
    
d180 1
a180 1
   Installations- Anleitungen aufgelistet.
d182 5
a186 13
    1.4) Welche Nicht-Unix-Portierungen sind verfgbar?
    
   Ab Version 8.0 luft PostgreSQL auf Microsoft NT-basierten
   Betriebssystemen wie Windows 2000, XP und Server 2003. Ein
   vorgefertigtes Installationspaket (derzeit noch im Beta-Stadium) kann
   von http://pgfoundry.org/projects/pginstaller heruntergeladen werden.
   Einen berblick ber den aktuellen Stand bietet die Win32-FAQ:
   http://pginstaller.projects.postgresql.org/FAQ_windows.html.
   
   Unter Windows 95/98/ME ist es nur mglich, den Datenbankserver mit
   Hilfe der Cygwin-Umgebung (Unix-Portierungsbibliotheken) zu betreiben.
   Weitere Informationen hierzu gibt es in der CYGWIN-FAQ:
   http://www.postgresql.org/docs/faqs/text/FAQ_CYGWIN.
d189 1
a189 3
   http://forge.novell.com.
   
   Fr OS/2 (eComStation) gibt es eine Version hier:
d191 1
a191 1
   SQL&stype=all&sort=type&dir=%2F
d193 27
a219 50
    1.5) Woher bekomme ich PostgreSQL?
    
   Der zentrale FTP-Server fr PostgreSQL ist der ftp-Server
   ftp://ftp.postgresql.org/pub/. Weitere Mirror-Sites sind auf der
   PostgreSQL-Website aufgelistet.
   
    1.6) Wo bekomme ich Support fr PostgreSQL?
    
   Die zentrale (englischsprachige) Mailing-Liste ist:
   mailto:pgsql-general@@postgresql.org .
   
   Die Liste ist Themen vorbehalten, die PostgreSQL betreffen. Die
   Anmeldung erfolgt mit einer Email an die Adresse
   pgsql-general-request@@postgresql.org mit folgenden Zeilen im Text
   (nicht in der Betreffzeile):
    subscribe
    end

   Es gibt auch eine Digest-Liste (eine Liste, die Mails zusammengefasst
   sendet). Um sich an dieser Digest-Liste anzumelden, senden Sie eine
   Email an pgsql-general-digest-request@@postgresql.org mit folgendem
   Text:
    subscribe
    end

   Es gibt noch die Bug-Mailingliste. Die Anmeldung fr diese Liste
   erfolgt durch eine Email an bugs-request@@postgresql.org mit folgendem
   Text:
    subscribe
    end

   Die Entwickler-Mailingliste kann mit einer Email an
   pgsql-hackers-request@@postgresql.org abonniert werden. Die Email mu
   ebenfalls folgenden Text enthalten:
    subscribe
    end

   Eine deutschsprachige Mailing-Liste gibt es ebenfalls:
   http://archives.postgresql.org/pgsql-de-allgemein/; die Liste kann
   hier abonniert werden.
   
   Weitere Mailinglisten und Informationen zu PostgreSQL befinden sich
   auf der PostgreSQL-Homepage:
   
     http://www.postgresql.org
     
   Es gibt auerdem einen IRC-Channel bei EFNet und bei Freenode, Channel
   #PostgreSQL. Unter UNIX/Linux knnen Sie mit z.B. irc -c '#PostgreSQL'
   "$USER" irc.freenode.net. bzw. irc -c '#PostgreSQL' "$USER"
   irc.phoenix.net daran teilnehmen.
d223 2
a224 1
   http://techdocs.postgresql.org/companies.php eingesehen werden.
d226 61
a286 13
    1.7) Was ist die neueste Version von PostgreSQL?
    
   Die neueste Version von PostgreSQL ist 8.0.0 .
   
   Die Freigabe einer neuen Version erfolgt im Schnitt alle 6 bis 8
   Monaten.
   
    1.8) Welche Dokumentation ist fr PostgreSQL verfgbar?
    
   Einige Handbcher, Man-Pages und einige kleine Testprogramme sind in
   der Distribution enthalten. Siehe das /doc-Verzeichnis. Ausserdem sind
   alle Handbcher online unter http://www.postgresql.org/docs/
   verfgbar.
d289 1
a289 1
   http://www.postgresql.org/docs/awbook.html und
d293 2
a294 3
   http://techdocs.postgresql.org/techdocs/bookreviews.php Diverse
   technische Artikel befinden sich unter http://techdocs.postgresql.org/
   .
d299 1
a299 6
    1.9) Wie erfahre ich von bekannten Bugs oder fehlenden Features?
    
   PostgreSQL untersttzt eine erweiterte Teilmenge von SQL-92. Siehe
   unsere TODO-Liste unter http://www.postgresql.org/docs/faqs.TODO.html
   fr eine Auflistung der bekannten Bugs, fehlenden Features und
   zuknftigen Plne.
d301 17
a317 45
    1.10) Wie kann ich SQL lernen?
    
   Das PostgreSQL Book auf http://www.postgresql.org/docs/awbook.html
   bietet eine Einfhrung in SQL. Ein weiteres PostgreSQL-Buch befindet
   sich unter http://www.commandprompt.com/ppbook . Es gibt zudem nette
   Tutorials unter http://www.intermedia.net/support/sql/sqltut.shtm ,
   http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
   und http://sqlcourse.com .
   
   Eine weitere Empfehlung ist "Teach Yourself SQL in 21 Days, Second
   Edition", es ist unter http://members.tripod.com/er4ebus/sql/index.htm
   erhltlich.
   
   Viele PostgreSQL-Anwender mgen "The Practical SQL Handbook" (Bowman
   et al., Addison Wesley). Andere dagegen mgen "The Complete Reference
   SQL" (Groff et al., McGraw-Hill).
   
    1.11) Ist PostgreSQL Y2K (Jahr 2000) fhig?
    
   Ja, wir knnen Datumsangaben nach dem Jahr 2000 n.Chr. und vor 2000
   v.Chr. leicht verarbeiten.
   
    1.12) Wie kann ich im Entwicklerteam mitarbeiten?
    
   Zuerst laden Sie die neuesten Quellen herunter und lesen Sie die
   PostgreSQL-Entwicklerunterlagen auf unserer Website oder in der
   Distribution. Dann melden Sie sich zu den Entwickler-Mailinglisten
   pgsql-hackers und pgsql-patches an. Anschlieend senden Sie qualitativ
   hochwertige Patches an die pgsql-patches Mailingliste.
   
   Es gibt ungefhr ein Dutzend Leute, die das commit-Recht im PostgreSQL
   CVS-Archiv haben. Alle haben derart viele hochwertige Patches
   eingebracht, dass es fr die CVS-Verwalter schwer war, mitzuhalten.
   Und wir hatten Vertrauen, dass die von ihnen festgelegten nderungen
   aller Wahrscheinlichkeit nach von hoher Qualitt sind.
   
    1.13) Wie sende ich einen Fehlerbericht?
    
   Bitte besuchen Sie die PostgreSQL-BugTool-Seite
   http://www.postgresql.org/support/submitbug, die Hinweise und
   Anleitungen zur Einreichung von Fehlerberichten enthlt.
   
   berprfe auch den ftp-Server ftp://ftp.postgresql.org/pub/, um
   nachzusehen, ob es eine neuere PostgreSQL-Version oder neue Patches
   gibt.
d319 2
a320 2
    1.14) Wie luft PostgreSQL im Vergleich zu anderen Datenbanksystemen?
    
d325 8
a332 7
          PostgreSQL besitt die meisten Eigenschaften - wie
          Transaktionen, Unterabfragen (Subqueries), Trigger, Views und
          verfeinertes Locking - die bei groen kommerziellen DBMS
          vorhanden sind. Es bietet auerdem einige anderen
          Eigenschaften, die diese nicht immer haben, wie
          benutzerbestimmte Typen, Vererbung, Regeln, und die
          Multi-Versionen-Steuerung zum Verringern konkurrierender Locks.
d335 4
a338 14
          PostgreSQL weist eine Performanz auf, die mit der von
          kommerziellen und anderen Open-Source-Datenbanken vergleichbar
          ist. In manchen Bereichen ist es schneller, in anderen
          langsamer.
          
          Im Vergleich zu MySQL oder abgespeckten Datenbank-Systemen ist
          PostgreSQL in Lastsituationen - z.B. bei zeitgleichen Zugriffen
          durch mehrere Nutzer, bei komplexen Abfragen oder
          gleichzeitigen Lese- und Schreibzugriffen schneller. MySQL ist
          nur bei einfacheren SELECT-Abfragen mit wenigen Nutzern im
          Vorteil. MySQL besitzt allerdings nur wenige der im Punkt
          "Eigenschaften" genannten Features. PostgreSQL setzt auf
          Zuverlssigkeit und Funktionsumfang, dabei wird selbstredend
          stndig an Performanz-Verbesserungen gearbeitet.
d360 1
a360 1
          (siehe FAQ-Punkt 1.6).
d369 8
a376 28
    1.15) Wie kann ich PostgreSQL finanziell untersttzen?
    
   PostgreSQL hat seit dem Anfang in 1996 eine exzellente Infrastruktur.
   Dies ist Marc Fournier zu verdanken, der sie ber die Jahre hinweg
   geschaffen und gepflegt hat.
   
   Eine hochwertige Infrastruktur ist fr ein Open-Source-Projekt wie
   dieses sehr wichtig. Sie verhindert Probleme und Verzgerungen beim
   Fortschritt des Projekts.
   
   Selbstverstndlich ist diese Infrastruktur nicht billig. Es gibt eine
   Reihe von einmaligen und monatlich anfallenden Kosten, die fr den
   Betrieb beglichen werden mssen. Falls Sie oder Ihre Firma dazu
   finanziell beitragen knnen, besuchen Sie bitte die URL
   http://store.pgsql.com/shopping/ wo Sie eine Spende abgeben knnen.
   
   Obwohl diese Web-Seite das Unternehmen "PostgreSQL, Inc." erwhnt, ist
   der Bereich "contributions" (Beitrge) ausschliesslich fr die
   Untersttzung des PostgreSQL-Projekts da und nicht fr die
   Finanzierung einer bestimmten Firma. Sie knnen auch gerne einen
   finanziellen Beitrag an die Kontaktadresse verschicken.
   
   Eine Mglichkeit der nicht-finanziellen Untetsttzung besteht brigens
   darin, fr http://advocacy.postgresql.org (en.) bzw.
   http://advocacy.postgresql.org/?lang=de (dt.) einen Bericht ber den
   erfolgreichen Einsatz von PostgreSQL in Ihrem Unternehmen oder in
   Ihrer Organisation bereitzustellen.
     _________________________________________________________________
d380 12
a391 17
    2.1) Gibt es ODBC-Treiber fr PostgreSQL?
    
   Es sind zwei ODBC-Treiber verfgbar: PsqlODBC und OpenLink ODBC.
   
   PsqlODBC kann von
   http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
   heruntergeladen werden.
   
   OpenLink ODBC kann unter http://www.openlinksw.com bezogen werden. Die
   Software arbeitet mit dem Standard-ODBC-Client dieser Firma, so dass
   PostgreSQL-ODBC auf jeder Client-Plattform zur Verfgung steht, die
   untersttzt wird (Win, Mac, Unix, VMS).
   
   OpenLink wird dieses Produkt wahrscheinlich an Leute verkaufen, die
   kommerziellen Support bentigen, dennoch wird immer eine
   Freeware-Version verfgbar sein. Fragen dazu bitte an
   postgres95@@openlink.co.uk.
d393 2
a394 2
    2.2) Welche Werkzeuge gibt es, um Web-Seiten mit PostgreSQL zu verbinden?
    
d396 1
a396 1
   http://www.webreview.com (engl.) abgerufen werden.
d404 5
a408 25
    2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle?
    
   Es gibt mehrere grafische Schnittstellen fr PostgreSQL, darunter
   PgAccess ( http://www.pgaccess.org), pgAdmin III
   (http://www.pgadmin.org, RHDB Admin (http://sources.redhat.com/rhdb/ )
   und Rekall ( http://www.thekompany.com/products/rekall/,
   GPL/proprietr). Es gibt auerdem phpPgAdmin (
   http://phppgadmin.sourceforge.net/ ), eine web-basierte Schnittstelle.
   
    2.4) Welche Programmiersprachen und Schnittstellen gibt es?
    
   Die meisten gngigen Programmiersprachen bieten Schnittstellen fr
   PostgreSQL.
   
   Die folgenden Schnittstellen werden mit der PostgreSQL-Distribution
   ausgeliefert:
     * C (libpq)
     * Embedded C (ecpg)
     * Java (jdbc)
     * Python (PyGreSQL)
     * TCL (libpgtcl)
       
   Weitere Schnittstellen fr andere Sprachen knnen ber
   http://gborg.postgresql.org (Bereich Drivers/Interfaces) bezogen
   werden.
d413 2
a414 2
    3.1) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql?
    
d418 2
a419 42
    3.2) Wenn ich den postmaster starte, erhalte ich einen Nachricht "Bad
    System Call" bzw. "core dumped". Wieso?
    
   Das kann verschiedene Ursachen haben. berprfen Sie zuerst, ob Ihr
   Kernel System V Extensions untersttzt. PostgreSQL bentigt
   Kernel-Untersttzung fr Shared Memory und Semaphoren.
   
    3.3) Wenn ich versuche, den postmaster zu starten, bekomme ich
    "IpcMemoryCreate"-Fehlermeldungen. Warum?
    
   Entweder ist Shared Memory in Ihrem Kernel nicht korrekt konfiguriert,
   oder Sie mssen den Shared Memory Bereich vergrern. Die genaue Gre
   hngt von Ihrer Systemarchitektur und von der Anzahl der Puffer und
   Serverprozesse ab, die Sie fr postmaster konfiguriert haben. Bei den
   voreingestellten Werten fr Puffer und Prozesse bentigen Sie bei den
   meisten Systemen ein Minimum von ca. 1 MB. Der "PostgreSQL
   Administrator's Guide"
   (http://www.postgresql.org/docs/current/static/kernel-resources.html)
   enthlt weitere Informationen zu Shared Memory und Semaphores.
   
    3.4) Wenn ich versuche, den postmaster zu starten, bekomme ich
    "IpcSemaphoreCreate"-Fehlermeldungen. Warum?
    
   Falls die Fehlermeldung "IpcSemaphoreCreate: semget failed (No space
   left on device)" lautet, ist Ihr Kernel mit zu wenig Semaphoren
   konfiguriert. PostgreSQL bentigt eine Semaphore pro mglichem
   Backend-Prozess. Eine Zwischenlsung wre, postmaster mit einer
   geringeren Anzahl an Backend-Prozessen zu starten. Benutzen Sie dazu
   die -N Option mit einem kleineren Wert als die standardmigen 32.
   Eine dauerhafte Lsung wre es, die Parameter SEMMNS und SEMMNI Ihres
   Kernels zu erhhen.
   
   Nichtfunktionierende Semaphores knnen auerdem bei hoher
   Datenbanklast zu Abstrzen fhren.
   
   Falls die Fehlermeldung anders aussieht, ist mglicherweise keine
   Semaphoren-Untersttzung in Ihrem Kernel aktiviert. Der "PostgreSQL
   Administrator's Guide" enthlt weitere Informationen zu Shared Memory
   und Semaphores.
   
    3.5) Wie regle ich Zugriffe von anderen Rechnern?
    
d421 68
a488 159
   lokalen Rechner ber Unix Domain Sockets mglich sind. Verbindungen
   von anderen Rechnern ber TCP/IP sind nur mglich, wenn der postmaster
   mit der -i Option gestartet wird und / oder die Option
   listen_addresses (in 7.x-Versionen: tcpip_sockets) in postgresql.conf
   eingeschaltet wird, und die host-basierte Authentifizierung in der
   Datei $PGDATA/pg_hba.conf entsprechend angepasst ist.
   
    3.6) Wie optimiere ich die Datenbank fr bessere Leistung?
    
   Der Einsatz von Indizes sollte auf jeden Fall Abfragen beschleunigen.
   Die Anweisung EXPLAIN ANALYZE zeigt, wie PostgreSQL Abfragen
   interpretiert und welche Indizes benutzt werden.
   
   Wenn Sie eine groe Anzahl von INSERT-Anweisungen durchfhren, sollten
   Sie berlegen, ob die Durchfhrung mit der COPY-Anweisung in Frage
   kommt. Dies funktioniert wesentlich schneller als einzelne
   INSERT-Befehle. SQL-Anweisungen, die sich nicht in einem BEGIN
   WORK/COMMIT Transaktions- Block befinden, werden als eigene
   Transaktionen behandelt. berlegen Sie, ob die Anweisungen nicht in
   einen einzelnen Transaktionsblock zusammen- gefasst werden knnen. Das
   reduziert den Transaktionsaufwand. berlegen Sie auch, bei greren
   Datennderungen Indizes zu lschen und danach wiederherzustellen.
   
   Es gibt verschiedene Tuning-Optionen, die im Handbuch dokumentiert
   sind (Administration Guide/Server Run-time Environment/Run-time
   Configuration). Sie knnen fsync() ausschalten, indem Sie beim Starten
   des postmaster die Optionen -o -F angeben. Das hindert
   fsync()-Operationen daran, nach jeder Transaktion die Daten direkt auf
   die Festplatte zu schreiben.
   
   Sie knnen auch mit der shared_buffers Option des postmaster die
   Anzahl der Shared Memory Puffer fr die Backend-Prozesse erhhen.
   Falls Sie diesen Wert jedoch zu hoch setzen, kann es vorkommen, dass
   der postmaster nicht startet, weil die Obergrenze der
   Speicherzuweisung fr Shared Memory berschritten wird. Jeder Puffer
   ist 8 kB gro, voreingestellt sind 1000 Puffer.
   
   Die sort_mem (ab PostgreSQL 8.0: work_mem)-Optionen des Backends
   knnen benutzt werden, um die Gre des Speicherplatzes fr temporres
   Sortieren zu erhhen. Die Werte werden in Kilobyte gemessen und sind
   standardmig auf 1024 (d.h. 1MB) festgelegt.
   
   Die CLUSTER-Anweisung kann benutzt werden, um Daten in Basistabellen
   zu gruppieren, so dass - um einen schnelleren Zugriff zu erreichen -
   die physikalische Speicherung der Reihenfolge eines der Indexe
   entspricht. Siehe auch die CLUSTER(l) Man-Page fr weitere Details.
   
    3.7) Welche Debugging-Funktionen sind fr PostgreSQL verfgbar?
    
   PostgreSQL hat einige Mglichkeiten, Statusinformationen anzuzeigen,
   die bei der Fehlersuche ntzlich sein knnen.
   
   Wenn Sie PostgreSQL mit dem --enable-cassert Option kompiliert haben,
   verfolgen zahlreiche assert()-Anweisungen den Ablauf des Backends und
   halten das Programm an, wenn etwas Unerwartetes passiert.
   
   Sowohl der postmaster als auch postgres stellen mehrere Debug-Optionen
   zur Verfgung. Zuerst sollten Sie sichergehen, dass Sie die Ausgaben
   ber den Standard-Output und den Standard-Error in eine Datei
   umleiten, wenn Sie den postmaster starten:
      cd /usr/local/pgsql
      ./bin/postmaster >server.log 2>&1 &

   Dadurch wird die Datei server.log im PostgreSQL-Verzeichnis erzeugt.
   Diese Datei enthlt ntzliche Informationen ber Probleme oder Fehler,
   die im Server aufgetreten sind. postmaster hat eine -d Option, die
   noch detailliertere Informationen liefert. Zur -d Option wird eine
   Nummer angegeben, die den Debug-Level - also die Menge der berichteten
   Information - angibt. Achtung, hohe Debug-Levels erzeugen schnell
   groe Logdateien!
   
   Wenn der postmaster nicht luft, knnen Sie das postgres-Backend sogar
   von der Befehlszeile ausfhren und eine SQL-Anweisung direkt eingeben.
   Dies ist allerdings nur fr Debugging-Zwecke zu empfehlen. Beachten
   Sie, dass hierbei ein Zeilenumbruch, und nicht - wie sonst blich -
   das Semikolon die SQL-Anweisung beendet. Falls Sie PostgreSQL mit
   Debugging-Symbolen kompiliert haben, knnen Sie mit einem Debugger
   sehen, was passiert. Da das Backend jedoch nicht vom postmaster
   gestartet wurde, luft es nicht in der gleichen Umgebung und deshalb
   knnen einige locking-Vorgnge sowie die Kommunikation zwischen den
   Backends nicht reproduziert werden.
   
   Wenn der postmaster hingegen luft, fhren Sie psql in einem Fenster
   aus, ermitteln Sie die Prozessnummer (PID) des postgres-Prozesses, der
   von psql verwendet wird (mit SELECT pg_backend_pid()). Binden Sie
   einen Debugger an diese PID und fhren Sie Abfragen von psql aus. Wenn
   Sie den postgres-Serverstart analysieren wollen, setzen Sie die
   Umgebungsvariable PGOPTIONS="-W n", und starten Sie dann psql. Dies
   verzgert den Start um n Sekunden, damit Sie einen Debugger an den
   Prozess binden und ggf. Breakpoints setzen knnen, bevor die
   Startsequenz begonnen wird.
   
   Es gibt verschiedene Einstellungen (die log_*-Gruppe), die diverse
   Server-Statistik ausgeben und daher bei der Fehlersuche und
   Performanzmessung sehr ntzlich sein knnen.
   
   Sie knnen die Anwendung auch mit Profiling kompilieren, um zu sehen,
   welche Funktionen wieviel Ausfhrungszeit beanspruchen. Das Backend
   Profil wird im Verzeichnis pgsql/data/base/dbname abgelegt. Das
   Client-Profil wird in das aktuelle Verzeichnis abgelegt. Bitte
   beachtern Sie, dass unter Linux PostgreSQL mit der Option
   -DLINUX_PROFILE kompiliert werden mu, um Profiling nutzen zu knnen.
   
    3.8) Ich bekomme die Meldung "Sorry, too many clients", wenn ich eine
    Verbindung aufzubauen versuche. Warum?
    
   Sie mssen die maximale Anzahl der gleichzeitig ausfhrbaren Backend-
   Prozesse hochsetzen.
   
   Die Voreinstellung erlaubt 32 Prozesse. Sie knnen diese erhhen,
   indem Sie den postmaster mit einem entsprechenden -N Parameter starten
   bzw. die Konfigurationsdatei postgresql.conf anpassen.
   
   Bitte beachten Sie, dass Sie auch -B auf ein Wert grer als die
   Voreinstellung von 64 setzen mssen, wenn Sie -N auf einen Wert hher
   als 32 setzen; -B muss mindestens das Doppelte von -N betragen, und
   einer besseren Performanz wegen sollte der Wert noch hher sein. Bei
   einer hohen Anzahl von Backend-Prozessen kann es vorkommen, dass Sie
   einige Unix-Kernel- Parameter ebenfalls erhhen mssen. Folgende
   Parameter sind zu berprfen: die Maximalgre der Shared Memory
   Blocks SHMMAX; die Maximalanzahl der Semaphoren SEMMNS und SEMMNI; die
   maximale Anzahl von Prozessen NPROC; die maximale Anzahl von Prozessen
   pro User MAXUPRC; und die Maximalzahl der geffneten Dateien NFILE und
   NINODE. Durch die Begrenzung der Anzahl erlaubter Backend-Prozesse
   wird verhindert, dass System-Ressourcen durch PostgreSQL aufgebraucht
   werden.
   
    3.9) Was befindet sich im Verzeichnis pgsql_tmp/?
    
   Dieses Verzeichnis enthlt temporre Dateien, die durch den query
   executor erzeugt werden. Wenn zum Beispiel eine Sortierung
   durchgefhrt werden mu, um ein ORDER BY auszufhren, und diese
   Sortierung mehr Hauptspeicher bentigt, als mit dem Backend-Parameter
   -S erlaubt wurde, dann werden diese Dateien erzeugt, um die Daten dort
   zu auszulagern.
   
   Die temporren Dateien sollten automatisch gelscht werden. Falls das
   Backend jedoch whrend einer Sortierung abstrzen sollte, bleiben sie
   erhalten. Nach einem Neustart des postmaster werden sie dann aber
   wieder automatisch gelscht.
   
    3.10) Warum mu ich bei jeder neuen Hauptversion von PostgreSQL die
    komplette Datenbank exportieren und anschlieend reimportieren?
    
   Zwischen "kleinen" PostgreSQL-Versionsnderungen (z.B. zwischen 7.2
   und 7.2.1) werden keine strukturellen nderungen durchgefhrt, wodurch
   ein erneutes Aus- und Einlesen der Daten nicht erforderlich ist.
   Allerdings wird bei "groen" Versionsnderungen (z.B. zwischen 7.2 und
   7.3) oft das interne Format der Systemtabellen und Datendateien
   angepasst. Diese nderungen sind oft sehr komplex, wodurch die
   Rckwrtskompatibilitt der Datendateien nicht gewhrleistet werden
   kann. Durch das Exportieren werden die Daten in einem generischen
   Format ausgegeben, wodurch die Importierung in das neue interne Format
   ermglicht wird.
   
   Bei Upgrades, bei denen keine Formatnderungen stattgefunden haben,
   kann das pg_upgrade-Skript benutzt werden, um die Daten ohne Aus- und
   Einlesen zu bertragen. Die jeweilige Dokumentation gibt an, ob fr
   die betreffende Version pg_upgrade verfgbar ist.
d490 2
a491 2
    3.11) Welche Hardware eignet sich fr den Betrieb mit PostgreSQL?
    
d497 2
a498 1
   Hauptplatinen und Netzteile von namhaften Herstellern).
d503 9
a511 20
    4.1) Worin besteht der Unterschied zwischen Binary Cursors und Normal
    Cursors?
    
   Vgl. die DECLARE Man-Page fr eine Beschreibung.
   
    4.2) Wie whle ich per SELECT-Anweisung nur die ersten paar Zeilen bzw.
    eine beliebige Zeile in einer Abfrage aus?
    
   Vgl. die FETCH Man-Page, oder benutzen Sie SELECT ... LIMIT... .
   
   Selbst wenn Sie nur die ersten paar Zeilen einer Tabelle abfragen
   mchten, mu unter Umstnden die komplette Abfrage abgearbeitet
   werden. Ziehen Sie also mglichst eine Abfrage in Erwgung, die eine
   ORDER BY-Anweisung benutzt, welche wiederum auf indizierte Spalten
   verweist. In diesem Fall kann PostgreSQL direkt nach den gewnschten
   Zeilen suchen und braucht nicht jede mgliche Ergebniszeile
   abzuarbeiten.
   
   Bitte beachten Sie, dass mit PostgreSQL 7.3 die Syntax LIMIT n, m
   durch LIMIT n OFFSET m ersetzt wurde.
d520 4
a523 4
    4.3) Wie finde ich heraus, welche Tabellen, Indizes, Datenbanken oder
    Benutzer in der Datenbank definiert sind? Wie bekomme ich die von psql
    verwendeten Abfragen?
    
d533 2
d539 7
a545 16
    4.4) Wie entferne ich eine Spalte aus einer Tabelle? Wie ndere ich den
    Datentyp einer Spalte?
    
   Der Syntax ALTER TABLE DROP COLUMN wird ab PostgreSQL 7.3 untersttzt.
   
   Bei frheren Versionen bietet das folgende Verfahren Ersatz:
      BEGIN;
      LOCK TABLE old_table;
      SELECT ...  -- alle auer der zu entfernenden Spalte hier auswhlen
        INTO TABLE new_table
        FROM old_table;
      DROP TABLE old_table;
      ALTER TABLE new_table RENAME TO old_table;
      COMMIT;

   Um den Datentyp einer Spalte zu ndern, gehen Sie wie folgt vor:
d556 2
a557 2
    4.5) Was ist die Maximalgre fr eine Zeile, eine Tabelle, eine Datenbank?
    
d562 1
a562 1
    Maximale Gre einer Zeile?              1,6 TB
d568 1
a568 1
    Maximale Anzahl von Indizies fr eine Tabelle?
d582 2
a583 1
   heraufsetzt.
d585 10
a594 3
    4.6) Wieviel Plattenplatz wird bentigt, um die Daten aus einer typischen
    Textdatei abzuspeichern?
    
d604 2
a605 2
   6,4 MB:
    32 Bytes: jeder Zeilenkopf (ungefhr)
d609 1
a609 1
    60 Bytes pro Zeile
d614 2
a615 2
   ---------------------   =  136 Zeilen pro Seite (abgerundet)
     64 Bytes pro Zeile
d618 2
a619 2
   ------------------------  =  735 Datenbankseiten (aufgerundet)
       128 Zeilen pro Seite
d621 1
a621 1
   735 Datenbankseiten * 8192 Bytes pro Seite  =  6.021.120 Byte (6 MB)
d623 1
a623 1
   Indizes beanspruchen nicht so viel Platz. Da sie jedoch die Daten
d629 3
a631 3
    4.7) Meine Abfragen sind langsam oder benutzen die Indizes nicht. Warum?
    
   Indizes werden nicht automatisch bei jeder Abfrage verwendet. Indizes
d643 2
a644 2
   Tabellenzeilen und kann besser entscheiden, ob Indizes verwendet
   werden sollen. Statistiken sind auch bei der Ermittlung der optimalen
d647 1
a647 1
   auch verndert
d649 1
a649 5
   In Versionen vor 8.0 werden Indizes oft nicht benutzt, wenn die
   jeweiligen Datentypen nicht genau bereinstimmen. Dies gilt besonders
   fr Spalten mit numerischen und Integer-Werten.
   
   Indizes werden normalerweise nicht in ORDER BY-Abfrage oder in JOINs
d654 1
a654 9
   kleiner Abschnitt der Tabelle zurckgeliefert wird. Dadurch wird es
   auch mglich, die Minimal- und Maximalwerte einer Abfrage unter
   Verwendung von Indizes zu ermitteln:
       SELECT spalte
         FROM tabelle
     ORDER BY spalte [ DESC ]
        LIMIT 1

   (Die Aggregatfunktionen MIN() und MAX() verwenden keine Indizes).
d660 2
a661 2
   Bei der Nutzung von Wildcard-Operatoren wie LIKE oder ~, knnen
   Indizes nur unter bestimmten Umstnden verwendet werden:
d667 9
d677 3
a679 4
   Suchmuster, die Gross- und Kleinschreibung nicht bercksichtigen (z.B.
   ILIKE bzw. ~*), verwenden keine Indizes. Stattdessen knnen
   funktionale Indizes verwendet werden, die im Punkt 4.12 beschrieben
   werden.
d681 3
a683 8
   Die Standard-Locale "C" muss whrend der Datenbank-Initialisierung mit
   initdb verwendet worden sein, da andere locales den nchstgrten Wert
   nicht ermitteln knnen. Es ist allerdings mglich, einen besonderen
   text_pattern_ops-Index fr solche Flle zu erstellen.
   
    4.8) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer meine
    Abfrage auswertet?
    
d686 4
a689 38
    4.9) Was ist ein R-Tree Index?
    
   Ein R-Tree Index wird benutzt, um rumliche Daten zu indizieren. Ein
   Hash-Index kann nicht fr Bereichssuchen genutzt werden. Ein B-Tree
   Index kann nur fr Bereichssuchen in eindimensionalen Daten genutzt
   werden. R-Trees knnen hingegen auch mit multi-dimensionalen Daten
   umgehen. Ein Beispiel: Wenn ein R-Tree Index auf ein Attribut vom Typ
   POINT gebildet wird, dann kann das System Abfragen wie z.B. "Zeige
   alle Punkte, die sich in einem umgebenden Rechteck befinden"
   effizienter beantworten.
   
   Die kanonische Verffentlichung, die das originale R-Tree Design
   beschreibt, ist:
   
   Guttman, A. "R-Trees: A Dynamic Index Structure for Spatial
   Searching." Proc of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data,
   45-57.
   
   Sie knnen dieses Werk auch in Stonebrakers "Readings in Database
   Systems" finden.
   
   Die eingebauten R-Trees knnen Polygone und Rechtecke verarbeiten.
   Theoretisch knnen R-Trees auf eine hohe Anzahl von Dimensionen
   erweitert werden. Fr die Praxis bedeutet eine solche Erweiterung
   allerdings eine Menge Arbeit und wir haben derzeit keinerlei
   Dokumentation darber, wie das zu machen wre.
   
    4.10) Was ist der "Genetic Query Optimizer"?
    
   Das GEQO-Modul in PostgreSQL soll dazu dienen, das Optimierungsproblem
   beim JOIN von vielen Tabellen auf der Basis genetischer Algorithmen
   (GA) zu lsen. Es ermglicht die Behandlung von groen JOIN-Queries
   durch eine nicht-erschpfende Suche.
   
    4.11) Wie verfahre ich bei der Suche mit regulren Ausdrcken und bei einer
    Suche, bei der Gro- und Kleinschreibweisen ignoriert werden? Wie verwende
    ich einen Index bei solchen Suchabfragen?
    
d700 1
a700 1
   Hier kann kein normaler Index benutzt werden. Legt man hingegen einen
d704 8
a711 2
    4.12) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist?
    
d713 15
a727 3
   
    4.13) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
    
d764 3
a766 3
    4.14.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhhung des
    Werts (serial/auto-increment)?
    
d784 1
a784 4
   Sequenzen. Es ist auch mglich, den OID-Wert jeder Spalte als
   einmaligen Wert einzusetzen. Sollten Sie allerdings die Datenbank
   exportieren und reimportieren wollen, mssen Sie die Option -o von
   pg_dump bzw. COPY WITH OIDS verwenden, um die OIDs beizubehalten.
d786 2
a787 2
    4.14.2) Wie bekomme ich den Wert einer SERIAL-Sequenz?
    
d791 1
a791 1
   INSERT-Anweisung einzubinden. Anhand der Beispieltabelle in 4.14.1
d800 1
a800 1
   <table>_<serialcolumn>_seq wobei 'table' und 'serialcolumn' die Namen
d809 10
a818 20
   Schlielich besteht noch die Mglichkeit, den von einer
   INSERT-Anweisung zurckgelieferten OID-Wert als einmaligen Wert zu
   verwenden. Dieser Ansatz ist allerdings PostgreSQL-spezifisch;
   auerdem wird nach ca. 4 Milliarden Eintrgen der OID-Wert wieder auf
   eine kleine Zahl gesetzt, ist also nicht garantiert immer einmalig
   oder aufsteigend.
   
   Mit zum Beispiel dem DBD::Pg-Modul von Perl wird der OID-Wert nach
   einem $sth->excute() ber $sth->{pg_oid_status} zurckgeliefert.
   
    4.14.3) Fhren currval() und nextval() zu einer Race-Condition mit anderen
    Nutzern?
    
   Nein. currval() liefert einen Wert zurck, der von Ihrem Backend
   bestimmt wird, und der anderen Benutzern nicht zur Verfgung steht.
   
    4.14.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch nicht
    zurckgesetzt? Warum gibt es Lcken in der Nummerierung meiner
    Sequenz-/SERIAL-Spalte?
    
d825 23
a847 58
    4.15) Was ist ein OID? Was ist ein TID?
    
   OIDs sind PostgreSQLs Antwort auf eindeutige Zeilen-IDs. Jede Zeile,
   die in PostgreSQL erzeugt wird, bekommt eine eindeutige OID. Alle
   OIDs, die durch initdb erzeugt werden, sind kleiner als 16384 (siehe
   include/access/transam.h). Alle OIDs, die durch den Benutzer erzeugt
   werden, sind grer oder gleich diesem Wert. Standardmig sind all
   OIDs nicht nur innerhalb einer Tabelle oder Datenbank, sondern in der
   gesamten PostgreSQL-Installation einmalig.
   
   PostgreSQL benutzt OIDs in seinen internen Systemtabellen, um Zeilen
   in JOINs zwischen Tabellen zu verknpfen. Es ist mglich, einen Index
   fr die OID-Spalte zu erstellen, wodurch schnellere Zugriffszeiten
   erreicht werden knnen. Es wird empfohlen, OID-Werte in Spalten vom
   Typ OID zu speichern.
   
   OIDs werden allen neuen Zeilen von einem zentralen Bereich, der von
   allen Datenbanken genutzt wird, zugewiesen. Nichts hindert Sie daran,
   die OID zu ndern, oder eine Kopie der Tabelle mit den originalen OIDs
   anzulegen:
        CREATE TABLE new_table(mycol int);
        SELECT oid AS old_oid, mycol INTO tmp_table FROM old_table;
        COPY tmp_table TO '/tmp/pgtable';
        COPY new_table WITH OIDS FROM '/tmp/pgtable';
        DROP TABLE tmp_table;

   OIDs werden als 4-Byte Integer gespeichert und laufen bei einem Wert
   von ungefhr 4 Milliarden ber. Niemand hat jemals davon berichtet,
   dass dies passiert wre aber wir haben geplant, diese Beschrnkung
   aufzuheben, bevor das jemand ausprobieren kann.
   
   TIDs werden benutzt, um bestimmte physikalische Zeilen durch Block und
   Offset Werte zu identifizieren. TIDs verndern sich, sobald Zeilen
   verndert oder zurckgeladen werden. Sie werden in Indexeintrgen
   benutzt um auf die physikalischen Zeilen zu zeigen.
   
    4.16) Welche Bedeutung haben die verschiedenen Ausdrcke, die in PostgreSQL
    benutzt werden (z.B. attribute, class,...)?
    
   Einige der Quelltexte und die ltere Dokumentation nutzen allgemeine
   Begriffe. Hier sind einige aufgefhrt:
     * row, record, tuple
     * attribute, field, column
     * table, class
     * retrieve, SELECT
     * replace, UPDATE
     * append, INSERT
     * OID, serial value
     * portal, cursor
     * range variable, table name, table alias
       
   Eine allgemeine Liste der Datenbank-Terminologie erhalten Sie hier:
   http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
   /glossary.html (engl.).
   
    4.17) Wieso bekomme ich einen Fehler: "ERROR: Memory exhausted in
    AllocSetAlloc()"?
    
d861 2
a862 2
    4.18) Wie kann ich feststellen, welche PostgreSQL-Version bei mir luft?
    
d865 3
a867 19
    4.19) Bei "large-object"-Operationen kommt die Fehlermeldung: "invalid
    large obj descriptor". Warum?
    
   Sie sollten die Anweisungen BEGIN WORK und COMMIT bei jeden Gebrauch
   von Large Objects benutzen. Also um lo_open ... lo_close.
   
   Derzeit erzwingt PostgreSQL diese Regel, indem es die Handles der
   Large Objects beim COMMIT der Transaktion schliet. So fhrt der erste
   Versuch, etwas mit dem Large Object zu machen, zu einer Meldung
   "invalid large obj descriptor". Solange Sie keine Transaktionen
   benutzen, wird der Code, der in lteren PostgreSQL-Versionen
   funktionierte, nun diese Fehlermeldung erzeugen.
   
   Falls Sie eine Client-Schnittstelle wie ODBC benutzen, kann es sein,
   dass die auto-commit-Option ausgeschaltet werden muss.
   
    4.20) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die
    aktuelle Uhrzeit enthalten soll?
    
d869 1
a869 12
      CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );

    4.21) Warum sind meine Unterabfragen (subqueries), die IN verwenden, so
    langsam?
    
   In Versionen vor 7.4 werden Unterabfragen mit der usseren Abfrage
   verbunden, in dem fr jede Reihe der usseren Query die Ergebnisse der
   Unterabfrage sequentiell geprft werden. Um dies zu vermeiden, kann
   man IN durch EXISTS ersetzen, z.B.:
      SELECT *
        FROM tabelle_1
       WHERE spalte1 IN (SELECT spalte2 FROM tabelle_2)
d871 4
a874 14
   ersetzen durch:
      SELECT *
        FROM tabelle_1
       WHERE EXISTS (SELECT spalte2 FROM tabelle_2 WHERE spalte1 = spalte2)

   Damit diese Abfrage effizient durchgefhrt wird, sollte fr 'spalte2'
   ein Index angelegt worden sein. Ab PostgreSQL 7.4 verwendet IN die
   gleichen Methoden wie die normale Tabellenverknpfung und ist daher
   soger EXISTS vorzuziehen.
   
    4.22) Wie fhre ich einen OUTER JOIN durch?
    
   PostgreSQL ab der Version 7.1 untersttzt OUTER JOINs nach dem SQL-
   Standardsyntax. Hier zwei Beispiele:
d894 2
a895 14
   In frheren Versionen von PostgreSQL konnten OUTER JOINs mittels UNION
   und NOT IN simuliert werden. Zum Beispiel 'tabelle_1' und 'tabelle_2'
   knnen als LEFT OUTER JOIN auch so verknpft werden:
      SELECT t1.spalte1, t2.spalte2
        FROM tabelle_1 t1, tabelle_2 t2
       WHERE t1.spalte1 = t2.spalte1
       UNION ALL
      SELECT t1.spalte1, NULL
        FROM tabelle_1 t1
       WHERE t1.spalte1 NOT IN (SELECT t2.spalte1 FROM tabelle_2 t2)
       ORDER BY spalte1

    4.23) Wie kann ich Abfragen ber mehrere Datenbanken hinweg ausfhren?
    
d904 13
a916 22
   Es ist natrlich mglich, dass eine Client-Anwendung gleichzeitige
   Verbindungen zu verschiedenen Datenbanken aufbaut und selber
   Datenstze zusammenfgt.
   
   Ab 7.3 untersttzt PostgreSQL schemas, die die Aufteilung einer
   Datenbank in mehrere logische Bereiche ermglichen. Bei vielen
   Anwendungen knnten diese einen geeigneten Ersatz fr den Zugriff auf
   eine andere Datenbank bieten.
   
    4.24) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion
    zurckgeben lassen?
    
   Ab 7.3 knnen Funktionen mehrere Zeilen und Spalten zurckgeben, vgl.:
   http://techdocs.postgresql.org/guides/SetReturningFunctions.
   
    4.25) Warum kann ich temporre Tabellen in PL/PgSQL-Funktionen nicht
    zuverlssig erstellen bzw. lschen?
    
   PL/PgSQL verarbeitet die Inhalte einer Funktion in eine Cache. Dies
   hat eine unangenehme Nebenwirkung, nmlich dass wenn eine PL/PgSQL-
   Funktion auf eine temporre Tabelle zugreift, und diese Tabelle
   anschlieend gelscht bzw. neu erstellt wird, die Funktion
d918 24
a941 1
   temporre Tabelle zeigen.
d943 2
a944 23
   Die Lsung fr diese Probleme besteht darin, in der PL/PgSQL Funktion
   mittels EXECUTE auf temporre Tabellen zuzugreifen. Diese bewirkt,
   dass bei jedem Funktionsruf die betreffende Abfrage neu geparst wird.
   
    4.26) Welche Mglichkeiten zur Verschlsselung gibt es?
    
     * contrib/pgcrypto enthlt diverse Funktionen fr die Bentzung mit
       SQL-Abfragen.
     * Um Verbindungen zwischen dem Server und Client-Anwendungen zu
       verschlsseln, muss in der Server-Konfigurationsdatei
       postgresql.conf die ssl-Option auf true (Voreinstellung: false)
       gesetzt werden und ein passender host- bzw. hostssl-Eintrag muss
       in pg_hba.conf vorhanden sein. Zudem muss die sslmode-Einstellung
       beim Client nicht auf disable gesetzt werden. (Bitte beachten Sie
       auch, da neben der eingebauten SSL-Untersttzung verschlsselte
       Verbindungen auch ber externe Anwendungen wie stunnel oder ssh
       aufgebaut werden knnen).
     * Die Passwrter der Datenbanknutzer werden ab Version 7.3
       automatisch verschlsselt (in frheren Versionen mu der Parameter
       PASSWORD_ENCRYPTION in postgresql.conf explizit eingeschaltet
       werden).
     * Betrieb des Servers auf einem verschlsselten Dateisystem.
     _________________________________________________________________
d946 17
a962 30
                            PostgreSQL erweitern
                                      
    5.1) Ich habe eine benutzerdefinierte Funktion geschrieben. Wenn ich sie in
    psql aufrufe, kommt ein core dump. Warum?
    
   Dieses Problem kann viele Ursachen haben. Testen Sie Ihre Funktion
   zuerst in einem eigenen Testprogramm.
   
    5.2) Wie kann ich praktische neue Typen und Funktionen zu PostgreSQL
    hinzufgen?
    
   Senden Sie Ihre Beitrge an die Mailing Liste pgsql-hackers, und sie
   werden nach Prfung eventuell ins contrib/ Verzeichnis des Quellcodes
   aufgenommen werden.
   
    5.3) Wie schreibe ich eine Funktion in C, die einen Tupel zurckliefert?
    
   Ab PostgreSQL 7.3 werden Funktionen, die Tupel zurckliefern, in C,
   PL/PgSQL und SQL untersttzt. Der Programmer's Guide enthlt weitere
   Informationen dazu. Ein Bespiel einer solchen Funktion befindet sich
   in contrib/tablefunc.
   
    5.4) Ich habe eine der Quellendateien gendert. Warum macht sich die
    nderung beim erneuten Kompilieren nicht bemerkbar?
    
   Die Makefiles enthalten nicht die richtigen Abhngigkeiten fr
   include- Dateien. Sie mssen ein "make clean" und dann ein weiteres
   "make" ausfhren. Wenn Sie gcc benutzen, knnen Sie die
   "--enable-depend"-Option des configure- Skripts benutzen, damit der
   Compiler die Abhngigkeiten automatisch ermittelt.
d965 2
a966 2
    Anmerkungen des bersetzers
    
@


1.22
log
@Update CVS HEAD for 2007 copyright.  Back branches are typically not
back-stamped for this.
@
text
@d359 2
a360 2
   http://www.postgresql.org/bugform.html, die Hinweise und Anleitungen
   zur Einreichung von Fehlerberichten enthlt.
@


1.21
log
@Update copyright for 2006.  Update scripts.
@
text
@d175 1
a175 1
   Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
@


1.21.2.1
log
@Backpatch FAQs to stable branch.
@
text
@d175 1
a175 1
   Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
@


1.21.2.2
log
@Stamp releases 8.2.4, 8.1.9, 8.0.13, 7.4.17, 7.3.19.
@
text
@d359 2
a360 2
   http://www.postgresql.org/support/submitbug, die Hinweise und
   Anleitungen zur Einreichung von Fehlerberichten enthlt.
@


1.20
log
@Update FAQ URLs.

Robert Treat
@
text
@d175 1
a175 1
   Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
@


1.20.2.1
log
@Update AIX FAQ to show readline options more clearly.

Backpatch FAQ's to 8.1.X.
@
text
@d175 1
a175 1
   Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
@


1.19
log
@Here's the patch to fix a lot of markup errors in the HTML FAQs. Doesn't
change content (at least not supposed to).

Magnus Hagander
@
text
@d316 3
a318 3
   unsere TODO-Liste unter http://developer.postgresql.org/todo.php fr
   eine Auflistung der bekannten Bugs, fehlenden Features und zuknftigen
   Plne.
@


1.18
log
@Update German FAQ.

Ian Barwick
@
text
@d646 6
a651 8
   von psql verwendet wird (mit
SELECT pg_backend_pid()

   ). Binden Sie einen Debugger an diese PID und fhren Sie Abfragen von
   psql aus. Wenn Sie den postgres-Serverstart analysieren wollen, setzen
   Sie die Umgebungsvariable PGOPTIONS="-W n", und starten Sie dann psql.
   Dies verzgert den Start um n Sekunden, damit Sie einen Debugger an
   den Prozess binden und ggf. Breakpoints setzen knnen, bevor die
@


1.18.4.1
log
@Here's the patch to fix a lot of markup errors in the HTML FAQs. Doesn't
change content (at least not supposed to).

Magnus Hagander
@
text
@d646 8
a653 6
   von psql verwendet wird (mit SELECT pg_backend_pid()). Binden Sie
   einen Debugger an diese PID und fhren Sie Abfragen von psql aus. Wenn
   Sie den postgres-Serverstart analysieren wollen, setzen Sie die
   Umgebungsvariable PGOPTIONS="-W n", und starten Sie dann psql. Dies
   verzgert den Start um n Sekunden, damit Sie einen Debugger an den
   Prozess binden und ggf. Breakpoints setzen knnen, bevor die
@


1.18.4.2
log
@Update FAQ URLs.

Robert Treat
@
text
@d316 3
a318 3
   unsere TODO-Liste unter http://www.postgresql.org/docs/faqs.TODO.html
   fr eine Auflistung der bekannten Bugs, fehlenden Features und
   zuknftigen Plne.
@


1.17
log
@Many thanks to Joachim Wieland for a big list of corrections / updates.

Ian Barwick
@
text
@d8 1
a8 1
   Letzte Aktualisierung der deutschen bersetzung: Fr., den 17.12.2004,
d13 4
a16 2
     * http://www.postgresql.org/docs/faqs/FAQ.html (engl.)
     * http://www.postgresql.org/docs/faqs/FAQ_german.html (dt.)
d19 2
a20 2
   spezifische FAQs knnen unter
   http://www.postgresql.org/docs/index.html#faqs eingesehen werden.
d74 3
a76 2
   4.3) Wie bekomme ich eine Liste der Tabellen oder anderen Dinge, die
   ich in psql sehen kann?
d83 2
a84 5
   4.7) Wie finde ich heraus, welche Tabellen, Indizes, Datenbanken oder
   Benutzer in der Datenbank definiert sind?Wie finde ich heraus, welche
   Indizes oder Operationen in der Datenbank definiert sind?
   4.8) Meine Abfragen sind langsam oder nutzen die Indizes nicht. Warum?
   4.9) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer
d86 3
a88 3
   4.10) Was ist ein R-Tree Index?
   4.11) Was ist der "Genetic Query Optimizer"?
   4.12) Wie verfahre ich bei der Suche mit regulren Ausdrcken und bei
d91 3
a93 3
   4.13) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist?
   4.14) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
   4.15.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhhung
d95 3
a97 3
   4.15.2) Wie bekomme ich den Wert einer SERIAL-Sequenz?
   4.15.3) Fhrt currval() zu einer Race-Condition mit anderen Nutzern?
   4.15.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch
d100 2
a101 2
   4.16) Was ist ein OID? Was ist ein TID?
   4.17) Welche Bedeutung haben die verschiedenen Ausdrcke, die in
d103 1
a103 1
   4.18) Wieso bekomme ich den Fehler: "FATAL: Memory exhausted in
d105 1
a105 1
   4.19) Wie kann ich feststellen, welche PostgreSQL-Version bei mir
d107 1
a107 1
   4.20) Bei "large-object"-Operationen kommt die Fehlermeldung: "invalid
d109 1
a109 1
   4.21) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die
d111 1
a111 1
   4.22) Warum sind meine Unterabfragen (subqueries), die IN verwenden,
d113 3
a115 3
   4.23) Wie fhre ich einen OUTER JOIN durch?
   4.24) Wie kann ich Abfragen ber mehrere Datenbanken hinweg ausfhren?
   4.25) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion
d117 1
a117 1
   4.26) Warum kann ich temporre Tabellen in PL/PgSQL-Funktionen nicht
d119 1
a119 2
   4.27) Welche Mglichkeiten zur Datenbank-Replikation gibt es?
   4.28) Welche Mglichkeiten zur Verschlsselung gibt es?
d137 2
a138 4
   Die (englische) Aussprache ist "Post-Gres-Q-L". Eine MP3-Datei zum
   Anhren gibt es hier: http://www.postgresql.org/postgresql.mp3. Im
   allgemeinen Sprachgebrauch hat sich die Kurzform "Postgres" auch
   durchgesetzt.
d175 1
a175 1
   Portions copyright (c) 1996-2004, PostgreSQL Global Development Group
d228 4
d289 1
a289 1
   Die neueste Version von PostgreSQL ist 7.4.6 .
d535 3
a537 2
   Administrator's Guide" () enthlt weitere Informationen zu Shared
   Memory und Semaphores.
d764 3
a766 2
    4.3) Wie bekomme ich eine Liste der Tabellen oder anderen Dinge, die ich in
    psql sehen kann?
d774 1
a774 1
   biete PostgreSQL ein SQLi-kompatibles INFORMATION SCHEMA, das
d777 4
d872 1
a872 13
    4.7) Wie finde ich heraus, welche Tabellen, Indizes, Datenbanken oder
    Benutzer in der Datenbank definiert sind?
    
   psql hat eine Vielzahl von Backslash-Befehlen, mit denen solche
   Informationen angezeigt werden knnen. Der Befehl \? zeigt eine
   bersicht. Auerdem zeigt der Befehl \l eine Liste von allen
   verfgbaren Datenbanken an.
   
   Die Datei pgsql/src/tutorial/syscat.source enthlt auerdem viele
   SELECT-Anweisungen, mit deren Hilfe man Information ber die
   Systemtabellen erhalten kann.
   
    4.8) Meine Abfragen sind langsam oder benutzen die Indizes nicht. Warum?
d933 1
a933 1
    4.9) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer meine
d938 1
a938 1
    4.10) Was ist ein R-Tree Index?
d965 1
a965 1
    4.11) Was ist der "Genetic Query Optimizer"?
d972 1
a972 1
    4.12) Wie verfahre ich bei der Suche mit regulren Ausdrcken und bei einer
d990 1
a990 1
    4.13) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist?
d994 1
a994 1
    4.14) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
d1032 1
a1032 1
    4.15.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhhung des
d1057 1
a1057 1
    4.15.2) Wie bekomme ich den Wert einer SERIAL-Sequenz?
d1062 1
a1062 1
   INSERT-Anweisung einzubinden. Anhand der Beispieltabelle in 4.15.1
d1090 1
a1090 1
    4.15.3) Fhren currval() und nextval() zu einer Race-Condition mit anderen
d1096 1
a1096 1
    4.15.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch nicht
d1106 1
a1106 1
    4.16) Was ist ein OID? Was ist ein TID?
d1142 1
a1142 1
    4.17) Welche Bedeutung haben die verschiedenen Ausdrcke, die in PostgreSQL
d1161 1
a1161 1
    4.18) Wieso bekomme ich einen Fehler: "ERROR: Memory exhausted in
d1177 1
a1177 1
    4.19) Wie kann ich feststellen, welche PostgreSQL-Version bei mir luft?
d1181 1
a1181 1
    4.20) Bei "large-object"-Operationen kommt die Fehlermeldung: "invalid
d1197 1
a1197 1
    4.21) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die
d1203 1
a1203 1
    4.22) Warum sind meine Unterabfragen (subqueries), die IN verwenden, so
d1224 1
a1224 1
    4.23) Wie fhre ich einen OUTER JOIN durch?
d1259 1
a1259 1
    4.24) Wie kann ich Abfragen ber mehrere Datenbanken hinweg ausfhren?
d1278 1
a1278 1
    4.25) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion
d1284 1
a1284 1
    4.26) Warum kann ich temporre Tabellen in PL/PgSQL-Funktionen nicht
d1298 1
a1298 9
    4.27) Welche Mglichkeiten zur Datenbank-Replikation gibt es?
    
   Es existieren mehrere Anstze zur Master/Slave-Replikation in
   PostgreSQL. In diesen werden Datennderungen in der Master-Datenbank
   durchgefhrt und an Slave-Datenbanken weitergeleitet. Informationen
   ber diese Lsungen befinden sich auf der folgenden Seite (unten):
   http://gborg.postgresql.org/genpage?replication_research .
   
    4.28) Welche Mglichkeiten zur Verschlsselung gibt es?
@


1.16
log
@Update German FAQ.

Ian Barwick
@
text
@d8 1
a8 1
   Letzte Aktualisierung der deutschen bersetzung: Di., den 26.10.2004,
d11 4
a14 4
   Die aktuellste Version dieses Dokuments liegt auf der PostgreSQL
   Website:
     * http://www.PostgreSQL.org/docs/faqs/FAQ.html (engl.)
     * http://www.PostgreSQL.org/docs/faqs/FAQ_german.html (dt.)
d18 1
a18 1
   http://www.PostgreSQL.org/docs/index.html#faqs eingesehen werden.
d80 3
a82 2
   4.7) Wie finde ich heraus, welche Indizes oder Operationen in der
   Datenbank definiert sind?
d96 1
a96 2
   4.15.3) Fhren currval() und nextval() zu einer Race-Condition mit
   anderen Nutzern?
d153 1
a153 1
   ist Marc G. Fournier (scrappy@@PostgreSQL.org) (Anmeldemglichkeit:
d157 1
a157 1
   Entwickler-FAQ: http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html wenn
d170 1
a170 1
   Postgres95 gendert. Der Name wurde Ende 1996 in PostgreSQL gendert.
d226 1
a226 1
   http://www.PostgreSQL.org/docs/faqs/text/FAQ_CYGWIN.
d234 1
a234 1
   ftp://ftp.postgreSQL.org/pub. Weitere Mirror-Sites sind auf der
d240 1
a240 1
   mailto:pgsql-general@@PostgreSQL.org .
d244 1
a244 1
   pgsql-general-request@@PostgreSQL.org mit folgenden Zeilen im Text
d251 1
a251 1
   Email an pgsql-general-digest-request@@PostgreSQL.org mit folgendem
d257 1
a257 1
   erfolgt durch eine Email an bugs-request@@PostgreSQL.org mit folgendem
d263 1
a263 1
   pgsql-hackers-request@@PostgreSQL.org abonniert werden. Die Email mu
d268 3
a270 3
   Eine deutschsprachige Mailing-Liste gibt es bei Yahoo Groups:
   http://de.groups.yahoo.com/group/postgres/; die Liste kann mit einer
   leeren E-Mail an postgres-subscribe@@yahoogroups.de abonniert werden.
d275 1
a275 1
     http://www.PostgreSQL.org
d279 2
a280 2
   "$USER" irc.phoenix.net bzw. irc -c '#PostgreSQL' "$USER"
   irc.freenode.net. daran teilnehmen.
d297 1
a297 1
   alle Handbcher online unter http://www.PostgreSQL.org/docs/
d301 1
a301 1
   http://www.PostgreSQL.org/docs/awbook.html und
d305 2
a306 2
   http://techdocs.PostgreSQL.org/techdocs/bookreviews.php Diverse
   technische Artikel befinden sich unter http://techdocs.PostgreSQL.org/
d315 1
a315 1
   unsere TODO-Liste unter http://developer.PostgreSQL.org/todo.php fr
d321 1
a321 1
   Das PostgreSQL Book auf http://www.PostgreSQL.org/docs/awbook.html
d358 2
a359 2
   http://www.PostgreSQL.org/bugs/, die Hinweise und Anleitungen zur
   Einreichung von Fehlerberichten enthlt.
d361 1
a361 1
   berprfe auch den ftp-Server ftp://ftp.PostgreSQL.org/pub, um
d368 1
a368 1
   Leistung, Zuverlssigkeit, Support und Preis.
d375 3
a377 3
          Eigenschaften, die diese nicht haben, wie benutzerbestimmte
          Typen, Vererbung, Regeln, und die Multi-Versionen-Steuerung zum
          Verringern konkurrierender Locks.
d387 7
a393 13
          durch mehrere Nutzer, komplexen Abfragen oder gleichzeitigen
          Lese- und Schreibzugriffen schneller. MySQL ist nur bei
          einfacheren SELECT-Abfragen mit wenigen Nutzern schneller.
          MySQL hat allerdings wenige der oben erwhnten Eigenschaften.
          PostgreSQL setzt auf Zuverlssigkeit und Funktionsumfang, dabei
          wird selbstredend stndig an Performanz-Verbesserungen
          gearbeitet. Ein interessanter Vergleich zwischen PostgreSQL und
          MySQL befindet sich unter dieser URL:
          http://openacs.org/philosophy/why-not-mysql.html Zu beachten
          ist auerdem, da die MySQL-Hersteller zwar ihre Produkte als
          Open-Source vertreiben, beim kommerziellen Einsatz mssen
          jedoch gem den Nutzungsbedingungen Lizenzgebhren entrichtet
          werden.
d396 4
a399 4
          Wir stellen fest, dass ein DBMS wertlos ist, wenn es nicht
          zuverlssig arbeitet. Wir bemhen uns, nur streng geprften,
          bestndigen Code freizugeben, der nur ein Minimum an
          Programmfehler aufweist. Jede Freigabe hat mindestens einen
d401 3
a403 3
          beweist, dass wir stabile, solide Versionen freigeben, die im
          Produktionsbetrieb genutzt werden knnen. Wir glauben, dass wir
          im Vergleich mit anderer Datenbanksoftware vorteilhaft
d411 3
a413 3
          direkte Kontakt zur Entwickler- und Benutzergemeinschaft, der
          Zugriff auf die Handbcher und auf den Quellcode ermglicht
          einen im Vergleich zu anderen DBMS hherwertigen Support. Es
d419 1
a419 1
          fr die nicht-kommerzielle Nutzung. Sie knnen den
d435 2
a436 2
   Reihe von einmaligen und monatlich wiederkehrenden Kosten, die fr den
   Weiterbetrieb beglichen werden mssen. Falls Sie oder Ihre Firma dazu
d449 2
a450 2
   erfolgreichen Einsatz von PostgreSQL in Ihrem Unternehmen oder
   Organisation bereitzustellen.
d463 1
a463 1
   OpenLink ODBC kann unter http://www.openlinksw.com geholt werden. Die
d487 1
a487 1
   PgAccess ( http://www.pgaccess.org), PgAdmin III
d489 3
a491 3
   und Rekall ( http://www.thekompany.com/products/rekall/, proprietr).
   Es gibt auerdem PhpPgAdmin ( http://phppgadmin.sourceforge.net/ ),
   eine web-basierte Schnittstelle.
d534 2
a535 4
   Administrator's Guide"
   (http://www.PostgreSQL.org/docs/view.php?version=current&idoc=1&file=k
   ernel-resources.html) enthlt weitere Informationen zu Shared Memory
   und Semaphores.
d583 18
a600 15
   Es gibt verschiedene Tuning-Optionen. Sie knnen fsync() ausschalten,
   indem Sie beim Starten des postmaster die Optionen -o -F angeben. Das
   hindert fsync()-Operationen daran, nach jeder Transaktion die Daten
   direkt auf die Festplatte zu schreiben.
   
   Sie knnen auch mit der -B Option des postmaster die Anzahl der Shared
   Memory Puffer fr die Backend-Prozesse erhhen. Falls Sie diesen Wert
   jedoch zu hoch setzen, kann es vorkommen, dass der postmaster nicht
   startet, weil die Obergrenze der Speicherzuweisung fr Shared Memory
   berschritten wird. Jeder Puffer ist 8 kB gro, standardmig gibt es
   64 Puffer.
   
   Sie knnen auch die -S Option des Backends nutzen, um die Gre des
   Speicherplatzes fr temporres Sortieren zu erhhen. Der -S Wert wird
   in Kilobyte gemessen und ist standardmig auf 512 kB festgelegt.
d603 3
a605 2
   zu gruppieren, so dass sie auf einen Index zusammengebracht werden.
   Siehe auch die CLUSTER(l) Man-Page fr weitere Details.
d617 3
a619 3
   zur Verfgung. Stellen Sie zuerst sicher, dass Sie den Standard-Output
   und den Fehlerkanal in eine Datei umleiten, wenn Sie den postmaster
   starten:
d631 1
a631 1
   Wenn der postmaster nicht luft, knnen Sie sogar den postgres-Backend
d633 19
a651 16
   Dies ist nur fr Debugging-Zwecke zu empfehlen. Beachten Sie, dass ein
   Zeilenumbruch, und nicht das Semikolon die SQL-Anweisung beendet.
   Falls Sie PostgreSQL mit Debugging-Symbolen kompiliert haben, knnen
   Sie mit einem Debugger sehen, was passiert. Da das Backend jedoch
   nicht vom postmaster gestartet wurde, luft es nicht in der gleichen
   Umgebung und deshalb knnen einige locking/backend Operationen nicht
   reproduziert werden.
   
   Wenn dagegen der postmaster luft, fhren Sie psql in einem Fenster
   aus, dann ermitteln Sie die Prozessnummer (PID) des
   postgres-Prozesses, der von psql verwendet wird. Binden Sie einen
   Debugger an diese PID und fhren Sie Abfragen von psql aus. Wenn Sie
   den postgres-Serverstart analysieren wollen, setzen Sie die
   Umgebungsvariable PGOPTIONS="-W n", und starten Sie dann psql. Dies
   verzgert den Start um n Sekunden, damit Sie einen Debugger an den
   Prozess binden knnen und ggf. Breakpoints setzen, bevor die
d654 3
a656 2
   Das Programm postgres hat auch die Optionen -s, -A und -t, die bei der
   Fehlersuche und Performanzmessung sehr ntzlich sein knnen.
d666 1
a666 1
    Verbindung augzubauen versuche. Warum?
d668 1
a668 1
   Sie mssen die maximale Anzahl der gleichzeitig ausfhbaren Backend-
d671 3
a673 3
   Die Voreinstellung ist 32 Prozesse. Sie knnen diese erhhen, indem
   Sie den postmaster mit einem entsprechenden -N Parameter starten bzw.
   die Konfigurationsdatei postgresql.conf anpassen.
d700 2
a701 2
   erhalten. Nach einem Neustart des postmaster werden sie auomatisch
   gelscht.
d708 1
a708 1
   ein erneutes Aus- und Einlesen der Daten nicht bentigt wird.
d717 1
a717 1
   Bei Versionenwechseln, wo kein Formatnderungen stattgefunden haben,
d747 1
a747 1
   ORDER BY-Anweisung benutzt, die wiederum auf indizierte Spalten
d759 1
a759 1
        LIMIT 1;
d765 1
a765 1
   In psql zeigt der Befehl \dt eine Liste der Datenbanktabellen. Weiter
d797 2
a798 2
   Um den Platz zu reklamieren, der von der gelschten Spalte verwendet
   wurde, fhren Sie VACUUM FULL aus.
d804 1
a804 1
                                               Datenbanken mit 4TB)
d816 2
a817 2
   verfgbaren Platten- und Speicherressourcen eingeschrnkt sind.
   Extreme Gren knnen zu Leistungseinbuen fhren.
d821 1
a821 1
   Dateien mit einer Gre von 1 GB aufgeteilt, wodurch etwaige
d825 2
a826 2
   gesteigert werden, wenn die Default-Blockgre auf 32 KB heraufgesetzt
   wird.
d854 1
a854 1
   -----------------------  =  735 Datenbankseiten (aufgerundet)
d865 2
a866 2
    4.7) Wie finde ich heraus, welche Indizes oder Operationen in der Datenbank
    definiert sind?
d877 1
a877 1
    4.8) Meine Abfragen sind langsam oder nutzen die Indizes nicht. Warum?
d882 4
a885 4
   Prozentzahl der Tabellenzeilen abfragt. Grund hierfr ist, dass die
   durch einen Index verursachten Festplattenzugriffe manchmal langsamer
   sind als ein einfaches Auslesen aller Tabellenzeilen (sequentieller
   Scan).
d892 4
a895 2
   werden sollen. Statistiken sind auch bei der Feststellung optimaler
   JOIN-Reihenfolge und -Methoden wertvoll.
d922 1
a922 2
     * Der Anfang des Suchmusters mu mit dem Anfang des Strings
       verknpft werden, d.h.:
d926 1
a926 1
       anfangen
d933 4
a936 2
   Die C-Locale mu whrend der Datenbank-Initialisierung mit initdb
   bestimmt worden sein.
d948 5
a952 5
   werden. R-Trees knnen multi-dimensionale Daten abhandeln. Ein
   Beispiel: Wenn ein R-Tree Index auf ein Attribut vom Typ POINT
   gebildet wird, dann kann das System Abfragen wie z.B. "Zeige alle
   Punkte, die sich in einem umgebenden Rechteck befinden" effizienter
   beantworten.
d966 3
a968 3
   erweitert werden. Praktisch bedingt diese Erweiterung eine Menge
   Arbeit und wir haben derzeit keinerlei Dokumentation darber, wie das
   zu machen wre.
d981 3
a983 3
   Der Operator ~ bewirkt die Anwendung eines regulren Ausdrucks. ~*
   fhrt zur Anwendung eines regulren Ausdrucks mit Ignorierung der
   Gro- und Kleinschreibung.
d991 2
a992 2
   Ein funktionaler Index, der wie folgt erstellt wird, wird auf jeden
   Fall verwendet:
d1004 1
a1004 1
                               Ausfllen mit Leerzeichen
d1006 3
a1008 3
TEXT          text            Die Lnge wird nur durch die maximale Zeilenlnge
                               beschrnkt
BYTEA         bytea           Bytearray mit variabler Lnge
d1034 2
a1035 1
   Die hier erwhnten Typen weisen hnliche Performanzeigenschaften auf.
d1038 1
a1038 1
    Werts?
d1089 2
a1090 1
   eine kleine Zahl gesetzt, ist also nicht garantiert einmalig.
d1092 2
a1093 2
   In Perl mit dem DBD::Pg-Modul wird der OID-Wert nach einem
   $sth->excute() ber $sth->{pg_oid_status} zurckgeliefert.
d1098 1
a1098 1
   Nein. Die Funktionen liefern einen Wert zurck, der von Ihrem Backend
d1105 5
a1109 4
   Um die konkurrente Verarbeitung zu verbessern, werden Sequenzwerte
   nach Bedarf an laufende Transaktionen zugeteilt und erst beim Abschlu
   der Transaktion gesperrt. Durch abgebrochene Transaktionen werden
   Lcken in der Sequenznummerierung verursacht.
d1117 3
a1119 3
   werden, sind gleich oder grer als dieser Wert. Standardmig sind
   all OIDs nicht nur innerhalb einer Tabelle oder Datenbank, sondern in
   der gesamten PostgreSQL-Installation einmalig.
d1129 1
a1129 1
   die OID zu ndern, oder eine Kopie der Tabelle mit den originalen Oids
d1137 10
d1158 1
a1158 1
     * oid, serial value
d1219 1
a1219 1
   in:
d1225 1
a1225 1
   ein Index angelegt worden sein. Ab PostgreSQL 7.4 IN verwendet die
d1245 6
a1250 5
   zurck. Ein FULL JOIN wrde dagegen alle verknpften Zeilen sowie
   jeweils alle unverknpften Zeilen aus den beiden Tabellen verknpfen.
   Die Angabe von OUTER ist nicht zwingend und kann in LEFT, RIGHT und
   FULL-Verknpfungen weggelassen werden. Normale Verknpfungen sind
   INNER JOINs.
d1252 1
a1252 1
   In frheren Versionen von PostgreSQL knnen OUTER JOINs mittels UNION
d1272 1
a1272 1
   Abfragen ermglicht.
d1280 1
a1280 1
   Anwendungen knnten dies einen geeigneten Ersatz fr den Zugriff auf
d1292 1
a1292 1
   PL/PgSQL verarbeitet die Inhalte einer Funktion in einer Cache. Dies
d1296 1
a1296 1
   fehlschlagen wird, da die gecachte Funktionsinhalte noch auf die alte
d1299 3
a1301 4
   Die Lsung fr diese Probleme besteht darin, in der Funktion mittels
   EXECUTE auf temporre Tabellen zuzugreifen. Diese bewirkt, dass bei
   jedem Funktionsruf die betreffende Abfrage von PL/PgSQL neu geparst
   wird.
d1309 1
a1309 5
   http://gborg.PostgreSQL.org/genpage?replication_research .
   
   Eine Multi-Master-Lsung befindet sich in der Entwicklung. Nheres
   dazu befindet sich hier:
   http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php .
d1369 1
a1369 1
   unter http://sql-info.de/postgresql/FAQ_german.html. Diese
@


1.15
log
@Update German FAQ>
@
text
@d8 2
a9 2
   Letzte Aktualisierung der deutschen bersetzung: Fr., den 02.07.2004,
   23:30 CET
d64 1
d216 11
a226 25
   Client
   
   Es ist mglich, die libpq C-Bibliothek, psql sowie andere Client-
   Anwendungen und Schnittstellen fr den Einsatz auf
   MS-Windows-Plattformen zu kompilieren. In diesem Fall luft der Client
   auf MS-Windows und steht ber TCP/IP mit einem Server in Verbindung,
   der auf einer der untersttzten Unix-Plattformen luft. Die
   Distribution enthlt die Datei win32.mak, mit der Win32
   libpq-Bibliothek und psql erzeugt werden knnen.
   
   Server
   
   Der Datenbankserver selber kann mit Hilfe der Cygwin-Umgebung
   (Unix/NT-Portierungsbibliotheken) auf Windows NT/2000 zum Laufen
   gebracht werden. Hierzu bitte lesen Sie die in der Distribution
   enthaltene Datei pgsql/doc/FAQ_MSWIN oder die MS-Windows-FAQ unter
   http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN.
   
   Eine eigenstndige Portierung auf MS Win NT/2000/XP befindet sich in
   der Vorbereitung.
   
   Weitere Informationen zum Status von PostgreSQL auf der
   Microsoft-Plattform befinden sich unter
   http://techdocs.postgresql.org/guides/Windows (en.) sowie
   http://momjian.postgresql.org/main/writings/pgsql/win32.html (en.).
d288 1
a288 1
   Die neueste Version von PostgreSQL ist 7.4.3 .
d290 1
a290 1
   Die Freigabe einer neuen Version erfolgt im Schnitt jede 6 bis 8
d570 4
a573 4
   mit der -i Option gestartet wird und / oder die Option tcpip_sockets
   in postgresql.conf eingeschaltet wird, und die host-basierte
   Authentifizierung in der Datei $PGDATA/pg_hba.conf entsprechend
   angepasst ist.
d721 9
d841 1
a841 1
    36 Bytes: jeder Zeilenkopf (ungefhr)
d845 1
a845 1
    64 Bytes pro Zeile
d850 1
a850 1
   ---------------------   =  128 Zeilen pro Seite (abgerundet)
d854 1
a854 1
   -----------------------  =  782 Datenbankseiten (aufgerundet)
d857 1
a857 1
   782 Datenbankseiten * 8192 Bytes pro Seite  =  6.406.144 Byte (6,4 MB)
d895 4
@


1.14
log
@Update German FAQ.

Ian Barwick
@
text
@d8 1
a8 1
   Letzte Aktualisierung der deutschen bersetzung: Fr., den 05.03.2004,
d137 4
a140 2
   Die (englische) Aussprache ist "Post-Gres-Q-L". Im allgemeinen
   Sprachgebrauch hat sich auch "Postgres" durchgesetzt.
d177 1
a177 1
   Portions copyright (c) 1996-2002, PostgreSQL Global Development Group
d301 1
a301 1
   Die neueste Version von PostgreSQL ist 7.4.2 .
d303 2
a304 2
   Die Freigabe einer neuen Version erfolgt im Schnitt ca. dreimal pro
   Jahr.
d509 1
a509 1
   Es gibt auerdem PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ),
d583 2
a584 1
   mit der -i Option gestartet wird und die host-basierte
d591 2
a592 2
   Die Anweisung EXPLAIN zeigt, wie PostgreSQL Abfragen interpretiert und
   welche Indizes benutzt werden.
d769 8
a776 5
   Sie knnen sich die Datei pgsql/src/bin/psql/describe.c mit dem
   Quellcode fr psql ansehen. Sie enthlt die SQL-Abfragen, die die
   Backslash-Kommandos (\) ausfhren. Sie knnen psql auch mit der -E
   Option starten. Danach gibt psql die Abfragen aus, die es bei der
   Ausfhrung der Befehle benutzt.
d1125 5
a1129 5
      CREATE TABLE new_table(old_oid OID, mycol INT);
      SELECT INTO new SELECT old_oid, mycol FROM old;
      COPY new TO '/tmp/pgtable';
      DELETE FROM new;
      COPY new WITH OIDS FROM '/tmp/pgtable';
@


1.13
log
@German FAQ update.

Ian Barwick
@
text
@d8 2
a9 2
   Letzte Aktualisierung der deutschen bersetzung: Fr., den 02.01.2004,
   07:30 CET
d137 2
a138 1
   Die (englische) Aussprache ist "Post-Gres-Q-L".
d152 4
a155 1
   verantwortlich.
d299 1
a299 1
   Die neueste Version von PostgreSQL ist 7.4.1 .
d406 5
a410 1
          http://openacs.org/philosophy/why-not-mysql.html
d860 2
a861 2
   NULL-Werte werden in Bitmaps gespeichert, wodurch sie sehr wenig Platz
   in Anspruch nehmen.
@


1.12
log
@Update German FAQ.

Ian Barwick
@
text
@d8 2
a9 2
   Letzte Aktualisierung der deutschen bersetzung: Di., den 02.09.2003,
   10:00 CET
d232 2
a233 1
   http://techdocs.postgresql.org/guides/Windows (en.).
d284 4
a287 4
   Es gibt auerdem einen IRC-Channel bei EFNet und bei OpenProjects,
   Channel #PostgreSQL. Der FAQ-Autor Bruce Momjian nutzt den
   Unix-Befehl: irc -c '#PostgreSQL' "$USER" irc.phoenix.net um daran
   teilzunehmen.
d295 1
a295 1
   Die neueste Version von PostgreSQL ist 7.3.4 .
d390 12
a401 8
          langsamen. Im Vergleich zu MySQL oder abgespeckten
          Datenbank-Systemen sind INSERT- und UPDATE-Anweisungen aufgrund
          des Transaktionsaufwands langsamer. MySQL hat allerdings keine
          der oben erwhnten Eigenschaften. PostgreSQL setzt auf
          Zuverlssigkeit und Funktionsumfang, obwohl selbstredend
          stndig an Performanz- Verbesserungen gearbeitet wird. Ein
          interessanter Vergleich zwischen PostgreSQL und MySQL befindet
          sich unter dieser URL:
d496 5
a500 6
   PgAccess ( http://www.pgaccess.org), PgAdmin II
   (http://www.pgadmin.org, nur fr Win32), RHDB Admin
   (http://sources.redhat.com/rhdb/ ) und Rekall (
   http://www.thekompany.com/products/rekall/, proprietr). Es gibt
   auerdem PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ), eine
   web-basierte Schnittstelle.
d795 1
a795 1
    Maximale Gre einer Tabelle?            16 TB
d809 1
a809 1
   Die maximale Tabellengre von 16 TB bentigt keine
d1023 1
a1023 1
   eine Sequenz und einen Index auf die angegebene Spalte. Zum Beispiel:
a1034 1
      CREATE UNIQUE INDEX person_id_key ON person ( id );
d1181 4
a1184 4
   Derzeit werden Unterabfragen mit der usseren Abfrage verbunden, indem
   fr jede Reihe der usseren Query die Ergebnisse der Unterabfrage
   sequentiell geprft werden. Um dies zu vermeiden, kann man IN durch
   EXISTS ersetzen, z.B.:
d1195 3
a1197 2
   ein Index angelegt worden sein. Die Einschrnkung von Abfragen mit IN
   wird in der nchsten PostgreSQL-Version (7.4) behoben werden.
a1350 3
   
   Diese bersetzung basiert teilweise auf einer frheren bersetzung von
   Karsten Schulz (schulz@@linux-systemhaus.de).
@


1.12.2.1
log
@Brand 7.4.2.  Release notes still need work.
@
text
@d8 2
a9 2
   Letzte Aktualisierung der deutschen bersetzung: Fr., den 02.01.2004,
   07:30 CET
d232 1
a232 2
   http://techdocs.postgresql.org/guides/Windows (en.) sowie
   http://momjian.postgresql.org/main/writings/pgsql/win32.html (en.).
d283 4
a286 4
   Es gibt auerdem einen IRC-Channel bei EFNet und bei Freenode, Channel
   #PostgreSQL. Unter UNIX/Linux knnen Sie mit z.B. irc -c '#PostgreSQL'
   "$USER" irc.phoenix.net bzw. irc -c '#PostgreSQL' "$USER"
   irc.freenode.net. daran teilnehmen.
d294 1
a294 1
   Die neueste Version von PostgreSQL ist 7.4.1 .
d389 8
a396 12
          langsamer.
          
          Im Vergleich zu MySQL oder abgespeckten Datenbank-Systemen ist
          PostgreSQL in Lastsituationen - z.B. bei zeitgleichen Zugriffen
          durch mehrere Nutzer, komplexen Abfragen oder gleichzeitigen
          Lese- und Schreibzugriffen schneller. MySQL ist nur bei
          einfacheren SELECT-Abfragen mit wenigen Nutzern schneller.
          MySQL hat allerdings wenige der oben erwhnten Eigenschaften.
          PostgreSQL setzt auf Zuverlssigkeit und Funktionsumfang, dabei
          wird selbstredend stndig an Performanz-Verbesserungen
          gearbeitet. Ein interessanter Vergleich zwischen PostgreSQL und
          MySQL befindet sich unter dieser URL:
d491 6
a496 5
   PgAccess ( http://www.pgaccess.org), PgAdmin III
   (http://www.pgadmin.org, RHDB Admin (http://sources.redhat.com/rhdb/ )
   und Rekall ( http://www.thekompany.com/products/rekall/, proprietr).
   Es gibt auerdem PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ),
   eine web-basierte Schnittstelle.
d791 1
a791 1
    Maximale Gre einer Tabelle?            32 TB
d805 1
a805 1
   Die maximale Tabellengre von 32 TB bentigt keine
d1019 1
a1019 1
   eine Sequenz auf die angegebene Spalte. Zum Beispiel:
d1031 1
d1178 4
a1181 4
   In Versionen vor 7.4 werden Unterabfragen mit der usseren Abfrage
   verbunden, in dem fr jede Reihe der usseren Query die Ergebnisse der
   Unterabfrage sequentiell geprft werden. Um dies zu vermeiden, kann
   man IN durch EXISTS ersetzen, z.B.:
d1192 2
a1193 3
   ein Index angelegt worden sein. Ab PostgreSQL 7.4 IN verwendet die
   gleichen Methoden wie die normale Tabellenverknpfung und ist daher
   soger EXISTS vorzuziehen.
d1347 3
@


1.12.2.2
log
@Update German FAQ.

Ian Barwick
@
text
@d8 2
a9 2
   Letzte Aktualisierung der deutschen bersetzung: Fr., den 05.03.2004,
   23:30 CET
d137 1
a137 2
   Die (englische) Aussprache ist "Post-Gres-Q-L". Im allgemeinen
   Sprachgebrauch hat sich auch "Postgres" durchgesetzt.
d151 1
a151 4
   verantwortlich. Es handelt sich um ein Gemeinschaftsprojekt, das nicht
   von einer bestimmten Firma kontrolliert wird. Lesen Sie die
   Entwickler-FAQ: http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html wenn
   Sie an einer Mitarbeit interessiert sind.
d295 1
a295 1
   Die neueste Version von PostgreSQL ist 7.4.2 .
d402 1
a402 5
          http://openacs.org/philosophy/why-not-mysql.html Zu beachten
          ist auerdem, da die MySQL-Hersteller zwar ihre Produkte als
          Open-Source vertreiben, beim kommerziellen Einsatz mssen
          jedoch gem den Nutzungsbedingungen Lizenzgebhren entrichtet
          werden.
d852 2
a853 2
   NULL-Werte werden als Bitmaps gespeichert, wodurch sie sehr wenig
   Platz in Anspruch nehmen.
@


1.11
log
@Update German FAQ.
@
text
@d8 2
a9 2
   Letzte Aktualisierung der deutschen bersetzung: Di., den 22.07.2003,
   16:20 CET
d1066 6
a1071 3
   verwenden. In Perl mit dem DBD::Pg-Modul von Edmund Mergl wird der
   OID-Wert nach einem $sth->excute() ber $sth->{pg_oid_status}
   zurckgeliefert.
d1284 10
a1293 4
       SQL-Abfragen;
     * die einzige Mglichkeit, Kommunikationen zwischen Client und
       Server zu verschlsseln, ist durch die Anwendung von hostssl in
       pg_hba.conf;
d1297 2
a1298 2
       werden);
     * der Server luft auf einem verschlsselten Dateisystem.
d1338 5
d1345 2
a1346 2
   allgemeine Fragen zu PostgreSQL gerne entgegen, kann aber leider keine
   zeitige Antwort garantieren.
@


1.11.2.1
log
@Update this branch to match CVS head, includes WIN32 improvements.
@
text
@d8 2
a9 2
   Letzte Aktualisierung der deutschen bersetzung: Di., den 02.09.2003,
   10:00 CET
d1066 3
a1068 6
   verwenden. Dieser Ansatz ist allerdings PostgreSQL-spezifisch;
   auerdem wird nach ca. 4 Milliarden Eintrgen der OID-Wert wieder auf
   eine kleine Zahl gesetzt, ist also nicht garantiert einmalig.
   
   In Perl mit dem DBD::Pg-Modul wird der OID-Wert nach einem
   $sth->excute() ber $sth->{pg_oid_status} zurckgeliefert.
d1281 4
a1284 10
       SQL-Abfragen.
     * Um Verbindungen zwischen dem Server und Client-Anwendungen zu
       verschlsseln, muss in der Server-Konfigurationsdatei
       postgresql.conf die ssl-Option auf true (Voreinstellung: false)
       gesetzt werden und ein passender host- bzw. hostssl-Eintrag muss
       in pg_hba.conf vorhanden sein. Zudem muss die sslmode-Einstellung
       beim Client nicht auf disable gesetzt werden. (Bitte beachten Sie
       auch, da neben der eingebauten SSL-Untersttzung verschlsselte
       Verbindungen auch ber externe Anwendungen wie stunnel oder ssh
       aufgebaut werden knnen).
d1288 2
a1289 2
       werden).
     * Betrieb des Servers auf einem verschlsselten Dateisystem.
a1328 5
   Die aktuellste Version der deutschen bersetzung befindet sich immer
   unter http://sql-info.de/postgresql/FAQ_german.html. Diese
   "Arbeitsversion" enthlt eventuell nderungen, die noch nicht auf der
   PostgreSQL-Website eingebunden worden sind.
   
d1331 2
a1332 2
   allgemeine Fragen zu PostgreSQL gerne entgegen, verweise jedoch auf
   die Mailing-Listen als schnelle und zuverlssige Anlaufstellen.
@


1.10
log
@Update German FAQ, from Ian Barwick.
@
text
@d8 2
a9 2
   Letzte Aktualisierung der deutschen bersetzung: Mo., den 02.06.2003,
   22:00 CET
d290 1
a290 2
   http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html
   eingesehen werden.
d294 1
a294 1
   Die neueste Version von PostgreSQL ist 7.3.3 .
d296 2
a297 1
   Wir planen alle 4 Monate eine neue Version herauszugeben.
@


1.9
log
@Update German FAQ, from  Ian Barwick
@
text
@d8 1
a8 1
   Letzte Aktualisierung der deutschen bersetzung: Sbd., den 26.04.2003,
d69 2
a70 2
   4.2) Wie whle ich per SELECT-Anweisung nur die ersten paar Zeilen in
   einer Abfrage aus?
d73 2
a74 1
   4.4) Wie entferne ich eine Spalte aus einer Tabelle?
d295 1
a295 1
   Die neueste Version von PostgreSQL ist 7.3.2 .
d311 3
a313 2
   http://www.ca.PostgreSQL.org/books/ Diverse technische Artikel
   befinden sich unter http://techdocs.PostgreSQL.org/ .
d449 6
d728 2
a729 2
    4.2) Wie whle ich per SELECT-Anweisung nur die ersten paar Zeilen in einer
    Abfrage aus?
d744 7
d760 2
a761 1
    4.4) Wie entferne ich eine Spalte aus einer Tabelle?
d763 1
a763 2
   Der Syntax ALTER TABLE DROP COLUMN wird erst ab PostgreSQL 7.3
   untersttzt.
d775 11
@


1.8
log
@Update German FAQ

Ian Barwick
@
text
@d8 2
a9 2
   Letzte Aktualisierung der deutschen bersetzung: So., den 08.03.2003,
   22:30 CET
d233 3
d282 4
a285 3
   Es gibt auerdem einen IRC-Channel im EFNet, Channel #PostgreSQL. Der
   FAQ-Autor Bruce Momjian nutzt den Unix-Befehl: irc -c '#PostgreSQL'
   "$USER" irc.phoenix.net um daran teilzunehmen.
d764 1
a764 1
                                               Datenbanken mit >1TB)
d1207 2
a1208 1
   contrib/dblink ermglicht datenbankbergreifende Abfragen.
d1214 5
d1222 2
a1223 4
   "Result sets" knnen mittels refcursors von PL/PgSQL-Funktionen
   zurckgegeben werden. Vgl.:
   http://www.PostgreSQL.org/docs/view.php?version=current&idoc=1&file=pl
   pgsql-cursors.html (Abschnitt 23.7.3.3).
@


1.7
log
@Update German FAQ, from Ian Barwick.
@
text
@d8 1
a8 1
   Letzte Aktualisierung der deutschen bersetzung: Fr., den 14.02.2003,
d13 2
a14 2
     * http://www.ca.PostgreSQL.org/docs/faq-english.html (engl.)
     * http://www.ca.PostgreSQL.org/docs/faq-german.html (dt.)
d18 1
a18 2
   http://www.ca.PostgreSQL.org/users-lounge/docs/faq.html eingesehen
   werden.
d224 1
a224 1
   http://www.ca.PostgreSQL.org/docs/faq-mswin.html.
d227 5
a231 1
   Vorbereitung.
d270 4
d298 2
a299 2
   alle Handbcher online unter
   http://www.PostgreSQL.org/users-lounge/docs/ verfgbar.
d528 3
a530 2
   (http://www.PostgreSQL.org/idocs/index.php?kernel-resources.html)
   enthlt weitere Informationen zu Shared Memory und Semaphores.
d1214 2
a1215 2
   http://www.postgresql.org/idocs/index.php?plpgsql-cursors.html
   (Abschnitt 23.7.3.3).
@


1.6
log
@incorporates latest changes in the English original.

Ian Barwick
@
text
@d8 2
a9 2
   Letzte Aktualisierung der deutschen bersetzung: So., den 15.12.2002,
   18:00 CET
d13 2
a14 2
     * http://www.PostgreSQL.org/docs/faq-english.html (engl.)
     * http://www.PostgreSQL.org/docs/faq-german.html (dt.)
d18 1
a18 1
   http://www.PostgreSQL.org/users-lounge/docs/faq.html eingesehen
d225 1
a225 1
   http://www.PostgreSQL.org/docs/faq-mswin.html.
d278 1
a278 1
   http://www.PostgreSQL.org/users-lounge/commercial-support.html
d283 1
a283 1
   Die neueste Version von PostgreSQL ist 7.3.
a666 5
   In den PostgreSQL-Versionen vor 6.5 war die maximale Anzahl von
   Backends auf 64 festgelegt und eine nderung setzte eine erneute
   Kompilierung voraus, bei der die Konstante MaxBackendId in
   include/storage/sinvaladt.h entsprechend angepasst werden mute.
   
d858 4
a943 2
"char"        char            1 Zeichen
CHAR(n)       bpchar          mit Leerzeichen gefllt bis zur angegebenen Lnge
d946 1
d950 1
d955 21
a975 13
   Die letzten vier Typen sind "varlena"-Typen (d.h. die ersten vier
   Bytes geben die Lnge an, gefolgt von den Daten). Daher ist der
   tatschlich belegte Platz immer etwas mehr als die deklarierte
   Feldgre. Allerdings wird unter Umstnden auf diese Datentypen
   Datenkompression durch das TOAST- Verfahren angewendet, womit der
   tatschlich belegte Platz auch geringer als erwartet ausfallen kann.
   
   CHAR(n) ist geeignet fr die Speicherung von Zeichenketten hnlicher
   Lnge. VARCHAR(n) ist geeignet fr Zeichenketten abweichender Lngen,
   setzt jedoch eine maximale Lnge. TEXT setzt keine Lngengrenze,
   allerdings gibt es eine systembedingte Obergrenze von 1 GB. BYTEA ist
   fr binre Daten, besonders fr Werte, die NULL-Bytes haben. Die
   erwhnten Typen weisen hnliche Performanzeigenschaften auf.
d1152 1
a1152 1
   soll in einer knftigen PotsgreSQL-Version behoben werden.
@


1.5
log
@Updated German FAQ, from Ian Barwick
@
text
@a6 2
   Basiert teilweise auf einer bersetzung von Karsten Schulz
   (schulz@@linux-systemhaus.de).
d8 2
a9 2
   Letzte Aktualisierung der deutschen bersetzung: Mo., den 21.10.2002,
   23:00 CET
d45 1
a45 2
   2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle? Einen
   Report-Generator? Eine eingebaute Query-Schnittstelle?
d283 1
a283 1
   Die neueste Version von PostgreSQL ist 7.2.3.
d444 3
a446 2
   PsqlODBC ist in der Distribution enthalten. Weitere Informationen
   knnen unter ftp://ftp.PostgreSQL.org/pub/odbc/ abgerufen werden.
d449 1
a449 1
   Software arbeitet mit dem Standard-ODBC-Client der Firma, so dass
a457 2
   Bitte beachten Sie auch das Kapitel zu ODBC im Progammer's Guide.
   
d469 1
a469 2
    2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle? Einen
    Report-Generator? Eine eingebaute Query-Schnittstelle?
d471 7
a477 5
   Wir haben eine nette grafische Benutzerschnittstelle namens PgAccess,
   der auerdem einen Reportgenerator enthlt: http://www.pgaccess.org
   
   Die Distribution enthlt auerdem ecpg, die eine eingebettete
   SQL-Query-Schnittstelle fr C zur Verfgung stellt.
d481 5
a485 1
   PostgreSQL bietet:
a486 1
     * C++ (libpq++)
a488 2
     * Perl (perl5, DBD::Pg)
     * ODBC (odbc)
d491 4
a494 2
     * C Easy API (libpgeasy)
     * PHP ('pg_' functions, Pear::DB)
d1284 3
@


1.5.2.1
log
@Update Russian FAQ.  Update all FAQ's for 7.3.X branch.
@
text
@d7 2
d10 2
a11 2
   Letzte Aktualisierung der deutschen bersetzung: So., den 15.12.2002,
   18:00 CET
d47 2
a48 1
   2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle?
d286 1
a286 1
   Die neueste Version von PostgreSQL ist 7.3.
d447 2
a448 3
   PsqlODBC kann von
   http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
   heruntergeladen werden.
d451 1
a451 1
   Software arbeitet mit dem Standard-ODBC-Client dieser Firma, so dass
d460 2
d473 2
a474 1
    2.3) Hat PostgreSQL eine grafische Benutzerschnittstelle?
d476 5
a480 7
   Es gibt mehrere grafische Schnittstellen fr PostgreSQL, darunter
   PgAccess ( http://www.pgaccess.org), PgAdmin II
   (http://www.pgadmin.org, nur fr Win32), RHDB Admin
   (http://sources.redhat.com/rhdb/ ) und Rekall (
   http://www.thekompany.com/products/rekall/, proprietr). Es gibt
   auerdem PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ), eine
   web-basierte Schnittstelle.
d484 1
a484 5
   Die meisten gngigen Programmiersprachen bieten Schnittstellen fr
   PostgreSQL.
   
   Die folgenden Schnittstellen werden mit der PostgreSQL-Distribution
   ausgeliefert:
d486 1
d489 2
d493 2
a494 4
       
   Weitere Schnittstellen fr andere Sprachen knnen ber
   http://gborg.postgresql.org (Bereich Drivers/Interfaces) bezogen
   werden.
a1283 3
   
   Diese bersetzung basiert teilweise auf einer frheren bersetzung von
   Karsten Schulz (schulz@@linux-systemhaus.de).
@


1.5.2.2
log
@Update all FAQ's for 7.3.4.
@
text
@d8 2
a9 2
   Letzte Aktualisierung der deutschen bersetzung: Mo., den 02.06.2003,
   22:00 CET
d13 2
a14 2
     * http://www.PostgreSQL.org/docs/faqs/FAQ.html (engl.)
     * http://www.PostgreSQL.org/docs/faqs/FAQ_german.html (dt.)
d18 2
a19 1
   http://www.PostgreSQL.org/docs/index.html#faqs eingesehen werden.
d70 2
a71 2
   4.2) Wie whle ich per SELECT-Anweisung nur die ersten paar Zeilen
   bzw. eine beliebige Zeile in einer Abfrage aus?
d74 1
a74 2
   4.4) Wie entferne ich eine Spalte aus einer Tabelle? Wie ndere ich
   den Datentyp einer Spalte?
d225 1
a225 1
   http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN.
d228 1
a228 8
   der Vorbereitung.
   
   Weitere Informationen zum Status von PostgreSQL auf der
   Microsoft-Plattform befinden sich unter
   http://techdocs.postgresql.org/guides/Windows (en.).
   
   Eine Portierung fr Novell Netware 6 gibt es unter
   http://forge.novell.com.
a266 4
   Eine deutschsprachige Mailing-Liste gibt es bei Yahoo Groups:
   http://de.groups.yahoo.com/group/postgres/; die Liste kann mit einer
   leeren E-Mail an postgres-subscribe@@yahoogroups.de abonniert werden.
   
d272 3
a274 4
   Es gibt auerdem einen IRC-Channel bei EFNet und bei OpenProjects,
   Channel #PostgreSQL. Der FAQ-Autor Bruce Momjian nutzt den
   Unix-Befehl: irc -c '#PostgreSQL' "$USER" irc.phoenix.net um daran
   teilzunehmen.
d278 1
a278 1
   http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html
d283 1
a283 1
   Die neueste Version von PostgreSQL ist 7.3.3 .
d291 2
a292 2
   alle Handbcher online unter http://www.PostgreSQL.org/docs/
   verfgbar.
d299 2
a300 3
   http://techdocs.PostgreSQL.org/techdocs/bookreviews.php Diverse
   technische Artikel befinden sich unter http://techdocs.PostgreSQL.org/
   .
a435 6
   
   Eine Mglichkeit der nicht-finanziellen Untetsttzung besteht brigens
   darin, fr http://advocacy.postgresql.org (en.) bzw.
   http://advocacy.postgresql.org/?lang=de (dt.) einen Bericht ber den
   erfolgreichen Einsatz von PostgreSQL in Ihrem Unternehmen oder
   Organisation bereitzustellen.
d521 2
a522 3
   (http://www.PostgreSQL.org/docs/view.php?version=current&idoc=1&file=k
   ernel-resources.html) enthlt weitere Informationen zu Shared Memory
   und Semaphores.
d667 5
d713 2
a714 2
    4.2) Wie whle ich per SELECT-Anweisung nur die ersten paar Zeilen bzw.
    eine beliebige Zeile in einer Abfrage aus?
a728 7
   Um eine beliebige Zeile auszuwhlen, nutzen Sie ORDER BY random():
       SELECT spalte
         FROM tabelle
     ORDER BY random()
        LIMIT 1;


d738 1
a738 2
    4.4) Wie entferne ich eine Spalte aus einer Tabelle? Wie ndere ich den
    Datentyp einer Spalte?
d740 2
a741 1
   Der Syntax ALTER TABLE DROP COLUMN wird ab PostgreSQL 7.3 untersttzt.
a752 11
   Um den Datentyp einer Spalte zu ndern, gehen Sie wie folgt vor:
       BEGIN;
       ALTER TABLE tabelle ADD COLUMN neue_spalte neuer_datentyp;
       UPDATE tabelle SET neue_spalte = CAST(alte_spalte AS neuer_datentyp);
       ALTER TABLE tabelle DROP COLUMN alte_spalte;
       COMMIT;


   Um den Platz zu reklamieren, der von der gelschten Spalte verwendet
   wurde, fhren Sie VACUUM FULL aus.
   
d757 1
a757 1
                                               Datenbanken mit 4TB)
a862 4
   Sollte es danach aussehen, also ob der Optimierer irrtmlich einen
   sequentiellen Scan ausfhrt, fhren Sie SET enable_seqscan TO 'off'
   aus und prfen Sie, ob die Indexabfrage dadurch scheller geworden ist.
   
d945 2
a948 1
CHAR(n)       bpchar          mit Leerzeichen gefllt bis zur angegebenen Lnge
a951 1
"char"        char            1 Zeichen
d956 13
a968 21
   Die ersten vier Typen sind "varlena"-Typen (d.h. die ersten vier Bytes
   geben die Lnge an, gefolgt von den Daten). Daher ist der tatschlich
   belegte Platz immer etwas mehr als die deklarierte Feldgre.
   Allerdings wird unter Umstnden auf diese Datentypen Datenkompression
   durch das TOAST- Verfahren angewendet, womit der tatschlich belegte
   Platz auch geringer als erwartet ausfallen kann.
   
   Fr die Speicherung von Zeichenketten variabler Lnge empfiehlt sich
   VARCHAR(n). Die maximale Lnge eines VARCHAR(n)-Felds wird bei der
   Tabellendefinition festgelegt. TEXT setzt keine Lngengrenze,
   allerdings gibt es eine systembedingte Obergrenze von 1 GB.
   
   CHAR(n) ist geeignet fr die Speicherung von Zeichenketten, die alle
   die gleiche Lnge haben. Bitte beachten Sie, dass CHAR(n) automatisch
   Zeichenketten bis zur definierten Feldlnge mit Leerzeichen ausfllt,
   whrend bei VARCHAR(n) nur die tatschlich eingegebene Zeichenkette
   gespeichert wird.
   
   BYTEA ist fr binre Daten, besonders fr Werte, die NULL-Bytes haben.
   
   Die hier erwhnten Typen weisen hnliche Performanzeigenschaften auf.
d1145 1
a1145 1
   wird in der nchsten PostgreSQL-Version (7.4) behoben werden.
d1188 1
a1188 2
   contrib/dblink ist eine Erweiterung, die datenbankbergreifende
   Abfragen ermglicht.
a1193 5
   Ab 7.3 untersttzt PostgreSQL schemas, die die Aufteilung einer
   Datenbank in mehrere logische Bereiche ermglichen. Bei vielen
   Anwendungen knnten dies einen geeigneten Ersatz fr den Zugriff auf
   eine andere Datenbank bieten.
   
d1197 4
a1200 2
   Ab 7.3 knnen Funktionen mehrere Zeilen und Spalten zurckgeben, vgl.:
   http://techdocs.postgresql.org/guides/SetReturningFunctions.
@


1.4
log
@Rename config.h to pg_config.h and os.h to pg_config_os.h, fix a number of
places that were including the wrong files.
@
text
@d4 1
a4 1
   Last updated: Sat Jul 10 00:37:57 EDT 1999
d6 16
a21 19
   Current maintainer: Bruce Momjian (pgman@@candle.pha.pa.us)
   
   Deutsche bersetzung von Karsten Schulz (schulz@@linux-systemhaus.de)
   
   Letzte Aktualisierung der deutschen bersetzung: Don, den 05.08.1999,
   09:00 CET
   
   Die aktuellste Version dieses Dokuments kann auf der PostgreSQL
   Website http://www.PostgreSQL.org angesehen werden.
   
   Linux-spezifische Fragen werden in
   http://www.PostgreSQL.org/docs/faq-linux.html beantwortet (deutsche
   bersetzung in Arbeit!).
   
   Irix-spezifische Fragen werden in
   http://www.PostgreSQL.org/docs/faq-irix.html beantwortet.
   
   HPUX-spezifische Fragen werden in
   http://www.PostgreSQL.org/docs/faq-hpux.shtml beantwortet.
d26 2
a27 2
   1.1) Was ist PostgreSQL?
   1.2) Welches Copyright liegt auf PostgreSQL?
d33 2
a34 3
   1.8) Welche Dokumente sind fr PostgreSQL verfgbar?
   1.9) Wie erfahre ich etwas ber bekannte Fehler oder fehlende
   Eigenschaften von PostgreSQL?
d37 1
a37 1
   1.12) Wie kann ich am Entwicklerteam teilnehmen?
d40 1
d45 2
a46 2
   2.2) Welche Werkzeuge gibt es, um PostgreSQL-Datenbanken ber
   Webseiten verfgbar zu machen?
d49 1
a49 2
   2.4) Welche Sprachen sind fr die Kommunikation mit PostgreSQL
   verfgbar?
d53 15
a67 23
   3.1) Warum schlgt initdb fehl?
   3.2) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql?
   3.3) Wenn ich den postmaster starte, bekomme ich einen Bad System Call
   oder eine core dumped Meldung. Warum?
   3.4) Wenn ich versuche, den postmaster zu starten, bekomme ich eine
   IpcMemoryCreate Fehlermeldungen. Warum?
   3.5) Wenn ich versuche, den postmaster zu starten, bekomme ich eine
   IpcSemaphoreCreate Fehlermeldungen. Warum?
   3.6) Wie verhindere ich, da andere Hosts auf meine PostgreSQL
   Datenbanken zugreifen?
   3.7) Warum kann ich mich nicht von einer anderen Maschine mit meiner
   Datenbank verbinden?
   3.8) Warum kann ich nicht als root auf die Datenbank zugreifen?
   3.9) Alle meine Server strzen bei gleichzeitigem Tabellenzugriff ab.
   Warum?
   3.10) Wie optimiere ich die Datenbankmaschine fr bessere Leistung?
   3.11) Welche Debugging/Fehlersuch-Hilfsmittel sind fr PostgreSQL
   verfgbar?
   3.12) Ich bekomme die Meldung "Sorry, too many clients", wenn ich eine
   Verbindung versuche. Warum?
   3.13) Was sind die pg_psort.XXX Dateien in meinem
   Datenbank-Verzeichnis?
   3.14) Wie richte ich eine Benutzergruppe (pg_group) ein?
d71 8
a78 10
   4.1) Das System scheint Kommata, Dezimalpunkte und Datumsformate
   durcheinanderzubringen.
   4.2) Was ist der genauer Unterschied zwischen Binary Cursors und
   Normal Cursors?
   4.3) Wie whle ich per SELECT nur die ersten paar Zeilen in einem
   Query aus?
   4.4) Wie bekomme ich eine Liste der Tabellen oder anderen Dingen, die
   ich in psql sehen kann
   4.5) Wie entferne ich eine Spalte von einer Tabelle?
   4.6) Was ist die Maximalgre fr eine Zeile, eine Tabelle, eine
d80 3
a82 3
   4.7) Wieviel Plattenplatz bentigt eine Datenbank zur Speicherung
   einer Datendatei mit zeilenweisen Datenstzen?
   4.8) Wie finde ich heraus, welche Indizes oder Operationen in der
d84 20
a103 13
   4.9) Meine Queries sind langsam oder nutzen die Indizes nicht. Warum?
   4.10) Auf welche Weise kann ich sehen, wie der Query-Optimierer meine
   Abfrage auswertet?
   4.11) Was ist ein R-Tree Index?
   4.12) Was ist "Genetic Query Optimization"?
   4.13) Wie verfahre ich bei der Suche mit regulren Ausdrcken und bei
   einer Suche mit Ignorierung der Gro- und Kleinschreibweisen?
   4.14) Wie ermittle ich in einem Query, da ein Feld NULL ist?
   4.15) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
   4.16) Wie erzeuge ich ein serielles Feld mit automatischer Erhhung
   des Inhalts?
   4.17) Was ist ein Oid? Was ist ein Tid?
   4.18) Was ist die Bedeutung der verschiedenen Ausdrcke, die in
d105 18
a122 6
   4.19) Wieso bekomme ich einen Fehler: "FATAL: palloc failure: memory
   exhausted?"
   4.20) Wie kann ich feststellen, welche PostgreSQL-Version ich laufen
   habe?
   4.21) Beim Arbeiten mit "Large-Objects" kommt die Fehlermeldung:
   invalid large obj descriptor. Warum?
d128 6
a133 7
   5.2) Was bedeutet die Meldung: NOTICE:PortalHeapMemoryFree: 0x402251d0
   not in alloc set!?
   5.3) Wie kann ich ein paar elegante neue Feldtypen und Funktionen zu
   PostgreSQL beitragen?
   5.4) Wie schreibe ich eine Funktion in C, die ein Tuple zurckliefert?
   5.5) Ich habe eine der Quellendateien gendert. Warum macht sich die
   nderung beim erneuten Compilerlauf nicht bemerkbar?
d138 1
a138 1
    1.1) Was ist PostgreSQL?
d140 15
a154 14
   PostgreSQL ist eine Verbesserung des
   POSTGRES-Datenbank-Managementsystems, ein "Next-Generation"
   DBMS-Forschungsprototyp. Whrend PostgreSQL das leistungsfhige
   Datenmodell und die reichhaltigen Datentypen von POSTGRES beibehlt,
   ersetzt es die PostQuel-Abfragesprache durch eine ausgedehnte
   Teilmenge von SQL. PostgreSQL ist frei und der komplette Quellcode ist
   verfgbar.
   
   Die PostgreSQL-Entwicklung wird von einem Team von Internet-Entwickler
   durchgefhrt, die alle an der PostgreSQL-Entwicklungs-Mailingliste
   teilnehmen. Der aktuelle Koordinator ist Marc G. Fournier
   (scrappy@@postgreSQL.org) (siehe unten, wie man sich anmelden kann).
   Dieses Team ist jetzt fr alle aktuellen und zuknftigen Entwicklungen
   von PostgreSQL verantwortlich.
d157 1
a157 1
   andere haben zur Portierung, zu den Tests, zur Fehlersuche und zur
d159 4
a162 4
   von dem PostgreSQL abstammt, ist auf die Bemhungen von vielen
   Studierenden und Diplomanden, sowie Programmierern, die unter der
   Weisung des Professors Michael Stonebraker an der Universitt von
   Kalifornien, Berkeley arbeiteteten, zurckzufhren.
d164 1
a164 1
   Der ursprngliche Name der Software bei Berkeley war Postgres. Als die
d166 1
a166 1
   Postgres95 gendert. Der Name wurde Ende 1996 zu PostgreSQL gendert.
d168 1
a168 1
    1.2) Welches Copyright liegt auf PostgreSQL?
d170 1
a170 1
   PostgreSQL steht unter folgendem COPYRIGHT (Originaltext):
d174 2
a175 1
   Copyright (c) 1994-6 Regents of the University of California
d196 6
a201 30
   Es gilt die Copyright-Klausel im Original! Informativ folgt hier eine
   bersetzung. Die bersetzung besitzt keinerlei rechtlichen Status.
   Insbesondere kann sich niemand auf diese bersetzung berufen:
   
   PostgreSQL Datenbank Management System
   
   Copyright (c) 1994-6 Regents of the University of California
   
   Die Erlaubnis, diese Software und seine Unterlagen fr jeden mglichen
   Zweck, ohne Gebhr und ohne eine schriftliche Vereinbarung zu
   benutzen, zu kopieren, zu ndern und zu verteilen wird hiermit
   bewilligt, vorausgesetzt da der oben genannte Urheberrechtsvermerk
   und dieser Paragraph und die folgenden zwei Paragraphen in allen
   Kopien erscheinen.
   
   IN KEINEM FALL IST DIE UNIVERSITT VON KALIFORNIEN GEGENBER JEDEM
   MGLICHEN BETEILIGTEN FR DIE DIREKTEN, INDIREKTEN, SPEZIELLEN,
   BEILUFIGEN ODER FOLGESCHDEN, EINSCHLIELICH DER VERLORENEN PROFITE
   VERANTWORTLICH, DIE AUS DEM GEBRAUCH VON DIESER SOFTWARE UND SEINEN
   UNTERLAGEN HERAUS ENTSTEHEN, SELBST WENN DIE UNIVERSITT VON
   KALIFORNIEN VON DER MGLICHKEIT SOLCHEN SCHADENS BENACHRICHTIGT WORDEN
   IST.
   
   DIE UNIVERSITT VON KALIFORNIEN LEHNT SPEZIELL ALLE MGLICHE GARANTIEN
   AB, EINSCHLIESSLICH, ABER NICHT BEGRENZT AUF, DIE IMPLIZIERTEN
   GARANTIEN VON GESCHFTSNUTZEN UND EIGNUNG ZU EINEM BESTIMMTEN ZWECK.
   DIE SOFTWARE, DIE NACHSTEHEND BEREITGESTELLT WIRD, BASIERT AUF EINER
   "SO WIE SIE IST"-GRUNDLAGE, UND DIE UNIVERSITT VON KALIFORNIEN HAT
   KEINE VERPFLICHTUNGEN, WARTUNG, SUPPORT, AKTUALISIERUNGSVORGNGE,
   VERBESSERUNGEN ODER NDERUNGEN ZUR VERFGUNG ZU STELLEN.
d205 24
a228 30
   Die Autoren haben PostgreSQL auf folgenden Plattformen kompiliert und
   getestet (einige dieser Kompilierungen bentigen den C-Compiler gcc):
     * aix - IBM auf AIX 3.2.5 or 4.x
     * alpha - DEC Alpha AXP auf Digital Unix 2.0, 3.2, 4.0
     * BSD44_derived - OS abgeleitet von 4.4-lite BSD (NetBSD, FreeBSD)
     * bsdi - BSD/OS 2.x, 3.x, 4.x
     * dgux - DG/UX 5.4R4.11
     * hpux - HP PA-RISC auf HP-UX 9.*, 10.*
     * i386_solaris - i386 Solaris
     * irix5 - SGI MIPS auf IRIX 5.3
     * linux - Intel i86 Alpha SPARC PPC M68k
     * sco - SCO 3.2v5 Unixware
     * sparc_solaris - SUN SPARC auf Solaris 2.4, 2.5, 2.5.1
     * sunos4 - SUN SPARC auf SunOS 4.1.3
     * svr4 - Intel x86 auf Intel SVR4 and MIPS
     * ultrix4 - DEC MIPS auf Ultrix 4.4
       
    1.4) Welche Nicht-Unix-Versionen sind verfgbar?
    
   Es ist mglich, die libpq C-Bibliothek, psql und andere Schnittstellen
   und Binaries zu kompilieren, um sie auf der MS-Windows-Plattform
   laufen zu lassen. In diesem Fall luft der Client auf MS-Windows und
   steht ber TCP/IP mit einem Server in Verbindung, der auf einer
   unserer untersttzten Unixplattformen luft. Es gibt die Datei
   win31.mak in der Distribution, um die Win32 libpq-Bibliothek und psql
   zu erzeugen.
   
   Der Datenbankserver arbeitet jetzt auch unter Benutzung der Cygnus
   Unix/NT-Porting-Bibliotheken auf Windows NT. Siehe auch
   pgsql/doc/README.NT in der Distribution.
d230 2
a231 2
   Es gibt eine weitere Portierung, die U/Win benutzt bei
   http://surya.wipro.com/uwin/ported.html.
d235 3
a237 5
   Die erste Anlaufadresse fr PostgreSQL ist der ftp-Server
   ftp://ftp.postgreSQL.org/pub
   
   Die entsprechenden Spiegelserver sind auf der Hauptwebseite
   aufgelistet.
d241 2
a242 22
   Es gibt keinen offiziellen Support fr PostgreSQL von der Universitt
   von Kalifornien, Berkeley. Der Support wird durch freiwilligen Einsatz
   geleistet.
   
   Die Mailing-Liste ist: pgsql-general@@postgreSQL.org. Die Liste ist fr
   PostgreSQL betreffende Themen vorbehalten. Um sich anzumelden, sende
   eine Email mit folgenden Zeilen im Text (nicht in der Betreffzeile):

        subscribe
        end

   an pgsql-general-request@@postgreSQL.org.
   
   Es gibt auch eine Digest-Liste (Eine Liste, die Mails zusammengefasst
   sendet). Um sich an dieser Digestliste anzumelden, sende eine Email
   an: pgsql-general-digest-request@@postgreSQL.org mit folgendem Text:

        subscribe
        end

   Die Digests werden an die Mitglieder der Liste geschickt, wenn ca.
   30kB an Mails zusammengekommen sind.
d244 25
a268 14
   Die Bug-Mailingliste ist verfbar. Um sich an dieser Liste anzumelden,
   sende eine Email an bugs-request@@postgreSQL.org mit folgendem Text:
   

        subscribe
        end

   Es gibt ebenfalls eine Entwickler-Diskussionsliste. Um sich an dieser
   Liste anzumelden, sende eine Email an hackers-request@@postgreSQL.org
   mit diesem Text:
   

        subscribe
        end
d270 2
a271 2
   Weitere Mailinglisten und Informationen zu PostgreSQL knnen auf der
   PostgreSQL-Homepage im WWW gefunden werden:
d273 1
a273 1
     http://postgreSQL.org
d275 8
a282 6
   Es gibt auerdem einen IRC-Channel im EFNet, Kanal #PostgreSQL. Bruce
   nutzt den Unix-Befehl: irc -c '#PostgreSQL' "$USER" irc.phoenix.net um
   teilzunehmen
   
   Kommerzieller Support fr PostgreSQL ist bei http://www.pgsql.com/
   verfgbar
d286 1
a286 1
   Das neueste Release von PostgreSQL ist die Version 6.5.
d288 1
a288 1
   Wir planen alle 4 Monate Hauptreleases herauszugeben.
d290 1
a290 1
    1.8) Welche Dokumente sind fr PostgreSQL verfgbar?
d293 11
a303 1
   der Distribution enthalten. Siehe im /doc-Verzeichnis.
d305 1
a305 1
   psql hat einige nette \d-Befehle, um Informationen ber Typen,
d308 1
a308 4
   Die Website enthlt sogar noch mehr Unterlagen.
   
    1.9) Wie erfahre ich etwas ber bekannte Fehler oder fehlende Eigenschaften
    von PostgreSQL?
d310 4
a313 3
   PostgreSQL untersttzt eine ausgedehnte Untermenge von SQL-92. Siehe
   unser TODO fr eine Auflistung der bekannten Fehler, fehlende
   Eigenschaften und zuknftige Plne.
d317 14
a330 6
   Es gibt nette SQL-Tutorials bei http://w3.one.net/~jhoffman/sqltut.htm
   und bei
   http://ourworld.compuserve.com/homepages/Graeme_Birchall/DB2_COOK.HTM.
   
   Viele unserer User mgen The Practical SQL Handbook, Bowman et al.,
   Addison Wesley.
d337 1
a337 1
    1.12) Wie kann ich am Entwicklerteam teilnehmen?
d339 1
a339 1
   Zuerst lade die neuesten Quellen herunter und lies die
d341 15
a355 14
   Distribution. Zweitens melde Dich zu den Mailinglisten pgsql-hackers
   und pgsql-patches an. Drittens sende qualitativ hochwertige
   Programmnderungen an die pgsql-patches Mailingliste.
   
   Es gibt ungefhr ein Dutzend Leute, die das commit-Recht im
   PostgreSQL-CVS Archiv haben. Alle haben so viele hochwertige Patches
   eingebracht, da es schwer fr die CVS-Verwalter war, mitzuhalten. Und
   wir hatten das Vertrauen, da die nderungen, die sie festlegten, sehr
   wahrscheinlich von hoher Qualitt sind.
   
    1.13) Wie sende ich einen Fehler-Bericht?
    
   Flle die "Fehler-Vorlage"-Datei (bug.template im doc-Verzeichnis) aus
   und sende sie an: bugs@@postgreSQL.org
d357 1
a357 1
   berprfe auch den ftp-Server ftp://ftp.postgreSQL.org/pub, um
d367 7
a373 28
          PostgreSQL hat die meisten Eigenschaften, die in groen
          kommerziellen DBMS's, wie Transaktionen, Sub-SELECTs, Trigger,
          Views und verfeinertes Locking, vorhanden sind. Wir haben
          einige Eigenschaften, die andere nicht haben, wie
          benutzerbestimmte Typen, Vererbung, Regeln, und die
          Multi-Versionen-Steuerung zum Verringern von konkurrierenden
          Locks. Wir haben keine referentielle Integritt von externen
          Schlsseln oder Outer Joins, aber wir arbeiten an diesen Dingen
          fr unser nchstes Release.
          
   Leistung
          PostgreSQL luft in zwei Modi. Im normalen fsync-Modus wird
          jede komplette Transaktion auf die Platte geschrieben und
          garantiert, da, selbst wenn das Betriebssystem abstrzt und
          der Strom ausfllt, die Daten sicher gespeichert wurden. In
          diesem Modus sind wir langsamer als die meisten kommerziellen
          Datenbanken, zum Teil, weil wenige von ihnen solch eine
          konservatives Methode der Datenspeicherung in ihren
          Standardbetriebsmodi betreiben.
          
          Im no-fsync-Modus sind wir normalerweise schneller als
          kommerzielle Datenbanken. In diesem Modus kann ein
          Betriebssystemabsturz jedoch Datenkorruption zur Folge haben.
          Wir arbeiten daran, einen Zwischenmodus zur Verfgung zu
          stellen, der unter weniger Leistungseinbue leidet als der
          fsync-Modus und die Datenintegritt innerhalb 30 Sekunden im
          Falle eines Betriebssystemabsturzes erlaubt. Der Modus ist
          durch den Datenbankverwalter auswhlbar.
d375 13
a387 7
          Im Vergleich zu MySQL oder schlankeren Datenbanksystemen sind
          wir hinsichtlich INSERTs/UPDATEs langsamer, weil wir einen
          Transaktions-Overhead haben. Selbstverstndlich hat MySQL kaum
          eine der Eigenschaften, die oben im Kapitel Eigenschaften
          erwhnt werden. PostgreSQL ist fr Flexibilitt und gute
          Eigenschaften designed, trotzdem fahren wir fort, die Leistung
          durch Profiling und Quellcodeanalyse zu verbessern.
d390 9
a398 8
          Wir stellen fest, da ein DBMS zuverlssig sein mu, oder es
          ist wertlos. Wir bemhen uns, gut geprften, bestndigen Code
          freizugeben, der nur ein Minimum an Programmfehler hat. Jede
          Freigabe hat mindestens einen Monat Betatestphase hinter sich,
          und unsere Freigabehistorie zeigt, da wir stabile, solide
          Versionen freigeben, die im Produktionsbetrieb genutzt werden
          knnen. Wir glauben, da wir im Vergleich mit anderer
          Datenbanksoftware vorteilhaft dastehen.
d401 9
a409 10
          Unsere Mailingliste stellt eine groe Gruppe Entwickler und
          Benutzer zur Behebung aller mglichen anzutreffenden Probleme
          zur Verfgung. Wir knnen nicht immer eine Fehlerbehebung
          garantieren, kommerzielle DBMS's tun dies aber auch nicht.
          Direkter Zugriff zu den Entwicklern, zur Benutzergemeinschaft,
          zu den Handbchern und zum Quellcode bietet hufig
          hherwertigen PostgreSQL-Support im Vergleich zu anderen
          DBMS's. Es gibt den kommerziellen "Pro-Ereignis"-Support, der
          fr diejenigen bereitgestellt wird, die ihn bentigen. (siehe
          Support-Faq),
d412 27
a438 5
          PostgrSQL ist frei verfgbar, sowohl fr die kommerzielle, wie
          fr die nicht-kommerzielle Nutzung. Du kannst Deinen Code fast
          ohne Beschrnkungen zu unserem hinzufgen. Die einzigen
          Beschrnkungen werden in der BSD-artigen Lizenz weiter oben
          aufgefhrt.
d445 1
a445 1
   Es sind zwei ODBC-Treiber verfgbar: PostODBC und OpenLink ODBC.
d447 2
a448 2
   PostODBC ist in der Distribution enthalten. Mehr Informationen knnen
   unter http://www.insightdist.com/psqlodbc abgerufen werden.
d451 1
a451 1
   Software arbeitet mit OpenLinks Standard-ODBC-Client, so da
d455 2
a456 2
   Sie werden dieses Produkt wahrscheinlich an Leute verkaufen, die
   kommerziellen Qualitts-Support brauchen, aber es wird immer eine
d460 3
a462 2
    2.2) Welche Werkzeuge gibt es, um PostgreSQL-Datenbanken ber Webseiten
    verfgbar zu machen?
d464 2
a465 4
   Eine nette Einfhrung zu Datenbank-gesttzten Webseiten kann unter
   http://www.webtools.com abgerufen werden.
   
   Eine weitere gibt es bei http://www.phone.net/home/mwm/hotlist/.
d470 2
a471 5
   PHP ist hervorragend fr einfache Anbindungen geeignet. Fr komplexere
   Aufgaben nutzen viele die Perl-Schnittstelle mit CGI.pm.
   
   Einen WWW-Gateway, basierend auf WDB, kann man bei
   http://www.eol.ists.ca/~dunlop/wdb-p95 herunterladen.
d476 2
a477 4
   Wir haben eine nette grafische Benutzerschnittstelle mit Namen
   pgaccess, welche in der Distribution enthalten ist. pgaccess hat auch
   einen Reportgenerator. Die Webpage liegt hier:
   http://www.flex.ro/pgaccess
d479 1
a479 1
   In der Distribution gibt es auerdem ecpg,, welches eine eingebundene
d482 1
a482 1
    2.4) Welche Sprachen sind fr die Kommunikation mit PostgreSQL verfgbar?
d484 11
a494 11
   Wir haben:
     * C(libpq)
     * C++(libpq++)
     * Embedded C(ecpg)
     * Java(jdbc)
     * Perl(perl5)
     * ODBC(odbc)
     * Python(PyGreSQL)
     * TCL(libpgtcl)
     * ein rohes C/4GL(contrib/pginterface)
     * Embedded HTML(PHP from http://www.php.net)
d499 1
a499 1
    3.1) Warum schlgt initdb fehl?
d501 5
a505 8
     * berprfe, da keine Binaries vorheriger Versionen in Deinem Pfad
       (PATH-Variable) sind. (Wenn Du die Meldung siehst:
       NOTICE:heap_modifytuple: repl is \ 9, ist das das Problem.)
     * berprfe, da der Pfad richtig gesetzt ist
     * berprfe, ob der User postgres der Eigentmer der entsprechenden
       Dateien ist
       
    3.2) Wie installiere ich PostgreSQL woanders als in /usr/local/pgsql?
d507 3
a509 4
   Der einfachste Weg ist mittels der --prefix Option beim configure den
   Pfad anzugeben. Falls Du das vergessen haben solltest, kannst Du die
   Datei Makefile.global ndern und POSTGRESDIR entsprechend anpassen,
   oder Du erzeugst ein Makefile.custom und definierst POSTGRESDIR dort.
d511 2
a512 2
    3.3) Wenn ich den postmaster starte, bekomme ich einen Bad System Call oder
    eine core dumped Meldung. Warum?
d514 9
a522 3
   Das kann verschiedene Ursachen haben. berprfe zuerst, ob Dein Kernel
   System V Extensions enthlt. PostgreSQL bentigt die
   Kernel-Untersttzung fr Shared Memory und Semaphoren.
d525 1
a525 1
    IpcMemoryCreate Fehlermeldungen. Warum?
d527 3
a529 13
   Du hast entweder den Kernel nicht fr Shared Memory konfiguriert, oder
   Du mut den Shared Memory Bereich vergrern. Die genaue Gre hngt
   von Deiner Systemarchitektur ab und mit wievielen Puffern und
   Serverprozessen Du postmaster konfiguriert hast. Fr die meisten
   Systeme, mit Standardangaben fr Puffer und Prozessen bentigst Du ein
   Minimum von ca. 1 MB.
   
    3.5) Wenn ich versuche, den postmaster zu starten, bekomme ich
    IpcSemaphoreCreate Fehlermeldungen. Warum?
    
   Falls die Fehlermeldung IpcSemaphoreCreate: semget failed (No space
   left on device) lautet, dann ist Dein Kernel mit zu wenig Semaphoren
   konfiguriert. Postgres bentigt eine Semaphore pro mglichen
d531 21
a551 39
   geringeren Anzahl an Backend-Prozessen zu starten. Benutze dazu die -N
   Option mit einem Wert kleiner als die standardmigen 32. Eine
   dauerhafte Lsung wre es, die Kernel-Parameter SEMMNS und SEMMNI zu
   erhhen.
   
   Falls die Fehlermeldung anders aussieht, hast Du mglicherweise keine
   Semaphoren-Untersttzung in Deinem Kernel aktiviert.
   
    3.6) Wie verhindere ich, da andere Hosts auf meine PostgreSQL Datenbanken
    zugreifen?
    
   Die Standardeinstellung ist, da PostgreSQL Verbindungen von der
   lokalen Maschine ber Unix-Domain-Sockets erlaubt. Andere Maschinen
   werden keine Verbindung aufbauen knnen, bis der postmaster mit der -i
   Option gestartet ist und die Host-basierte Authentizierung in der
   Datei $PGDATA/pg_hba.conf entsprechend angepasst ist. Das erlaubt
   TCP/IP-Verbindungen.
   
    3.7) Warum kann ich mich nicht von einer anderen Maschine mit meiner
    Datenbank verbinden?
    
   Die Standardeinstellung erlaubt nur Unix-Domain-Socket-Verbindungen
   der lokalen Maschine. Um TCP/IP Verbindungen zu ermglichen, stelle
   sicher, da der postmaster mit der -i Option gestartet wurde, und fge
   einen passenden Host-Eintrag in die Datei pgsql/data/pg_hba.conf ein.
   Siehe auch die pg_hba.conf Man-Page.
   
    3.8) Warum kann ich nicht als root auf die Datenbank zugreifen?
    
   Du solltest keine Datenbank-Benutzer mit der User-ID 0 (root)
   erzeugen. Sie werden auf keine Datenbank zugreifen knnen. Das ist
   eine Sicherheitsmanahme, wegen der Mglichkeit Objekt-Module
   dynamisch in die Datenbank zu linken.
   
    3.9) Alle meine Server strzen bei gleichzeitigem Tabellenzugriff ab.
    Warum?
    
   Dieses Problem kann durch einen Kernel verursacht werden, der ohne
   Support fr Semaphoren konfiguriert wurde.
d553 1
a553 1
    3.10) Wie optimiere ich die Datenbankmaschine fr bessere Leistung?
d555 2
a556 2
   Sicherlich knnen Indizes Abfragen beschleunigen. Der explain Befehl
   erlaubt Dir zu sehen, wie PostgreSQL Deine Abfrage interpretiert und
d559 60
a618 63
   Wenn Du eine Menge INSERTs machst, berprfe, ob Du sie als
   Stapelverarbeitung mit dem copy-Befehl abarbeiten kannst. Das ist viel
   schneller als einzelne INSERTs. Zweitens, SQL-Statements, die nicht in
   einem begin work/commit Transaktions-Block eingegeben werden, werden
   als eigene Transaktion behandelt. berprfe, ob die Statements nicht
   in einen einzelnen Transaktions-Block zusammengefasst werden knnen.
   Das reduziert den Transaktions-Overhead. Du kannst auch erwgen,
   Indizes zu lschen und neu zu erstellen, wenn Du groe Datenmengen
   nderst.
   
   Es gibt verschiedene Tuning-Manahmen, die man ergreifen kann. Du
   kannst fsync() abschalten, indem Du beim Starten des postmasters die
   Optionen -o -F angibst. Das hindert fsync()s daran, nach jeder
   Transaktion die Daten auf die Platte zu schreiben. Du kannst auch mit
   der -B Option des postmasters die Anzahl der Shared Memory Puffer fr
   den Backend-Prozess erhhen. Falls Du diesen Wert zu hoch einstellst,
   kann es sein, da der postmaster nicht startet, weil der Shared Memory
   Speicherplatz Deines Kernels aufgebraucht wird. Jeder Puffer ist 8 kB
   gro und es gibt standardmig 64 Puffer.
   
   Du kannst ebenfalls die -S Option des Backends nutzen, um die Gre
   des Speicherplatzes fr temporres Sortieren zu erhhen. Der -S Wert
   wird in Kilobyte gemessen und ist standardmig auf 512 kB festgelegt.
   Es wre jedoch unklug, den Wert zu hoch anzugeben, da ein Query
   mglicherweise Speicherplatzmangel verursacht, wenn es viele
   gleichzeitige Sortierungen durchfhren mu.
   
   Der cluster Befehl kann benutzt werden, um Daten in Basistabellen zu
   gruppieren, so da sie auf einen Index zusammengebracht werden. Siehe
   auch die cluster(l) Man-Page fr weitere Details.
   
    3.11) Welche Debugging/Fehlersuch-Hilfsmittel sind fr PostgreSQL
    verfgbar?
    
   PostgreSQL hat einige Mglichkeiten, Statusinformationen zu berichten,
   die ntzlich fr die Fehlersuche sein knnen.
   
   Erstens, wenn beim configure-Lauf die Option --enable-cassert
   angegeben wurde, verfolgen viele assert()s den Fortschritt des
   Backends und halten das Programm an, wenn etwas Unerwartetes passiert.
   
   Postmaster und postgres, haben mehrere Fehlersuch-Optionen zur
   Verfgung. Stelle zuerst sicher, da Du den Standard-Output und
   Fehlerkanal in eine Datei umleitest, wenn Du den postmaster startest,
   :

        cd /usr/local/pgsql
        ./bin/postmaster >server.log 2>&1 &

   Das erzeugt eine server.log Datei im PostgreSQL-Verzeichnis. Diese
   Datei enthlt ntzliche Informationen ber Probleme oder Fehler, die
   im Server aufgetreten sind. Postmaster hat eine -d Option, die noch
   detailliertere Informationen liefert. Zur -d Option wird eine Nummer
   angegeben, die den Debug-Level - also die Menge der berichteten
   Information - angibt. Achtung, hohe Debug-Level erzeugen schnell groe
   Logdateien!
   
   Du kannst tatschlich das Postgres-Backend auf der Kommandozeile
   laufen lassen und SQL-Statements direkt eingeben. Diese Vorgehensweise
   wird aber nur zur Fehlersuche empfohlen. Beachte, da ein
   Zeilenumbruch das SQL-Statement beendet, nicht das Semikolon. Wenn Du
   PostgreSQL mit Debugging-Symbolen kompiliert hast, kannst Du einen
   Debugger benutzen, um zu beobachten, was passiert. Da das Backend
d621 1
a621 2
   reproduziert werden. Einige Betriebssysteme knnen sich an einen
   Backend-Prozess direkt anhngen, um Probleme zu diagnostizieren.
d623 81
a703 69
   Das Programm postgres hat -s, -A und -t Optionen, die bei der
   Fehlersuche und Leistungsmessung sehr ntzlich sein knnen. Du kannst
   das Paket auch mit Profiling kompilieren, um zu sehen, welche
   Funktionen wieviel Ausfhrungszeit beanspruchen. Das Backend Profil
   wird im Verzeichnis pgsql/data/base/dbname abgelegt. Das Client Profil
   wird in das aktuelle Verzeichnis abgelegt.
   
    3.12) Ich bekomme die Meldung "Sorry, too many clients", wenn ich eine
    Verbindung versuche. Warum?
    
   Du mut die Grenze des postmasters, die festlegt, wieviele
   gleichzeitige Backend-Prozesse gestartet werden knnen, hochsetzen.
   
   In Postgres 6.5 sind das normalerweise 32 Prozesse. Du kannst diesen
   Wert dadurch erhhen, da Du den postmaster mit einem entsprechenden
   -N Wert neu startest. In der Standardkonfiguration kannst Du -N auf
   maximal 1024 setzen. Falls Du mehr brauchst, erhhe MAXBACKENDS in
   include/pg_config.h und kompiliere das Paket neu. Du kannst den
   Standardwert von -N whrend der Konfiguration setzen, indem Du
   --with-maxbackends angibst. Anmerkung: Falls Du -N grer als 32
   einstellst, solltest Du -B auf einen Wert, hher als 64 setzen. Fr
   eine hohe Anzahl an Backend-Prozessen, solltest Du mglicherweise
   einige Unix-Kernel Parameter ebenfalls erhhen. Folgendes Parameter
   solltest Du prfen: die Maximalgre der Shared Memory Blocks SHMMAX,
   die Maximalanzahl der Semaphoren SEMMNS und SEMMNI, die maximale
   Anzahl von Prozessen NPROC, die maximale Anzahl von Prozessen pro User
   MAXUPRC, und die Maximalzahl der geffneten Dateien NFILE und NINODE.
   Der Grund fr die Begrenzung der erlaubten Backend-Prozesse liegt
   darin, da verhindert werden soll, da das System seine freien
   Ressourcen aufbraucht.
   
   In den Postgres-Versionen vor 6.5 war die maximale Anzahl von Backends
   auf 64 festgelegt und eine nderung setzte eine erneute Kompilierung
   voraus, bei der die Konstante MaxBackendId in
   include/storage/sinvaladt.h. entsprechend angepasst wurde.
   
    3.13) Was sind die pg_psort.XXX Dateien in meinem Datenbank-Verzeichnis?
    
   Dies sind temporre Dateien, die durch den Query-Ausfhrer erzeugt
   werden. Wenn zum Beispiel eine Sortierung durchgefhrt werden mu, um
   ein ORDER BY auszufhren, und diese Sortierung mehr Platz bentigt,
   als mit dem Backend-Parameter -S erlaubt wurde, dann werden diese
   temporren Dateien erzeugt, um die Daten dort zu halten.
   
   Die temporren Dateien sollten automatisch gelscht werden, falls das
   Backend jedoch whrend einer Sortierung abstrzt, bleiben sie
   erhalten. Wenn zu diesem Zeitpunkt keine Transaktion luft, kannst Du
   die pg_tempNNN.NN Dateien ohne Gefahr lschen.
   
    3.14) Wie richte ich eine Benutzergruppe (pg_group) ein?
    
   Zur Zeit gibt es keine einfache Schnittstelle, um Benutzergruppen
   einzurichten Du mut explizit die pg_group-Tabelle mittels
   INSERT/UPDATE modifizieren. Zum Beispiel:

        jolly=> INSERT into pg_group (groname, grosysid, grolist)
        jolly=>     values ('posthackers', '1234', '{5443, 8261}');
        INSERT 548224
        jolly=> grant INSERT on foo to group posthackers;
        CHANGE
        jolly=>

   Die Felder in pg_group sind:
     * groname: der Gruppenname. Dieser Name sollte rein alphanumerisch
       sein. Keine Unterstriche oder andere Punktionen
     * grosysid: die Gruppen-ID. Die Gruppen-ID ist ein int4-Feld. Sie
       sollte eindeutig fr jede Gruppe sein.
     * grolist: die Liste der pg_user IDs, die zu dieser Gruppe gehren.
       (int4[].)
d708 1
a708 10
    4.1) Das System scheint Kommata, Dezimalpunkte und Datumsformate
    durcheinanderzubringen.
    
   berprfe die Konfiguration Deiner Locale-Einstellung. PostgreSQL
   benutzt die Einstellungen des jeweiligen Users und nicht die des
   postmaster Prozesses. Es gibt postgres und psql SET Befehle, um das
   Datumsformat zu kontrollieren. Setzte diese entsprechend Deiner
   Arbeitsumgebung.
   
    4.2) Was ist der genauer Unterschied zwischen Binary Cursors und Normal
d711 1
a711 12
   Vgl. die declare Man-Page fr eine Beschreibung.
   
    4.3) Wie whle ich per SELECT nur die ersten paar Zeilen in einem Query
    aus?
    
   Vgl. die fetch Man-Page, oder benutze SELECT ... LIMIT....
   
   Das verhindert nur, da alle Ergebniszeilen zum Client bermittelt
   werden. Die komplette Abfrage mu abgearbeitet werden, selbst wenn Du
   nur die ersten paar Zeilen haben mchtest. Ziehe ein Query in
   Erwgung, das ein ORDER BY benutzt. Es gibt keine Mglichkeit Zeilen
   zurckzuliefern, bevor nicht die komplette Abfrage abgearbeitet ist.
d713 2
a714 2
    4.4) Wie bekomme ich eine Liste der Tabellen oder anderen Dingen, die ich
    in psql sehen kann
d716 1
a716 5
   Du kannst Dir die Datei pgsql/src/bin/psql/psql.c mit dem Quellcode
   fr psql ansehen. Sie enthlt die SQL-Befehle, die die
   Backslash-Kommandos (\) ausfhren. Seit Postgres 6.5 kannst Du psql
   auch mit der -E Option starten. Dadurch gibt psql die Queries aus, die
   es bei der Ausfhrung der Befehle benutzt.
d718 29
a746 5
    4.5) Wie entferne ich eine Spalte von einer Tabelle?
    
   Wir untersttzen alter table drop column nicht, aber mache es so:

        SELECT ...  -- whle alle Spalten auer die, die Du entfernen willst
d749 45
a793 27
        DROP TABLE old_table;
        ALTER TABLE new_table RENAME TO old_table;

    4.6) Was ist die Maximalgre fr eine Zeile, eine Tabelle, eine Datenbank?
    
   Zeilen sind auf 8 kB begrenzt, aber das kann gendert werden, indem Du
   in include/config.h die Konstante BLCKSZ nderst. Um Attribute mit
   mehr als 8 kB zu nutzen, kannst Du auch das "Large Object Interface"
   benutzen.
   
   Zeilen berschreiten keine 8 kB-Grenzen. Eine Zeile mit 5 kB wird 8 kB
   Speicherplatz bentigen.
   
   Tabellen- und Datenbankgren haben keine Grenzen. Es gibt viele
   Datenbanken mit zig Gigabytes und wahrscheinlich einige mit hunderten
   Gigabyte.
   
    4.7) Wieviel Plattenplatz bentigt eine Datenbank zur Speicherung einer
    Datendatei mit zeilenweisen Datenstzen?
    
   Eine Postgres Datenbank kann ungefhr sechseinhalb mal soviel Platz
   brauchen, wie eine einfache Textdatei.
   
   Betrachten wir eine Datei mit 300.000 Zeilen, mit jeweil zwei Integern
   pro Zeile. Die einfache Textdatei bentigt 2,4 MB Speicherplatz. Die
   Gre der Postgres Datenbankdatei, die diese Daten enthlt, liegt
   ungefhr bei 14 MB.
d795 2
a796 2
   + 8 Bytes: zwei Integer-Felder @@ jedes 4 Bytes
   + 4 Bytes: Zeiger auf den Datensatz
d798 1
a798 3
    48 Bytes pro Zeile

   Die Gre einer Datenseite in PostgreSQL ist 8192 Bytes (8 KB), also:
d800 2
d803 2
a804 2
   ---------------------   =  171 Zeilen pro Seite (aufgerundet)
     48 Bytes pro Zeile
d806 3
a808 3
   300000 Datenzeilen
   -----------------------  =  1755 Datenbankseiten
      171 Zeilen pro Seite
d810 1
a810 1
1755 Datenbankseiten * 8192 Bytes pro Seite  =  14,376,960 Bytes (14MB)
d812 5
a816 2
   Indizes haben nicht einen solchen Overhead, sie beinhalten jedoch die
   Daten, die sie indizieren und knnen so auch sehr gro werden.
d818 1
a818 1
    4.8) Wie finde ich heraus, welche Indizes oder Operationen in der Datenbank
d821 55
a875 2
   psql hat eine Vielzahl von Backslash Befehlen, um solche Informationen
   zu zeigen. Benutze \?, um sie zu sehen.
d877 2
a878 27
   Schaue Dir auch die Datei pgsql/src/tutorial/syscat.source. an. Sie
   illustriert viele der SELECTs, die bentigt werden, um diese
   Informationen von der Datenbank-Systemtabelle zu erhalten
   
    4.9) Meine Queries sind langsam oder nutzen die Indizes nicht. Warum?
    
   PostgeSQL pflegt automatische Statistiken nicht. Um die Statistiken zu
   aktualisieren, mut Du ein explizites vacuum eingeben. Nach dieser
   Aktualisierung wei der Optimierer wieviele Zeilen in der Tabelle sind
   und kann besser entscheiden, ob Indizes benutzt werden sollten. Der
   Optimierer benutzt keine Indizes, wenn die Tabelle klein ist, weil ein
   sequentieller Suchlauf dann schneller sein wrde.
   
   Benutze den Befehl vacuum analyze fr die spaltenspezifische
   Optimierung. Vacuum analyze ist fr komplexe Multi-Join-Abfragen
   wichtig, damit der Optimierer die Anzahl der Zeilen von jeder Tabelle
   schtzen und dann die passende Join-Reihenfolge whlen kann. Das
   Backend verfolgt die Spaltenstatistik nicht selbst, so da vacuum
   analyze regelmig aufgerufen werden sollte.
   
   Indizes werden nicht fr ORDER BY Operationen benutzt.
   
   Bei der Nutzung von Wildcard-Operatoren wie LIKE oder ~,  knnen
   Indizes nur benutzt werden, wenn die Suche mit dem Anfang eines
   Strings startet. Um also Indizes zu nutzen, sollten LIKE-Suchen nicht
   mit %, und ~  beginnen (Die Sucheparameter regulrer Ausdrcke sollten
   mit ^.  beginnen.
d880 1
a880 1
    4.10) Auf welche Weise kann ich sehen, wie der Query-Optimierer meine
d885 1
a885 1
    4.11) Was ist ein R-Tree Index?
d896 2
a897 2
   Die kanonische Verffentlichung , die das originale R-Tree Design
   beschreibt ist:
d903 1
a903 1
   Du kannst dieses Werk ebenfalls in Stonebraker's "Readings in Database
d912 1
a912 1
    4.12) Was ist "Genetic Query Optimization"?
d915 37
a951 28
   beim Joining vieler Tabellen auf der Basis genetischer Algorithmen
   (GA) zu lsen. Es erlaubt die Behandlung von groen Join-Queries ohne
   erschpfende Suche.
   
   Fr weitere Informationen siehe die Dokumentation.
   
    4.13) Wie verfahre ich bei der Suche mit regulren Ausdrcken und bei einer
    Suche mit Ignorierung der Gro- und Kleinschreibweisen?
    
   ~ und ~*  sind wahrscheinlich das, was Du willst. Vgl. psql's \do
   Befehl.
   
    4.14) Wie ermittle ich in einem Query, da ein Feld NULL ist?
    
   Du testest die Spalte mit IS NULL und IS NOT NULL.
   
    4.15) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
    
Typ             interner Name   Bemerkungen
--------------------------------------------------
CHAR            char            1 Zeichen
CHAR(#)         bpchar          mit Leerzeichen gefllt bis zur angegebenen Ln
ge
VARCHAR(#)      varchar         Die Gre legt die Maximallnge fest, kein Ausf
llen mit Leerzeichen
TEXT            text            Die Lnge wird nur durch die maximale Zeilenln
ge beschrnkt
BYTEA           bytea           Bytearray mit variabler Lnge
d953 2
a954 2
   Du mut die internen Namen benutzen, wenn Du interne Operationen
   durchfhren willst.
d957 89
a1045 25
   Bytes geben die Lnge an, gefolgt von den Daten). CHAR(#) belegt die
   maximale Anzahl von Bytes, unabhngig davon, wieviele Daten im Feld
   gespeichert werden. TEXT, VARCHAR(#) und BYTEA haben alle eine
   variable Lnge auf dem Datentrger, deshalb gibt es einen leichten
   Geschwindigkeitsnachteil bei der Nutzung dieser Typen. Genauer, der
   Nachteil gilt fr den Zugriff auf alle Spalten nach der ersten Spalte
   dieses Typs.
   
    4.16) Wie erzeuge ich ein serielles Feld mit automatischer Erhhung des
    Inhalts?
    
   PostgreSQL untersttzt einen SERIAL Datentyp. Er erzeugt automatisch
   eine Sequenz und einen Index auf die Spalte. Siehe die create_sequence
   Man-Page fr weitere Informationen ber Sequenzen. Du kannst aber auch
   das Oid Feld jeder Zeile als eindeutigen Wert nutzen. Jedoch mut Du,
   falls Du Deine Datenbank einmal komplett ausgeben und wieder einlesen
   willst, die pg_dump's -o oder die copy with oids Option benutzen, um
   die Oids zu retten.
   
    4.17) Was ist ein Oid? Was ist ein Tid?
    
   Oids sind PostgreSQLs Antwort auf eindeutige Zeilen-IDs. Jede Zeile,
   die in PostgreSQL erzeugt wird, bekommt eine eindeutige Oid. Alle
   Oids, die whrend initdb erzeugt werden, sind kleiner als 16384 (nach
   backend/access/transam.h). Alle Oids, die durch den Benutzer erzeugt
d1047 2
a1048 2
   all diese Oids nicht nur innerhalb einer Tabelle oder Datenbank,
   sondern in der gesamten PostgreSQL Installation eindeutig.
d1050 17
a1066 24
   PostgreSQL benutzt Oids in seinen internen Systemtabellen, um Zeilen
   zwischen den Tabellen zu verbinden. Diese Oids knnen zur
   Identifikation spezifischer Benutzerzeilen und in Joins genutzt
   werden. Es wird empfohlen, den Spaltentyp OID zu nutzen, um Oids-Werte
   zu speichern. Siehe die sql(l) Man-Page, um die anderen internen
   Spalten kennenzulernen. Du kannst einen Index auf ein Oid-Feld
   erzeugen, um schnelleren Zugriff zu erreichen.
   
   Oids werden allen neuen Zeilen von einem zentralen Bereich, der von
   allen Datenbanken genutzt wird, zugewiesen. Es gibt keinen Grund,
   warum Du nicht die Oid ndern, oder eine Kopie der Tabelle mit den
   originalen Oids anlegen knntest.
        CREATE TABLE new_table(old_oid oid, mycol int);
        SELECT INTO new SELECT old_oid, mycol FROM old;
        COPY new TO '/tmp/pgtable';
        DELETE FROM new;
        COPY new WITH OIDS FROM '/tmp/pgtable';

   Tids werden genutzt, um spezifische physische Zeilen mit Block und
   Versatzwert zu identifizieren. Tids ndern sich, wenn Zeilen gendert
   oder neu geladen werden. Sie werden von Index-Eintrgen genutzt, um
   die Zeilen physisch zu adressieren.
   
    4.18) Was ist die Bedeutung der verschiedenen Ausdrcke, die in PostgreSQL
d1081 160
a1240 43
    4.19) Wieso bekomme ich einen Fehler: "FATAL: palloc failure: memory
    exhausted?"
    
   Mglicherweise ist der virtuelle Speicher verbraucht oder Dein Kernel
   hat eine niedrige Grenze fr bestimmte Ressourcen. Versuche dieses,
   bevor Du den postmaster startest:

        ulimit -d 65536
        limit datasize 64m

   Je nach Deiner eingesetzten Shell mag nur einer dieser Befehle
   funktionieren. Aber es wird die Grenze des Datensegments fr Prozesse
   erhhen und vielleicht luft so Dein Query durch. Dieser Befehl wirkt
   sich auf den aktuellen Prozess und alle seine Unterprozesse aus, die
   nach diesem Befehl gestartet werden. Falls Du ein Problem mit dem
   SQL-CLient hast, weil das Backend zu viele Daten zurckliefert,
   versuche diesen Befehl, bevor Du den SQL-Client startest.
   
    4.20) Wie kann ich feststellen, welche PostgreSQL-Version ich laufen habe?
    
   Gib in psql SELECT version(); ein
   
    4.21) Beim Arbeiten mit "large-object" kommt die Fehlermeldung: invalid
    large obj descriptor. Warum?
    
   Du solltest die Befehle BEGIN WORK und COMMIT bei jeden Gebrauch von
   Large Objects benutzen. Also um lo_open ... lo_close.
   
   Die Dokumentation hat schon immer darauf hingewiesen, da lo_open in
   eine Transaktion eingebunden werden mu, aber die PostgreSQL Versionen
   vor 6.5 haben diese Regel nicht erzwungen. Statt dessen scheiterten
   sie gelegentlich, wenn Du diese Regel gebrochen hattest.
   
   Das aktuelle PostgreSQL erzwingt diese Regel, indem es die Handles der
   Large Objects beim COMMIT der Transaktion schliet, was sofort nach
   dem lo_open passiert, wenn Du nicht innerhalb einer Transaktion bist.
   So fhrt der erste Versuch, etwas mit dem Large Object zu machen zu
   einem invalid large obj descriptor. Also wird der Code, der bisher
   benutzt wurde, nun diese Fehlermeldung erzeugen, wenn Du keine
   Transaktionen benutzt hast.
   
   Falls Du eine Client-Schnittstelle wie ODBC benutzt, kann es sein, da
   Du auto-commit off setzen mut.
d1248 2
a1249 4
   Dieses Problem kann viele Ursachen haben. Teste deine Funktion zuerst
   in einem Extra-Testprogramm. Stelle auerdem sicher, da Deine
   Funktion nicht etwa elog-Nachrichten sendet, wenn der Client Daten
   erwartet, wie in den type_in() oder type_out() Funktionen
d1251 2
a1252 2
    5.2) Was bedeutet die Meldung: NOTICE:PortalHeapMemoryFree: 0x402251d0 not
    in alloc set!?
d1254 20
a1273 8
   Du pfreest etwas, das Du nicht palloct hast! Stelle sicher, da Du
   nicht malloc/free und palloc/pfree durcheinanderwrfelst.
   
    5.3) Wie kann ich ein paar elegante neue Feldtypen und Funktionen zu
    PostgreSQL beitragen?
    
   Sende Deine Erweiterungen zur pgsql-hackers Mailing Liste, und sie
   werden eventuell im contrib/ Verzeichnis enden.
d1275 1
a1275 1
    5.4) Wie schreibe ich eine Funktion in C, die einen Tuple zurckliefert?
d1277 2
a1278 2
   Das erfordert derart extreme Genialitt, da die Autoren es niemals
   versucht haben, obwohl es im Prinzip zu machen wre.
d1280 4
a1283 5
    5.5) Ich habe eine der Quellendateien gendert. Warum macht sich die
    nderung beim erneuten Compilerlauf nicht bemerkbar?
    
   Die Makefiles finden nicht die richtigen Abhngigkeiten. Du mut ein
   make clean und dann ein weiteres make machen.
@


1.3
log
@Update email addresses.
@
text
@d685 1
a685 1
   include/config.h und kompiliere das Paket neu. Du kannst den
@


1.2
log
@Change ET_WARN to ET_NOTICE to match internal codes, leave message as
WARNING.  Fix German FAQ mention about warning.
@
text
@d6 1
a6 1
   Current maintainer: Bruce Momjian (maillist@@candle.pha.pa.us)
@


1.1
log
@Add new FAQ's.
@
text
@d518 1
a518 1
       WARN:heap_modifytuple: repl is \ 9, ist das das Problem.)
@
