Optimistisches und pessimistisches Sperren sind Strategien in Datenbanksystemen, um Datenintegrität und Konsistenz während der Zugriffe von mehreren Benutzern zu gewährleisten.
Die Wahl zwischen optimistischem und pessimistischem Sperren hängt oft von der Art der Anwendung ab, die die Datenbank verwendet.
1. Pessimistisches Sperren: Dieser Ansatz geht davon aus, dass Konflikte wahrscheinlich sind und sperrt daher eine Ressource, sobald ein Benutzer darauf zugreift, um Updates vorzunehmen. In MariaDB implementieren Sie pessimistisches Sperren, indem Sie die InnoDB-Transaktions-Sicherheitsstufen “LOCK IN SHARE MODE” und “FOR UPDATE” verwenden.
Beispiel:
```
BEGIN;
SELECT * FROM mytable WHERE id = 1 FOR UPDATE;
…
COMMIT;
```
2. Optimistisches Sperren: Dieser Ansatz geht davon aus, dass Konflikte unwahrscheinlich sind und erlaubt daher mehreren Benutzern gleichzeitig, auf dieselbe Ressource zuzugreifen. Konflikte werden erst bei der Bestätigung (Commit) der Transaktion entdeckt und müssen dann behoben werden. Optimistisches Sperren wird in MariaDB durch die Verwendung der InnoDB-Engines unterstützt, die Zeilenversionierung für READ COMMITTED und REPEATABLE READ-Isolationsebenen verwenden. Konflikte werfen dabei eine Ausnahme und die Transaktion muss wiederholt werden.
Beispiel:
```
START TRANSACTION;
SELECT A:=SUM(salary) FROM table WHERE type=1;
UPDATE table SET summary=
A WHERE type=1;
COMMIT;
```
In jedem Fall sollten Sie die Konsequenzen der Wahl zwischen optimistischem und pessimistischem Sperren für Ihre spezielle Anwendung berücksichtigen und die Entscheidung auf dieser Grundlage treffen.