Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Vorwort
17
TEIL I Erste Schritte
23
1 Datenbanken – eine allgemeine Einleitung
25
1.1 Grundlagen von Datenbanken
25
1.1.1 Die Geschichte von Datenbanken
25
1.1.2 Moderne Datenbanken und Datenmodelle
27
1.1.3 Vorteile
30
1.1.4 Nachteile von Datenbanksystemen
32
1.1.5 Einsatzgebiete
32
1.1.6 Anforderungen an ein Datenbankmanagementsystem
36
1.2 MySQL
40
1.2.1 Einleitung und Vorstellung
40
1.2.2 Die Geschichte von MySQL
43
1.2.3 Open Source und Lizenzen
46
1.3 Zusammenfassung
50
2 Datenbankmodellierung
51
2.1 Einführung in den Datenbankentwurf
51
2.1.1 Anforderungsanalyse
52
2.1.2 Konzeptioneller Datenbankentwurf
53
2.1.3 Logischer Datenbankentwurf
54
2.1.4 Physischer Datenbankentwurf
54
2.1.5 Der Datenbankentwurf im Überblick
55
2.2 Ein konkretes Beispiel: Flughafenverwaltung
56
2.3 Das relationale Datenbankenmodell
58
2.3.1 Tabellen, Spalten und Zeilen
58
2.3.2 Schlüssel identifizieren Datensätze
60
2.3.3 Die relationale Algebra
61
2.3.4 Joins
66
2.4 Datenbankdesign
70
2.4.1 Das ER-Diagramm
70
2.4.2 Entitäten
71
2.4.3 Beziehungen
75
2.5 Normalformen
83
2.5.1 Die erste Normalform
85
2.5.2 Die zweite Normalform
86
2.5.3 Die dritte Normalform
88
2.5.4 Weitere Normalformen
90
2.6 Zusammenfassung
91
3 Schnellstart-Tutorial
93
3.1 MySQL herunterladen
93
3.2 Minimale Systemanforderungen
94
3.3 MySQL installieren
96
3.3.1 Schnellinstallation unter Windows
96
3.3.2 Schnellinstallation unter Linux
102
3.3.3 Schnellinstallation unter Mac OS X
108
3.3.4 Weitere Softwareprodukte
110
3.3.5 Zusammenfassung der Installation
110
3.4 Endlich loslegen – MySQL ausprobieren
110
3.5 Übersicht der wichtigsten Befehle
114
3.5.1 Datenbanken anlegen und löschen
115
3.5.2 Tabellen anlegen, Daten einfügen und löschen
117
3.5.3 Datensätze anlegen, abfragen und löschen
121
3.5.4 Datensätze abfragen und anzeigen
123
3.6 Zusammenfassung
124
4 Einführung in die Beispieldatenbank
125
4.1 Die Datenbank für das Szenario anlegen
125
4.2 Die Beispieldatenbank auf der Buch-DVD
141
4.3 Hilfe bei der Arbeit mit MySQL
143
4.3.1 Fehlermeldungen und Warnungen
143
4.3.2 Online-Manual und weitere Anlaufstellen
145
4.4 Zusammenfassung
146
TEIL II MySQL-Administration
149
5 Architektur
151
5.1 Einführung
151
5.1.1 Teile einer Datenbank – das Fünf-Schichten-Modell
151
5.1.2 MySQL-Architektur
157
5.2 Abfrageverarbeitung
161
5.2.1 Der Query-Cache – das Kurzzeitgedächtnis von MySQL
161
5.2.2 Der Optimierer – die Intelligenz von MySQL
168
5.2.3 Execution-Engine – der Arbeiter von MySQL
173
5.3 Transaktionen und Nebenläufigkeit
173
5.3.1 Nebenläufigkeit
174
5.3.2 Transaktionen
175
5.3.3 Lock-Management
187
5.4 Storage-Engines
190
5.4.1 Grundlagen des Storage-Engine-Plugin-Systems
191
5.4.2 InnoDB
194
5.4.3 MyISAM
201
5.4.4 MEMORY
206
5.4.5 Sonstige Engines
207
5.4.6 Fremdhersteller-Engines
210
5.4.7 Percona und MariaDB
211
5.4.8 Vergleichstabelle
212
5.5 Zusammenfassung
213
6 Manuelle Installation, Plugins und Upgrades
215
6.1 Von neuen Quellen – MySQL selbst kompilieren und installieren
216
6.1.1 Voraussetzungen
216
6.1.2 MySQL kompilieren und installieren
218
6.1.3 Die Installation grundlegend absichern
223
6.1.4 Anlegen der Konfigurationsdatei
229
6.1.5 Den MySQL-Dienst starten
230
6.1.6 Zusammenfassung der Installation
234
6.2 Usermanagement
235
6.3 Die zentrale Konfigurationsdatei »my.cnf«
242
6.3.1 Die Syntax der Konfigurationsdatei
244
6.3.2 Die grundlegenden Einstellungen
246
6.3.3 Kommandozeilenargumente
249
6.3.4 Servervariablen setzen und ändern
250
6.4 MySQL aktualisieren und erweitern
254
6.4.1 Upgrades
254
6.4.2 Die Plugin-API
258
6.5 Zusammenfassung
260
7 MySQL administrieren
261
7.1 Der bordeigene Werkzeugkasten
261
7.2 Der Name ist Programm: »mysqladmin«
262
7.2.1 Datenbanken anlegen und löschen
262
7.2.2 Caches leeren
263
7.2.3 Das »root«-Passwort ändern
264
7.2.4 Den Server überwachen
267
7.3 Daten importieren und exportieren
270
7.3.1 Daten aus Dateien importieren
270
7.3.2 Daten exportieren
276
7.4 Richtig sichern – Backups und Strategien
278
7.4.1 Die Basics
278
7.4.2 Physisches oder logisches Backup
280
7.4.3 Online- und Offline-Backups
282
7.4.4 Volle und inkrementelle Backups
283
7.4.5 Logische Backups und Wiederherstellung mit »mysqldump«
284
7.4.6 Physisches Offline-Backup – schnell, sicher und effizient
288
7.4.7 InnoDB-Tabellen sichern mit »Percona XtraBackup«
291
7.4.8 Recovery von Bedienfehlern – zeitpunktbezogene Wiederherstellung
293
7.4.9 Backups mit Replikation
296
7.4.10 Backups automatisieren
297
7.5 Tabellenwartung mit »mysqlcheck«
297
7.5.1 MyISAM-Tabellen überprüfen und reparieren
298
7.5.2 Die Erholungsphase – Crash Recovery
300
7.6 Performance-Check mit »mysqlslap«
302
7.7 MySQL beobachten
303
7.7.1 Die »INFORMATION_SCHEMA«-Tabellen
303
7.7.2 Den Status abfragen
304
7.7.3 Statistiken zu InnoDB-Tabellen
305
7.7.4 MySQL überwachen
307
7.8 Die grafischen Werkzeuge im Überblick
308
7.8.1 MySQL Workbench
308
7.8.2 Weitere Tools
314
7.9 Optimierungstechniken
314
7.9.1 Leistungsschau
315
7.9.2 Profiling
317
7.9.3 Das Percona Toolkit
321
7.9.4 Die wichtigsten Variablen der zentralen Konfigurationsdatei im Überblick
324
7.10 Exakte Statistiken mit dem Performance Schema
341
7.10.1 Grundlagen des Performance Schemas
341
7.10.2 Instrumente einrichten und Messvorgaben anpassen
345
7.10.3 Anpassen der Einstellungen und Ausgabe von Statusvariablen
352
7.10.4 Auswertung des Performance Schemas
354
7.10.5 Den Gesamtüberblick mit Summary-Tabellen behalten
357
7.10.6 Aufspüren von Problemen
361
8 Replikation und Hochverfügbarkeit
367
8.1 Grundprinzipien
368
8.1.1 Ablauf
369
8.1.2 Arten von Replikation
369
8.2 Topologien
371
8.2.1 Master – Slave
371
8.2.2 Master – Slave mit zwischengeschaltetem Slave
372
8.2.3 Master – Master
373
8.3 Konfiguration
374
8.3.1 Vorarbeiten
375
8.3.2 Replikation über GTIDs
376
8.3.3 Replikation über das Binär-Log
379
8.4 Zusammenfassung
383
9 Abfrageoptimierung
385
9.1 Aufspüren von langsamen Abfragen
385
9.1.1 Langsame Abfrage protokollieren
385
9.1.2 Log-Dateien regelmäßig kontrollieren
388
9.2 Indexstrukturen
388
9.2.1 Die Grundidee von Indexstrukturen
389
9.2.2 Primärindex vs. Sekundärindex
390
9.2.3 Der limitierende Faktor – die Festplatte
391
9.2.4 Technische Umsetzung von Indexstrukturen – der B-Baum und MyISAM
392
9.2.5 Clustered Index
397
9.2.6 Non-clustered Index
398
9.2.7 Mehrdimensionale Indexstrukturen – der R-Baum
398
9.2.8 GIS und raumbezogene Indizes
402
9.2.9 Volltextindex
411
9.2.10 Die großen Nachteile des Indexes
420
9.3 Optimierung von Abfragen
421
9.3.1 Die EXPLAIN-Anweisung
421
9.3.2 Auswertung der EXPLAIN-Informationen und Optimierungen
424
9.4 Partitionierung
455
9.5 Zusammenfassung
478
10 Sicherheit
481
10.1 Grundlagen
481
10.1.1 Verschiedene Szenarien für das Rechtemanagement
481
10.1.2 Die zwei Phasen des Berechtigungssystems
483
10.2 Privilegiert – die Benutzerrechte im Detail
484
10.2.1 Die Ebenen der Benutzerberechtigungen
486
10.2.2 Berechtigungen zum Schutz der Daten
489
10.2.3 Berechtigungen zur Programmierung mit MySQL
494
10.2.4 Das Sicherheitskonzept von Programmen oder DEFINER vs. INVOKER
496
10.2.5 Berechtigungen zur Administration von MySQL
500
10.2.6 Die Befehle GRANT, REVOKE, CREATE und ALTER USER im Detail
505
10.2.7 Benutzerverwaltung ohne GRANT – die Datenbank »mysql«
511
10.3 Tipps und Tricks
517
10.3.1 Vorgehen bei der Erstellung von Benutzern
518
10.3.2 Tausende Benutzer und Datenbanken ohne Chaos verwalten
518
10.3.3 Benutzerverwaltungs-API
520
10.3.4 Benutzerverwaltung in der Applikation, nicht in der Datenbank?
521
10.3.5 Workaround für Berechtigungen auf Zeilenebene/Kapselung
523
10.4 STOP! – MySQL absichern
526
10.4.1 Allgemeine Sicherheitshinweise – der gewissenhafte Administrator
526
10.4.2 Zugang beschränken oder verschlüsseln
532
10.4.3 MySQL im Web
537
10.5 Zusammenfassung
542
TEIL III Programmierung
545
11 Gespeicherte Programme und Events
547
11.1 Wozu gespeicherte Programme?
547
11.1.1 Arten von gespeicherten Programmen
549
11.1.2 MySQL Stored Program Language
550
11.1.3 Grundlegendes Arbeiten mit gespeicherten Programmen
551
11.1.4 Kommentare
553
11.1.5 Datentypen
555
11.1.6 Sicherung und Backup gespeicherter Programme und Sichten
555
11.1.7 Rechte von gespeicherten Programmen
556
11.1.8 Einschränkungen
557
11.2 Gespeicherte Prozeduren
557
11.2.1 Erzeugung gespeicherter Prozeduren
558
11.2.2 Erweiterte Einstellungen beim Erzeugen von gespeicherten Prozeduren
560
11.2.3 Verwendung gespeicherter Prozeduren
561
11.2.4 Löschen von gespeicherten Prozeduren
562
11.2.5 Bearbeiten gespeicherter Prozeduren
562
11.2.6 Parameter
564
11.2.7 Ergebnismengen
569
11.3 Gespeicherte Funktionen
569
11.3.1 Erzeugen von gespeicherten Funktionen
570
11.3.2 Erweiterte Optionen beim Erzeugen von gespeicherten Prozeduren
572
11.3.3 Aufrufen gespeicherter Funktionen
574
11.3.4 Bearbeiten gespeicherter Funktionen
576
11.3.5 Einschränkungen
576
11.4 Informationen zu bestehenden gespeicherten Programmen (Metadaten)
577
11.5 Programmieren in MySQL
581
11.5.1 BEGIN-/END-Blöcke
582
11.5.2 Variablen
583
11.5.3 Ablaufsteuerung und konditionale Anweisungen
590
11.5.4 Schleifen
597
11.5.5 Cursors
602
11.5.6 Handler
609
11.5.7 Selbstdefinierte Fehlermeldungen mit SIGNAL
618
11.5.8 Verschachtelte Cursors und ihre Handler
623
11.5.9 Temporäre Tabellen
626
11.5.10 Rekursion
627
11.5.11 Transaktionen
630
11.6 Trigger
632
11.6.1 Trigger erstellen
632
11.6.2 Löschen und Bearbeiten von Triggern
637
11.6.3 Informationen über bestehende Trigger (Metadaten)
637
11.6.4 Einschränkungen
640
11.7 Events
641
11.7.1 Event-Scheduler
642
11.7.2 Erzeugung von Events
643
11.7.3 Löschen und Bearbeiten von Events
647
11.7.4 Informationen zu bestehenden Events (Metadaten)
648
11.7.5 Sicherheit, Rechte und Einschränkungen
650
11.8 Sichten (Views)
651
11.8.1 Erzeugung und Verwenden von Sichten
652
11.8.2 Updates auf Sichten
654
11.8.3 Löschen und Bearbeiten einer Sicht
655
11.8.4 Informationen zu bestehenden Sichten (Metadaten)
656
11.9 Zusammenfassung
657
12 Softwareentwicklung mit MySQL
659
12.1 Konnektoren/Programmiersprachen
661
12.1.1 Allgemeines
661
12.1.2 ODBC
665
12.1.3 Java, JDBC und Connector/J
669
12.1.4 PHP, mysqli, PDO_MYSQL
674
12.1.5 .NET
678
12.1.6 Perl, DBD:mysql
684
12.1.7 Ruby
687
12.1.8 Python
689
12.1.9 node-mysql, Node.js – serverseitiges JavaScript
692
12.2 Zusammenfassung
695
13 NoSQL mit MySQL
697
13.1 Not Only SQL – NoSQL
697
13.2 Skalierung und Verteilung: ACID vs. BASE
699
13.3 Mit Hochgeschwindigkeit ins Herz: MySQL öffnet sich »Memcached«-Benutzern
700
13.3.1 Die Integration von Memcached in die MySQL-Architektur
701
13.3.2 Grundlagen des Memcache-Protokolls
702
13.3.3 Memcached zur Verwendung mit InnoDB installieren
703
13.3.4 Die Verbindung testen
705
13.3.5 Memcached und InnoDB verbinden
706
13.3.6 Lesen und Schreiben von Daten mittels Memcached
709
13.3.7 Replikation und Memcached
711
13.3.8 Sicherheit gegen Geschwindigkeit
712
13.3.9 Weitere Einstellungen
712
13.4 Zusammenfassung
714
TEIL IV Anhang
715
A Referenz
717
A.1 Datentypen
718
A.2 Datendefinition, Datenmanipulation und Abfragen
720
A.3 Index
726
A.4 Boolesche Operatoren
727
A.5 Mathematische Funktionen
728
A.6 Zeit- und Datumsfunktionen
730
A.7 String-Funktionen
737
A.8 Transaktionen
744
A.9 Sperren
746
A.10 Sichten (Views)
746
A.11 MySQL-Client
747
A.12 Gespeicherte Prozeduren
749
A.13 Gespeicherte Funktionen
751
A.14 Triggers
752
A.15 Events
753
A.16 Kontrollfluss-Elemente
755
A.17 Variablen in Programmen
757
A.18 Cursors
758
A.19 Handlers
759
A.20 Volltextsuche
761
A.21 Replikation
762
A.22 GIS-Funktionen
764
A.23 Partitionierung
766
A.24 Administrationsaufgaben
769
A.25 Benutzerverwaltung und Sicherheit
773
A.26 Wartungsarbeiten
777
A.27 Backups, Wiederherstellung und Logfiles
779
A.28 Import und Export
781
A.29 Benchmarking, Monitoring und Profiling
782
A.30 Query-Cache
784
A.31 Plugins
784
A.32 Storage-Engines
785
A.33 Hilfe, Warnungen und Fehler
788
A.34 Fehlernummern und SQL-States
789
A.35 Escape-Sequenzen
791
A.36 Zeichensätze und Sortierfolgen (Character Sets und Collations)
792
Index
793