UUIDs erzeugen:
Geschwindigkeitsvergleich MySQL vs. PHP

Für ein neues Projekt benötige ich eine sehr große Anzahl von UUIDs, die in einer Datenbank eingetragen werden müssen. Nun fragte ich mich, ob ein Erzeugen per PHP mit anschließendem Eintrag in die DB schneller sei oder eine direkte Erzeugung mit MySQL.

In einem früheren Artikel habe ich beschrieben, wie man eine UUID mit PHP erzeugen kann. Es geht aber auch mit einem direkten SQL-Statement:

Was ist also schneller, MySQL oder PHP? Ich habe mir für einen Versuch die folgende Tabelle gebaut:

Mit einem PHP-Script schreibe ich dann einmal 100 000 UUIDs mit der in diesem Artikel beschriebenen Funktion in die MySQL-Datenbank, im zweiten Schritt direkt mit dem obenstehenden SQL-Statement. Ich messe die Zeit und führe diesen Test einmal lokal auf meinem MacBook Pro 17 aus und wiederhole den Test auf zwei Servern von Netzwerken, mit denen ich täglich zu tuen habe. Alle Test wiederhole ich fünfmal und nehme das arithmetische Mittel der Zeit.

Auf allen Rechnern habe ich keine Optimierung durchgeführt, ich wollte ein praxistaugliches Ergebnis für mich. Hier sind die Resultate:

Geschwindigkeitsvergleich UUID-Erzeugung:

Geschwindigkeitsvergleich UUID-Erzeugung: MySQL vs. PHP

Das Ergebnis hat mich sehr erstaunt, ich hätte wetten können, dass eine Erzeugung von UUIDs direkt mit einem SQL-Statement schneller ist, als die Erzeugung per PHP-Funktion. Der ‚Ausrutscher‘ in Netz 1, es hat im Schnitt 85 Sekunden gebraucht, um die UUIDs zu erzeugen, zeigt einmal mehr, dass Datenbanken ab einer bestimmten Last schnell zu einem Flaschenhals werden können.

Fazit für mich:
Meine benötigten UUIDs werde ich mit PHP erzeugen.

Automatisierung, Coding, MySQL, PHP, Webapplication, Webentwicklung