Lutz Fröhlich
PostgreSQL 10
Praxisbuch für Administratoren und Entwickler
Inhalt
7
1 Einführung und Geschichte
13
1.1 Die Geschichte von PostgreSQL
14
1.2 Verwendete Version
15
1.3 Konventionen
15
1.4 Software und Skripte
15
2 Installation aus Paketen und Quellcode
17
2.1 Paketinstallation
17
2.1.1 Paketinstallation unter Linux
17
2.1.2 Paketinstallation unter Windows
18
2.2 Installation aus dem Quellcode
20
2.2.1 Installation aus dem Quellcode unter Linux
20
2.2.2 Installation aus dem Quellcode unter Windows
21
2.3 Erste Schritte
24
3 Upgrade auf Version 10
29
3.1 Upgrade mit pg_dumpall
29
3.2 Upgrade mit pg_upgrade
31
3.3 Migration nach Native Partitioning
33
3.4 Regressionstests
35
4 Die Architektur von PostgreSQL
37
4.1 Überblick
37
4.2 Memory und Prozesse
38
4.2.1 Hintergrundprozesse
39
4.2.2 Der Shared Memory
41
4.3 VACUUM
49
4.4 Cluster, Datenbanken und Tabellen
52
5 Server und Datenbanken administrieren
57
5.1 Parameter-Einstellungen
57
5.1.1 Einstellungen im Betriebssystem
57
5.1.2 Cluster-Einstellungen
59
5.1.3 Gebietsschema und Zeichensatz
69
5.2 Datenbanken verwalten
72
5.3 Konkurrenz
75
5.4 Die WAL-Archivierung einschalten
78
5.5 Wartungsaufgaben
80
5.5.1 VACUUM
80
5.5.2 ANALYZE
83
5.6 Nützliche Skripte und Hinweise
83
5.6.1 Eine Passwortdatei verwenden
84
5.6.2 Welche Parameter sind Nicht-Standard?
84
5.6.3 Eine Session killen
85
5.6.4 Eine Tabelle nach Excel kopieren
85
5.6.5 Die Datei .psqlrc
86
5.6.6 Einen WAL-Switch manuell auslösen
87
5.6.7 Die PostgreSQL-Server-Logdatei in eine Tabelle laden
87
5.6.8 Automatisches Rotieren von Logdateien
88
5.6.9 Nicht verwendete Indexe identifizieren
88
5.6.10 Microsoft Excel als Datenbank-Client
89
5.6.11 Den Inhalt der Kontrolldatei ausgeben
91
5.6.12 Platzverbrauch von Tabellen
92
5.6.13 Die Anzahl von Verbindungen begrenzen
92
5.6.14 Tabellen und Indexe in einen anderen Tablespace legen
93
5.6.15 Temporäre Dateien verwalten
94
5.6.16 Lang laufende SQL-Anweisungen
94
5.7 Beispielschemata
95
6 Neue Features
97
6.1 Neue Features in Version 10
97
6.1.1 Native Table Partitioning
98
6.1.2 Paralleles SQL
100
6.1.3 Logische Replikation
100
6.1.4 Änderungen der Architektur
102
6.1.5 SQL-Anweisungen
104
6.1.6 Monitoring
110
6.1.7 Werkzeuge
111
6.1.8 Konfigurationsparameter
114
6.2 Neue Features in den Versionen 9.2 bis 9.6
114
6.2.1 Backend
114
6.2.2 Replikation
115
6.2.3 Performance
116
7 Sicherung und Wiederherstellung
117
7.1 Online-Sicherung mit Point-in-time-Recovery
118
7.2 Offline-Sicherung auf Dateisystemebene
123
7.3 SQL Dump
123
8 Sicherheit und Überwachung
129
8.1 Sicherheit
130
8.1.1 Rollen und Privilegien
130
8.1.2 Authentifizierung und Zugangskontrolle
137
8.1.3 Rechteverwaltung
139
8.1.4 Sichere Verbindungen
144
8.1.5 Out-of-the-box-Sicherheit
148
8.1.6 Hacker-Attacken abwehren
149
8.2 Überwachung
154
8.2.1 Auditing
154
8.2.2 Monitoring
156
9 Replikation zwischen Clustern
163
9.1 Physische Replikation
164
9.1.1 Vorbereitung und Planung
164
9.1.2 Konfiguration und Aktivierung
165
9.1.3 Kaskadenförmige Replikation
169
9.1.4 Hot Standby
170
9.1.5 Synchrone Replikation
171
9.1.6 Die Replikation überwachen
173
9.1.7 Failover und Switchover
175
9.2 Logische Replikation
180
9.3 Logical Decoding
186
9.3.1 Logical Decoding mit Java als Consumer
187
10 Das Regelsystem
191
10.1 Das Regelsystem für SELECT-Anweisungen
192
10.2 Das Regelsystem für DML-Anweisungen
193
10.3 Regeln und Views
197
11 Performance Tuning
199
11.1 Out-of-the-box-Tuning
199
11.1.1 Goldene Regeln für neue Server und Datenbanken
200
11.1.2 Das Utility „pgTune“
201
11.1.3 Optimierung von Memory-Parametern
202
11.2 Performance-Analyse
205
11.2.1 Analyse mit dem „Statistics Collector“
205
11.2.2 Der Background Writer
212
11.2.3 Analyse mit „pgstatspack“
213
12 Optimierung von SQL-Anweisungen
217
12.1 Ausführungsschritte
218
12.2 Der SQL-Optimizer
219
12.3 Statistiken und Histogramme
220
12.4 Zugriffsmethoden
223
12.5 Join-Methoden
224
12.6 SQL-Optimierung
227
12.6.1 Der EXPLAIN-Befehl
228
12.6.2 Ausführungspläne verstehen und optimieren
231
13 Einsatz großer Datenbanken
241
13.1 Partitionierung von Tabellen
242
13.1.1 Native Table Partitioning
242
13.2 Paralleles SQL
245
13.3 Materialized Views
250
13.4 BRIN-Indexe
252
14 PostGIS
257
14.1 PostGIS und PostgreSQL
257
14.2 PostGIS installieren
258
14.2.1 Paketorientierte Installation
258
14.2.2 Installation aus dem Quellcode
261
14.3 Erste Schritte mit PostGIS
262
14.4 PostGIS in der Praxis anwenden
267
15 Applikationen für PostgreSQL entwickeln
273
15.1 Applikationsdesign
273
15.2 Entwicklungswerkzeuge
277
15.3 PostgreSQL Extensions
278
16 SQL-Erweiterungen
281
16.1 Datentypen
281
16.2 Funktionen und Sprachen
282
16.2.1 SQL-Funktionen
283
16.2.2 Funktionen mit prozeduralen Programmiersprachen
287
16.2.3 C-Funktionen
291
16.3 Operatoren
296
16.4 Das Extension-Netzwerk
298
16.4.1 Extensions entwickeln
299
16.4.2 Extensions publizieren
302
17 PL/pgSQL-Funktionen und Trigger
307
17.1 PL/pgSQL-Funktionen
307
17.1.1 Abfragen und Resultsets
311
17.1.2 Cursor verwenden
313
17.1.3 DML-Anweisungen
315
17.1.4 Dynamische SQL-Anweisungen
317
17.1.5 Fehlerbehandlung
318
17.2 Trigger
319
18 Embedded SQL (ECPG)
323
19 Java-Programmierung
333
19.1 Eine Entwicklungsumgebung einrichten
333
19.2 Verarbeitung von Resultsets
336
19.3 DML-Anweisungen und Transaktionen
339
19.4 Bindevariablen verwenden
341
19.5 Java und Stored Functions
342
19.6 Large Objects
346
19.7 JDBC-Tracing
350
20 Die C-Library libpq
353
20.1 Die Entwicklungsumgebung einrichten
353
20.2 Programme mit „libpq“ erstellen
358
21 PHP-Applikationen
371
21.1 Installation und Konfiguration
372
21.2 Applikationen mit PHP entwickeln
374
21.3 Die PDO-API
382
22 Client-Programmierung mit Perl-DBI
385
22.1 SELECT-Anweisungen und Resultsets
388
22.2 DML-Anweisungen
392
22.3 Bindevariablen verwenden
393
22.4 Fehlerbehandlung und Tracing
395
22.5 Nützliche Skripte und Beispiele
398
22.5.1 Mehrere Server abfragen
398
22.5.2 Parallele Verbindungen
399
22.5.3 Large Objects verarbeiten
402
22.5.4 Asynchrone Abfragen
402
22.5.5 Datenbanken vergleichen
403
23 Large Objects
407
24 PostgreSQL in die IT-Landschaft einbinden
413
24.1 Features und Funktionen
413
24.2 Datensicherheit und Wiederherstellung
414
24.3 Desaster Recovery
415
24.4 Überwachung
416
24.5 Administrierbarkeit
416
24.6 Verfügbarkeit
417
24.7 Datensicherheit und Auditing
418
24.8 Performance und Skalierbarkeit
418
24.9 Schnittstellen und Kommunikation
419
24.10 Support
420
24.11 Fazit
420
25 Migration von MySQL-Datenbanken
421
25.1 Unterschiede zwischen MySQL und PostgreSQL
421
25.2 Eine Migration durchführen
423
26 Von Oracle nach PostgreSQL migrieren
429
26.1 Die Migration planen
429
26.2 Unterschiede zwischen Oracle und PostgreSQL
431
26.2.1 Unterschiede der Datentypen
431
26.2.2 Syntaktische und logische Unterschiede
432
26.2.3 Steigerung der Kompatibilität von PostgreSQL
435
26.3 Portierung von Oracle PL/SQL
436
26.4 Tools zur Unterstützung der Migration
439
26.5 Technisches Vorgehen
441
26.6 Ein Migrationsbeispiel
441
26.6.1 Manuelle Migration
442
26.6.2 Migration unter Verwendung von „Ora2Pg“
448
26.6.3 Große Tabellen laden
452
27 Replikation zwischen Oracle und PostgreSQL
455
27.1 Datenbanklink zwischen Oracle und PostgreSQL
455
27.2 Replikation mit Oracle XStream
461
28 PostgreSQL in der Cloud
475
28.1 Private Cloud
476
28.2 Public Cloud
478
Index
481
© 2009-2024 ciando GmbH