Commit 5be1e13d authored by Bruce Momjian's avatar Bruce Momjian

Update German FAQ.

Ian Barwick
parent 83ef003f
...@@ -5,17 +5,19 @@ ...@@ -5,17 +5,19 @@
Deutsche Übersetzung von Ian Barwick (barwick@gmx.net). Deutsche Übersetzung von Ian Barwick (barwick@gmx.net).
Letzte Aktualisierung der deutschen Übersetzung: Fr., den 17.12.2004, Letzte Aktualisierung der deutschen Übersetzung: So., den 16.1.2005,
22:30 MEZ 22:30 MEZ
Die aktuellste Version dieses Dokuments liegt auf der Die aktuellste Version dieses Dokuments liegt auf der
PostgreSQL-Website: PostgreSQL-Website:
* http://www.postgresql.org/docs/faqs/FAQ.html (engl.) * http://www.postgresql.org/files/documentation/faqs/FAQ.html
* http://www.postgresql.org/docs/faqs/FAQ_german.html (dt.) (engl.)
* http://www.postgresql.org/files/documentation/faqs/FAQ_german.html
(dt.)
Übersetzungen dieses Dokuments in andere Sprachen sowie plattform- Übersetzungen dieses Dokuments in andere Sprachen sowie plattform-
spezifische FAQs können unter spezifische FAQs können unter http://www.postgresql.org/docs/faq/
http://www.postgresql.org/docs/index.html#faqs eingesehen werden. eingesehen werden.
_________________________________________________________________ _________________________________________________________________
Allgemeine Fragen Allgemeine Fragen
...@@ -69,55 +71,52 @@ ...@@ -69,55 +71,52 @@
Cursors? Cursors?
4.2) Wie wähle ich per SELECT-Anweisung nur die ersten paar Zeilen 4.2) Wie wähle ich per SELECT-Anweisung nur die ersten paar Zeilen
bzw. eine beliebige Zeile in einer Abfrage aus? bzw. eine beliebige Zeile in einer Abfrage aus?
4.3) Wie bekomme ich eine Liste der Tabellen oder anderen Dinge, die 4.3) Wie finde ich heraus, welche Tabellen, Indizes, Datenbanken oder
ich in psql sehen kann? Benutzer in der Datenbank definiert sind? Wie bekomme ich die von psql
verwendeten Abfragen?
4.4) Wie entferne ich eine Spalte aus einer Tabelle? Wie ändere ich 4.4) Wie entferne ich eine Spalte aus einer Tabelle? Wie ändere ich
den Datentyp einer Spalte? den Datentyp einer Spalte?
4.5) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine 4.5) Was ist die Maximalgröße für eine Zeile, eine Tabelle, eine
Datenbank? Datenbank?
4.6) Wieviel Plattenplatz wird benötigt, um die Daten aus einer 4.6) Wieviel Plattenplatz wird benötigt, um die Daten aus einer
typischen Textdatei abzuspeichern? typischen Textdatei abzuspeichern?
4.7) Wie finde ich heraus, welche Tabellen, Indizes, Datenbanken oder 4.7) Meine Abfragen sind langsam oder nutzen die Indizes nicht. Warum?
Benutzer in der Datenbank definiert sind?Wie finde ich heraus, welche 4.8) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer
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
("GEQO") meine Abfrage auswertet? ("GEQO") meine Abfrage auswertet?
4.10) Was ist ein R-Tree Index? 4.9) Was ist ein R-Tree Index?
4.11) Was ist der "Genetic Query Optimizer"? 4.10) Was ist der "Genetic Query Optimizer"?
4.12) Wie verfahre ich bei der Suche mit regulären Ausdrücken und bei 4.11) Wie verfahre ich bei der Suche mit regulären Ausdrücken und bei
einer Suche, bei der Groß- und Kleinschreibweisen ignoriert werden? einer Suche, bei der Groß- und Kleinschreibweisen ignoriert werden?
Wie verwende ich bei solchen Suchabfragen einen Index? Wie verwende ich bei solchen Suchabfragen einen Index?
4.13) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist? 4.12) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist?
4.14) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen? 4.13) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
4.15.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung 4.14.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung
des Wertes? des Wertes?
4.15.2) Wie bekomme ich den Wert einer SERIAL-Sequenz? 4.14.2) Wie bekomme ich den Wert einer SERIAL-Sequenz?
4.15.3) Führt currval() zu einer Race-Condition mit anderen Nutzern? 4.14.3) Führt currval() zu einer Race-Condition mit anderen Nutzern?
4.15.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch 4.14.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch
nicht zurückgesetzt? Warum gibt es Lücken in der Nummerierung meiner nicht zurückgesetzt? Warum gibt es Lücken in der Nummerierung meiner
Sequenz-/SERIAL-Spalte? Sequenz-/SERIAL-Spalte?
4.16) Was ist ein OID? Was ist ein TID? 4.15) Was ist ein OID? Was ist ein TID?
4.17) Welche Bedeutung haben die verschiedenen Ausdrücke, die in 4.16) Welche Bedeutung haben die verschiedenen Ausdrücke, die in
PostgreSQL benutzt werden (z.B. attribute, class,...)? PostgreSQL benutzt werden (z.B. attribute, class,...)?
4.18) Wieso bekomme ich den Fehler: "FATAL: Memory exhausted in 4.17) Wieso bekomme ich den Fehler: "FATAL: Memory exhausted in
AllocSetAlloc()"? AllocSetAlloc()"?
4.19) Wie kann ich feststellen, welche PostgreSQL-Version bei mir 4.18) Wie kann ich feststellen, welche PostgreSQL-Version bei mir
läuft? läuft?
4.20) Bei "large-object"-Operationen kommt die Fehlermeldung: "invalid 4.19) Bei "large-object"-Operationen kommt die Fehlermeldung: "invalid
large obj descriptor". Warum? large obj descriptor". Warum?
4.21) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die 4.20) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die
aktuelle Uhrzeit enthalten soll? aktuelle Uhrzeit enthalten soll?
4.22) Warum sind meine Unterabfragen (subqueries), die IN verwenden, 4.21) Warum sind meine Unterabfragen (subqueries), die IN verwenden,
so langsam? so langsam?
4.23) Wie führe ich einen OUTER JOIN durch? 4.22) Wie führe ich einen OUTER JOIN durch?
4.24) Wie kann ich Abfragen über mehrere Datenbanken hinweg ausführen? 4.23) Wie kann ich Abfragen über mehrere Datenbanken hinweg ausführen?
4.25) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion 4.24) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion
zurückgeben lassen? zurückgeben lassen?
4.26) Warum kann ich temporäre Tabellen in PL/PgSQL-Funktionen nicht 4.25) Warum kann ich temporäre Tabellen in PL/PgSQL-Funktionen nicht
zuverlässig erstellen bzw. löschen? zuverlässig erstellen bzw. löschen?
4.27) Welche Möglichkeiten zur Datenbank-Replikation gibt es? 4.26) Welche Möglichkeiten zur Verschlüsselung gibt es?
4.28) Welche Möglichkeiten zur Verschlüsselung gibt es?
PostgreSQL erweitern PostgreSQL erweitern
...@@ -135,10 +134,8 @@ ...@@ -135,10 +134,8 @@
1.1) Was ist PostgreSQL? Wie wird es ausgesprochen? 1.1) Was ist PostgreSQL? Wie wird es ausgesprochen?
Die (englische) Aussprache ist "Post-Gres-Q-L". Eine MP3-Datei zum Die (englische) Aussprache ist "Post-Gres-Q-L". Im allgemeinen
Anhören gibt es hier: http://www.postgresql.org/postgresql.mp3. Im Sprachgebrauch hat sich die Kurzform "Postgres" auch durchgesetzt.
allgemeinen Sprachgebrauch hat sich die Kurzform "Postgres" auch
durchgesetzt.
PostgreSQL ist eine Weiterentwicklung des POSTGRES-Datenbank-Systems, PostgreSQL ist eine Weiterentwicklung des POSTGRES-Datenbank-Systems,
eines zukunftsweisenden DBMS-Forschungsprototyps. Während PostgreSQL eines zukunftsweisenden DBMS-Forschungsprototyps. Während PostgreSQL
...@@ -175,7 +172,7 @@ ...@@ -175,7 +172,7 @@
PostgreSQL Data Base Management System PostgreSQL Data Base Management System
Portions copyright (c) 1996-2004, PostgreSQL Global Development Group Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
Portions Copyright (c) 1994-6 Regents of the University of California Portions Copyright (c) 1994-6 Regents of the University of California
Permission to use, copy, modify, and distribute this software and its Permission to use, copy, modify, and distribute this software and its
...@@ -228,6 +225,10 @@ ...@@ -228,6 +225,10 @@
Eine Portierung für Novell Netware 6 gibt es unter Eine Portierung für Novell Netware 6 gibt es unter
http://forge.novell.com. http://forge.novell.com.
Für OS/2 (eComStation) gibt es eine Version hier:
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? 1.5) Woher bekomme ich PostgreSQL?
Der zentrale FTP-Server für PostgreSQL ist der ftp-Server Der zentrale FTP-Server für PostgreSQL ist der ftp-Server
...@@ -285,7 +286,7 @@ ...@@ -285,7 +286,7 @@
1.7) Was ist die neueste Version von PostgreSQL? 1.7) Was ist die neueste Version von PostgreSQL?
Die neueste Version von PostgreSQL ist 7.4.6 . Die neueste Version von PostgreSQL ist 8.0.0 .
Die Freigabe einer neuen Version erfolgt im Schnitt alle 6 bis 8 Die Freigabe einer neuen Version erfolgt im Schnitt alle 6 bis 8
Monaten. Monaten.
...@@ -531,8 +532,9 @@ ...@@ -531,8 +532,9 @@
Serverprozesse ab, die Sie für postmaster konfiguriert haben. Bei den Serverprozesse ab, die Sie für postmaster konfiguriert haben. Bei den
voreingestellten Werten für Puffer und Prozesse benötigen Sie bei den voreingestellten Werten für Puffer und Prozesse benötigen Sie bei den
meisten Systemen ein Minimum von ca. 1 MB. Der "PostgreSQL meisten Systemen ein Minimum von ca. 1 MB. Der "PostgreSQL
Administrator's Guide" () enthält weitere Informationen zu Shared Administrator's Guide"
Memory und Semaphores. (http://www.postgresql.org/docs/current/static/kernel-resources.html)
enthält weitere Informationen zu Shared Memory und Semaphores.
3.4) Wenn ich versuche, den postmaster zu starten, bekomme ich 3.4) Wenn ich versuche, den postmaster zu starten, bekomme ich
"IpcSemaphoreCreate"-Fehlermeldungen. Warum? "IpcSemaphoreCreate"-Fehlermeldungen. Warum?
...@@ -759,8 +761,9 @@ SELECT pg_backend_pid() ...@@ -759,8 +761,9 @@ SELECT pg_backend_pid()
LIMIT 1 LIMIT 1
4.3) Wie bekomme ich eine Liste der Tabellen oder anderen Dinge, die ich in 4.3) Wie finde ich heraus, welche Tabellen, Indizes, Datenbanken oder
psql sehen kann? 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 In psql zeigt der Befehl \dt eine Liste der Datenbanktabellen. Weitere
psql-Befehle lassen sich mit \? anzeigen. Sie können sich die Datei psql-Befehle lassen sich mit \? anzeigen. Sie können sich die Datei
...@@ -768,9 +771,13 @@ SELECT pg_backend_pid() ...@@ -768,9 +771,13 @@ SELECT pg_backend_pid()
enthält die SQL-Abfragen, die die Backslash-Kommandos (\) ausführen. enthält die SQL-Abfragen, die die Backslash-Kommandos (\) ausführen.
Sie können psql auch mit der -E Option starten. Danach gibt psql die Sie können psql auch mit der -E Option starten. Danach gibt psql die
Abfragen aus, die es bei der Ausführung der Befehle benutzt. Außerdem Abfragen aus, die es bei der Ausführung der Befehle benutzt. Außerdem
biete PostgreSQL ein SQLi-kompatibles INFORMATION SCHEMA, das biete PostgreSQL ein SQL-kompatibles INFORMATION SCHEMA, das
Metainformation über die Datenbank zur Verfügung stellt. Metainformation über die Datenbank zur Verfügung stellt.
Die Datei pgsql/src/tutorial/syscat.source enthält außerdem viele
SELECT- Abfragen, mit deren Hilfe man Information über die
Systemtabellen erhalten kann.
4.4) Wie entferne ich eine Spalte aus einer Tabelle? Wie ändere ich den 4.4) Wie entferne ich eine Spalte aus einer Tabelle? Wie ändere ich den
Datentyp einer Spalte? Datentyp einer Spalte?
...@@ -862,19 +869,7 @@ SELECT pg_backend_pid() ...@@ -862,19 +869,7 @@ SELECT pg_backend_pid()
NULL-Werte werden als Bitmaps gespeichert, wodurch sie sehr wenig NULL-Werte werden als Bitmaps gespeichert, wodurch sie sehr wenig
Platz in Anspruch nehmen. Platz in Anspruch nehmen.
4.7) Wie finde ich heraus, welche Tabellen, Indizes, Datenbanken oder 4.7) Meine Abfragen sind langsam oder benutzen die Indizes nicht. Warum?
Benutzer in der Datenbank definiert sind?
psql hat eine Vielzahl von Backslash-Befehlen, mit denen solche
Informationen angezeigt werden können. Der Befehl \? zeigt eine
Übersicht. Außerdem zeigt der Befehl \l eine Liste von allen
verfügbaren Datenbanken an.
Die Datei pgsql/src/tutorial/syscat.source enthält außerdem 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?
Indizes werden nicht automatisch bei jeder Abfrage verwendet. Indizes Indizes werden nicht automatisch bei jeder Abfrage verwendet. Indizes
werden nur dann verwendet, wenn die abzufragende Tabelle eine werden nur dann verwendet, wenn die abzufragende Tabelle eine
...@@ -935,12 +930,12 @@ SELECT pg_backend_pid() ...@@ -935,12 +930,12 @@ SELECT pg_backend_pid()
nicht ermitteln können. Es ist allerdings möglich, einen besonderen nicht ermitteln können. Es ist allerdings möglich, einen besonderen
text_pattern_ops-Index für solche Fälle zu erstellen. text_pattern_ops-Index für solche Fälle zu erstellen.
4.9) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer meine 4.8) Auf welche Weise kann ich sehen, wie der Abfrage-Optimierer meine
Abfrage auswertet? Abfrage auswertet?
Vgl. die EXPLAIN Man-Page. Vgl. die EXPLAIN Man-Page.
4.10) Was ist ein R-Tree Index? 4.9) Was ist ein R-Tree Index?
Ein R-Tree Index wird benutzt, um räumliche Daten zu indizieren. Ein Ein R-Tree Index wird benutzt, um räumliche Daten zu indizieren. Ein
Hash-Index kann nicht für Bereichssuchen genutzt werden. Ein B-Tree Hash-Index kann nicht für Bereichssuchen genutzt werden. Ein B-Tree
...@@ -967,14 +962,14 @@ SELECT pg_backend_pid() ...@@ -967,14 +962,14 @@ SELECT pg_backend_pid()
allerdings eine Menge Arbeit und wir haben derzeit keinerlei allerdings eine Menge Arbeit und wir haben derzeit keinerlei
Dokumentation darüber, wie das zu machen wäre. Dokumentation darüber, wie das zu machen wäre.
4.11) Was ist der "Genetic Query Optimizer"? 4.10) Was ist der "Genetic Query Optimizer"?
Das GEQO-Modul in PostgreSQL soll dazu dienen, das Optimierungsproblem Das GEQO-Modul in PostgreSQL soll dazu dienen, das Optimierungsproblem
beim JOIN von vielen Tabellen auf der Basis genetischer Algorithmen beim JOIN von vielen Tabellen auf der Basis genetischer Algorithmen
(GA) zu lösen. Es ermöglicht die Behandlung von großen JOIN-Queries (GA) zu lösen. Es ermöglicht die Behandlung von großen JOIN-Queries
durch eine nicht-erschöpfende Suche. durch eine nicht-erschöpfende Suche.
4.12) Wie verfahre ich bei der Suche mit regulären Ausdrücken und bei einer 4.11) Wie verfahre ich bei der Suche mit regulären Ausdrücken und bei einer
Suche, bei der Groß- und Kleinschreibweisen ignoriert werden? Wie verwende Suche, bei der Groß- und Kleinschreibweisen ignoriert werden? Wie verwende
ich einen Index bei solchen Suchabfragen? ich einen Index bei solchen Suchabfragen?
...@@ -992,11 +987,11 @@ SELECT pg_backend_pid() ...@@ -992,11 +987,11 @@ SELECT pg_backend_pid()
funktionalen Index an, so wird er auf jeden Fall verwendet: funktionalen Index an, so wird er auf jeden Fall verwendet:
CREATE INDEX tabelle_index ON tabelle (LOWER(spalte)) CREATE INDEX tabelle_index ON tabelle (LOWER(spalte))
4.13) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist? 4.12) Wie ermittle ich in einer Abfrage, ob ein Feld NULL ist?
Testen Sie die Spalte mit IS NULL bzw. IS NOT NULL. Testen Sie die Spalte mit IS NULL bzw. IS NOT NULL.
4.14) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen? 4.13) Was ist der Unterschied zwischen den verschiedenen CHAR-Typen?
Typ interner Name Bemerkungen Typ interner Name Bemerkungen
------------------------------------------------- -------------------------------------------------
...@@ -1034,7 +1029,7 @@ BYTEA bytea Bytearray mit variabler L ...@@ -1034,7 +1029,7 @@ BYTEA bytea Bytearray mit variabler L
Alle der hier erwähnten Typen weisen ähnliche Performanzeigenschaften Alle der hier erwähnten Typen weisen ähnliche Performanzeigenschaften
auf. auf.
4.15.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung des 4.14.1) Wie erzeuge ich ein serielles Feld mit automatischer Erhöhung des
Werts (serial/auto-increment)? Werts (serial/auto-increment)?
PostgreSQL bietet einen SERIAL-Datentyp. Dieser erzeugt automatisch PostgreSQL bietet einen SERIAL-Datentyp. Dieser erzeugt automatisch
...@@ -1059,12 +1054,12 @@ BYTEA bytea Bytearray mit variabler L ...@@ -1059,12 +1054,12 @@ BYTEA bytea Bytearray mit variabler L
exportieren und reimportieren wollen, müssen Sie die Option -o von exportieren und reimportieren wollen, müssen Sie die Option -o von
pg_dump bzw. COPY WITH OIDS verwenden, um die OIDs beizubehalten. pg_dump bzw. COPY WITH OIDS verwenden, um die OIDs beizubehalten.
4.15.2) Wie bekomme ich den Wert einer SERIAL-Sequenz? 4.14.2) Wie bekomme ich den Wert einer SERIAL-Sequenz?
Eine Möglichkeit wäre, mit der nextval()-Funktion den nächsten Eine Möglichkeit wäre, mit der nextval()-Funktion den nächsten
SERIAL-Wert von dem Sequenzobjekt vor der Auszuführung einer SERIAL-Wert von dem Sequenzobjekt vor der Auszuführung einer
INSERT-Anweisung anzufordern und ihn dann explizit in die INSERT-Anweisung anzufordern und ihn dann explizit in die
INSERT-Anweisung einzubinden. Anhand der Beispieltabelle in 4.15.1 INSERT-Anweisung einzubinden. Anhand der Beispieltabelle in 4.14.1
könnte dieser Vorgang in einer Pseudosprache so aussehen: könnte dieser Vorgang in einer Pseudosprache so aussehen:
new_id = output of execute("SELECT nextval('person_id_seq')"); new_id = output of execute("SELECT nextval('person_id_seq')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
...@@ -1092,13 +1087,13 @@ BYTEA bytea Bytearray mit variabler L ...@@ -1092,13 +1087,13 @@ BYTEA bytea Bytearray mit variabler L
Mit zum Beispiel dem DBD::Pg-Modul von Perl wird der OID-Wert nach Mit zum Beispiel dem DBD::Pg-Modul von Perl wird der OID-Wert nach
einem $sth->excute() über $sth->{pg_oid_status} zurückgeliefert. einem $sth->excute() über $sth->{pg_oid_status} zurückgeliefert.
4.15.3) Führen currval() und nextval() zu einer Race-Condition mit anderen 4.14.3) Führen currval() und nextval() zu einer Race-Condition mit anderen
Nutzern? Nutzern?
Nein. currval() liefert einen Wert zurück, der von Ihrem Backend Nein. currval() liefert einen Wert zurück, der von Ihrem Backend
bestimmt wird, und der anderen Benutzern nicht zur Verfügung steht. bestimmt wird, und der anderen Benutzern nicht zur Verfügung steht.
4.15.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch nicht 4.14.4) Warum werden die Sequenzwerte nach einem Transaktionsabbruch nicht
zurückgesetzt? Warum gibt es Lücken in der Nummerierung meiner zurückgesetzt? Warum gibt es Lücken in der Nummerierung meiner
Sequenz-/SERIAL-Spalte? Sequenz-/SERIAL-Spalte?
...@@ -1108,7 +1103,7 @@ BYTEA bytea Bytearray mit variabler L ...@@ -1108,7 +1103,7 @@ BYTEA bytea Bytearray mit variabler L
zugeteilt. Lücken in der Sequenznummerierung werden durch abgebrochene zugeteilt. Lücken in der Sequenznummerierung werden durch abgebrochene
Transaktionen verursacht. Transaktionen verursacht.
4.16) Was ist ein OID? Was ist ein TID? 4.15) Was ist ein OID? Was ist ein TID?
OIDs sind PostgreSQLs Antwort auf eindeutige Zeilen-IDs. Jede Zeile, OIDs sind PostgreSQLs Antwort auf eindeutige Zeilen-IDs. Jede Zeile,
die in PostgreSQL erzeugt wird, bekommt eine eindeutige OID. Alle die in PostgreSQL erzeugt wird, bekommt eine eindeutige OID. Alle
...@@ -1144,7 +1139,7 @@ BYTEA bytea Bytearray mit variabler L ...@@ -1144,7 +1139,7 @@ BYTEA bytea Bytearray mit variabler L
verändert oder zurückgeladen werden. Sie werden in Indexeinträgen verändert oder zurückgeladen werden. Sie werden in Indexeinträgen
benutzt um auf die physikalischen Zeilen zu zeigen. benutzt um auf die physikalischen Zeilen zu zeigen.
4.17) Welche Bedeutung haben die verschiedenen Ausdrücke, die in PostgreSQL 4.16) Welche Bedeutung haben die verschiedenen Ausdrücke, die in PostgreSQL
benutzt werden (z.B. attribute, class,...)? benutzt werden (z.B. attribute, class,...)?
Einige der Quelltexte und die ältere Dokumentation nutzen allgemeine Einige der Quelltexte und die ältere Dokumentation nutzen allgemeine
...@@ -1163,7 +1158,7 @@ BYTEA bytea Bytearray mit variabler L ...@@ -1163,7 +1158,7 @@ BYTEA bytea Bytearray mit variabler L
http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
/glossary.html (engl.). /glossary.html (engl.).
4.18) Wieso bekomme ich einen Fehler: "ERROR: Memory exhausted in 4.17) Wieso bekomme ich einen Fehler: "ERROR: Memory exhausted in
AllocSetAlloc()"? AllocSetAlloc()"?
Wahrscheinlich gibt es keinen virtuellen Speicher mehr in Ihrem System Wahrscheinlich gibt es keinen virtuellen Speicher mehr in Ihrem System
...@@ -1179,11 +1174,11 @@ BYTEA bytea Bytearray mit variabler L ...@@ -1179,11 +1174,11 @@ BYTEA bytea Bytearray mit variabler L
haben, weil das Backend zu viele Daten zurückliefert, versuchen Sie haben, weil das Backend zu viele Daten zurückliefert, versuchen Sie
dies vor dem Start des SQL-Clients. dies vor dem Start des SQL-Clients.
4.19) Wie kann ich feststellen, welche PostgreSQL-Version bei mir läuft? 4.18) Wie kann ich feststellen, welche PostgreSQL-Version bei mir läuft?
Geben Sie in psql SELECT VERSION(); ein. Geben Sie in psql SELECT VERSION(); ein.
4.20) Bei "large-object"-Operationen kommt die Fehlermeldung: "invalid 4.19) Bei "large-object"-Operationen kommt die Fehlermeldung: "invalid
large obj descriptor". Warum? large obj descriptor". Warum?
Sie sollten die Anweisungen BEGIN WORK und COMMIT bei jeden Gebrauch Sie sollten die Anweisungen BEGIN WORK und COMMIT bei jeden Gebrauch
...@@ -1199,13 +1194,13 @@ BYTEA bytea Bytearray mit variabler L ...@@ -1199,13 +1194,13 @@ BYTEA bytea Bytearray mit variabler L
Falls Sie eine Client-Schnittstelle wie ODBC benutzen, kann es sein, Falls Sie eine Client-Schnittstelle wie ODBC benutzen, kann es sein,
dass die auto-commit-Option ausgeschaltet werden muss. dass die auto-commit-Option ausgeschaltet werden muss.
4.21) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die 4.20) Wie kann ich eine Spalte erstellen, deren Default-Wert immer die
aktuelle Uhrzeit enthalten soll? aktuelle Uhrzeit enthalten soll?
Dazu verwenden Sie CURRENT_TIMESTAMP: Dazu verwenden Sie CURRENT_TIMESTAMP:
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
4.22) Warum sind meine Unterabfragen (subqueries), die IN verwenden, so 4.21) Warum sind meine Unterabfragen (subqueries), die IN verwenden, so
langsam? langsam?
In Versionen vor 7.4 werden Unterabfragen mit der äusseren Abfrage In Versionen vor 7.4 werden Unterabfragen mit der äusseren Abfrage
...@@ -1226,7 +1221,7 @@ BYTEA bytea Bytearray mit variabler L ...@@ -1226,7 +1221,7 @@ BYTEA bytea Bytearray mit variabler L
gleichen Methoden wie die normale Tabellenverknüpfung und ist daher gleichen Methoden wie die normale Tabellenverknüpfung und ist daher
soger EXISTS vorzuziehen. soger EXISTS vorzuziehen.
4.23) Wie führe ich einen OUTER JOIN durch? 4.22) Wie führe ich einen OUTER JOIN durch?
PostgreSQL ab der Version 7.1 unterstützt OUTER JOINs nach dem SQL- PostgreSQL ab der Version 7.1 unterstützt OUTER JOINs nach dem SQL-
Standardsyntax. Hier zwei Beispiele: Standardsyntax. Hier zwei Beispiele:
...@@ -1261,7 +1256,7 @@ BYTEA bytea Bytearray mit variabler L ...@@ -1261,7 +1256,7 @@ BYTEA bytea Bytearray mit variabler L
WHERE t1.spalte1 NOT IN (SELECT t2.spalte1 FROM tabelle_2 t2) WHERE t1.spalte1 NOT IN (SELECT t2.spalte1 FROM tabelle_2 t2)
ORDER BY spalte1 ORDER BY spalte1
4.24) Wie kann ich Abfragen über mehrere Datenbanken hinweg ausführen? 4.23) Wie kann ich Abfragen über mehrere Datenbanken hinweg ausführen?
Es gibt keinen Weg, innerhalb einer Abfrage auf mehr als eine Es gibt keinen Weg, innerhalb einer Abfrage auf mehr als eine
Datenbank zuzugreifen. Da PostgreSQL datenbank-spezifische Datenbank zuzugreifen. Da PostgreSQL datenbank-spezifische
...@@ -1280,13 +1275,13 @@ BYTEA bytea Bytearray mit variabler L ...@@ -1280,13 +1275,13 @@ BYTEA bytea Bytearray mit variabler L
Anwendungen könnten diese einen geeigneten Ersatz für den Zugriff auf Anwendungen könnten diese einen geeigneten Ersatz für den Zugriff auf
eine andere Datenbank bieten. eine andere Datenbank bieten.
4.25) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion 4.24) Wie kann ich mehrere Zeilen bzw. Spalten von einer Funktion
zurückgeben lassen? zurückgeben lassen?
Ab 7.3 können Funktionen mehrere Zeilen und Spalten zurückgeben, vgl.: Ab 7.3 können Funktionen mehrere Zeilen und Spalten zurückgeben, vgl.:
http://techdocs.postgresql.org/guides/SetReturningFunctions. http://techdocs.postgresql.org/guides/SetReturningFunctions.
4.26) Warum kann ich temporäre Tabellen in PL/PgSQL-Funktionen nicht 4.25) Warum kann ich temporäre Tabellen in PL/PgSQL-Funktionen nicht
zuverlässig erstellen bzw. löschen? zuverlässig erstellen bzw. löschen?
PL/PgSQL verarbeitet die Inhalte einer Funktion in eine Cache. Dies PL/PgSQL verarbeitet die Inhalte einer Funktion in eine Cache. Dies
...@@ -1300,15 +1295,7 @@ BYTEA bytea Bytearray mit variabler L ...@@ -1300,15 +1295,7 @@ BYTEA bytea Bytearray mit variabler L
mittels EXECUTE auf temporäre Tabellen zuzugreifen. Diese bewirkt, mittels EXECUTE auf temporäre Tabellen zuzugreifen. Diese bewirkt,
dass bei jedem Funktionsruf die betreffende Abfrage neu geparst wird. dass bei jedem Funktionsruf die betreffende Abfrage neu geparst wird.
4.27) Welche Möglichkeiten zur Datenbank-Replikation gibt es? 4.26) Welche Möglichkeiten zur Verschlüsselung gibt es?
Es existieren mehrere Ansätze zur Master/Slave-Replikation in
PostgreSQL. In diesen werden Datenänderungen in der Master-Datenbank
durchgeführt und an Slave-Datenbanken weitergeleitet. Informationen
über diese Lösungen befinden sich auf der folgenden Seite (unten):
http://gborg.postgresql.org/genpage?replication_research .
4.28) Welche Möglichkeiten zur Verschlüsselung gibt es?
* contrib/pgcrypto enthält diverse Funktionen für die Benützung mit * contrib/pgcrypto enthält diverse Funktionen für die Benützung mit
SQL-Abfragen. SQL-Abfragen.
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment