Meine liebste MySQL 5 Neuerung

Gerade im Internet ist es wichtig, das man auf dem aktuellen Stand. Dies gilt besonders im Kontext mit Sicherheitslücken. Für Server Administratoren bedeutet dies jedoch auch einen erheblichen Mehraufwand, den man erstmal nicht bezahlt bekommt.

Mittlerweile gibt es aber auch viele Anwendungen die nach höheren Versionsnummer schreien. Als Administrator kann man entweder einen neuen Server mit der neuen Version aufsetzen oder den ganzen Server updaten und hoffen, dass später noch alles funktioniert.

Der Umstieg von MySQL 4 auf 5 und PHP 4 auf 5 hat relativ problemlos funktioniert. Besonders bei PHP wird es jedoch immer schwieriger die Altlasten mitzutragen. Die Version 6 von PHP wird deshalb nicht so einfach zu PHP 5 kompatibel sein. Entwickler werden hier gezwungen werden, ihre alten Gewohnheiten abzulegen und PHP vielleicht auf eine ganz neue Art und Weise zu programmieren.

Als Entwickler schreie ich mittlerweile schon nach MySQL 5. Man sollte meinen dies ist Standard, bei manchen Hosting Agenturen anscheinend jedoch noch nicht. Mein liebste Funktion, die erst seit MySQL 5 verfügbar ist heißt ON DUPLICATE KEY UPDATE. Eine fantastische Erleichterung, die es überall geben sollte.

Früher:
1. Schauen ob in der Datenbank ein entsprechender Schlüssel vorhanden ist.
2. Abhängig von 1 entscheiden ob ich INSERT oder UPDATE nehme
3a. Neuen Datensatz einfügen
3b. Vorhandenen Datensatz updaten

Heute:
1. Vorher überlegen, welche unterschiedlichen Werte der Datensatz bei INSERT oder UPDATE hat
2. Ein SQL Statement für beide Fälle schreiben

Beispiel:

// a und b sind die Schlüsselattribute

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

// Quelle: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

Der Vorteil liegt hier eindeutig in der Performance. Man braucht nur noch eine Abfrage an die Datenbank absetzen. Man muss keine Fallunterscheidung implementieren. Man wird gezwungen sich sinnvolle Schlüsselattribute zu überlegen.