# Schemaänderungen im laufenden Betrieb

> Strukturänderungen ohne Stillstand: abwärtskompatible Schritte, Sperrverhalten großer Änderungen und die Entkopplung von Datenbank- und Anwendungsauslieferung.

Track: [Datenbankadministration für Sysadmins](https://physar.tech/learn/database-administration-basics)  
Kanonische Fassung: https://physar.tech/learn/database-administration-basics/schema-change-management  
Stand: 2026-07-30  
Interaktiver Teil: 3 Checks (nur im Browser)

## Die Struktur ändern, während gearbeitet wird

### Betriebsfrage

Anwendungscode lässt sich zurückrollen. Eine gelöschte Spalte nicht. Schemaänderungen sind der Teil der Auslieferung, bei dem die Umkehrbarkeit endet — und deshalb der Teil, der eine eigene Vorgehensweise braucht.

### Mentales Modell

Erweitern → Beides schreiben → Umstellen → Aufräumen

Das Muster trennt eine gefährliche Änderung in mehrere ungefährliche: Zuerst wird die neue Struktur **zusätzlich** angelegt, dann schreibt die Anwendung in beide, dann liest sie aus der neuen, und erst danach — wenn nichts mehr zurückrollen muss — verschwindet die alte.

### Warum das nötig ist

- Während einer Auslieferung laufen alte und neue Anwendungsversion gleichzeitig; das Schema muss beide bedienen.
- Ein Rückrollen der Anwendung darf nicht am Schema scheitern.
- Nur so kann das Aufräumen zu einem eigenen, ruhigen Termin stattfinden.

### Sperrverhalten

|  |  |
| --- | --- |
| Metadaten ändern | Meist kurz, aber eine kurze exklusive Sperre auf einer stark genutzten Tabelle staut sofort alle folgenden Anfragen auf. |
| Daten umschreiben | Lange Laufzeit; die Art der Sperre entscheidet, ob nebenher noch gearbeitet werden kann. |
| Prüfregel hinzufügen | Muss den Bestand prüfen — auf großen Tabellen ist der schrittweise Weg über eine zunächst ungeprüfte Regel oft der einzige gangbare. |

> **Falle:** Eine Änderung, die selbst nur Millisekunden dauert, kann eine Warteschlange erzeugen, die den Dienst minutenlang blockiert — die Sperre wartet, und alles danach wartet mit.

### Route

> **Transfer:** Die Checks behandeln die Zerlegung einer nicht umkehrbaren Änderung, das Sperrverhalten auf großen Tabellen und die Reihenfolge einer entkoppelten Auslieferung.

## Quellen

- martinfowler.com/articles/evodb.html — https://martinfowler.com/articles/evodb.html
- postgresql.org/docs/current/transaction-iso.html — https://www.postgresql.org/docs/current/transaction-iso.html
- use-the-index-luke.com — https://use-the-index-luke.com/
