Zusammenfassung
Wir haben den DataHandler für TYPO3 Version 12 schon geprüft. Jetzt schauen wir uns die neuen Versionen 13 und 14 an. Der DataHandler ist der Wächter für die Daten. Dieser Aufbau bleibt gleich. Aber beide neuen Versionen haben kleine und wichtige Verbesserungen. TYPO3 Version 13 geht besser mit Datum und Uhrzeit um. TYPO3 Version 14 räumt den Programm-Code auf. Alte Funktionen verschwinden. Das System wird moderner.
Wir haben einen Test mit 10.000 Daten-Sätzen gemacht. Wir haben diesen Test in beiden Versionen durchgeführt. Das Ergebnis zeigt eine klare Sache. Der Programm-Code ist nun besser und einheitlicher. Die Leistung bei vielen Daten bleibt aber gleich. Das Ergebnis bestätigt auch unsere alte Regel. Die Verarbeitung in Gruppen ist sehr wichtig. Das Abschalten von bestimmten Funktionen ist ebenso wichtig. Diese Dinge bringen über 90 Prozent mehr Leistung. Die Version von TYPO3 spielt dabei keine Rolle. Wer viele Daten schnell verarbeiten will, muss mit dem DataHandler arbeiten. Man darf nicht dagegen arbeiten.
Inhaltsverzeichnis
Blick in die Zukunft
Getrenntes Speicher-System
I. Einleitung: Das Speicher-System noch einmal geprüft
Unsere Prüfung von Version 12 hat ein klares Ergebnis gezeigt. Der TYPO3 DataHandler achtet sehr auf die Richtigkeit der Daten. Die reine Geschwindigkeit ist weniger wichtig. Der DataHandler merkt sich viele Dinge. Das bremst das System bei großen Daten-Mengen stark. Man kann dieses Problem aber lösen. Man kann die Daten in kleinen Gruppen verarbeiten. TYPO3 entwickelt sich immer weiter. Wir prüfen diese Erkenntnisse nun mit den neuen Versionen. Dieser Bericht schaut auf TYPO3 Version 13. Wir schauen auch auf die Entwicklungs-Version von TYPO3 Version 14.
Wir haben ein klares Ziel. Wir wollen die Leistung prüfen. Wir schauen auf Änderungen im Programm-Code. Wir schauen auf neue Funktionen. Wir messen genau, ob diese Dinge das System schneller machen. Damit geben wir Programmierern verlässliche Informationen.
II. Methode: Nachvollziehbare Messung über alle Versionen
Wir wollen gültige und vergleichbare Ergebnisse haben. Dafür haben wir eine einheitliche Test-Umgebung aufgebaut. Wir nutzen dafür das Programm DDEV. Damit können wir TYPO3 Version 13 und 14 schnell starten. Die Systeme sind voneinander getrennt. Jeder Test läuft unter den exakt gleichen Bedingungen.
Ein Programm-Skript steuert den ganzen Ablauf. Es richtet die Umgebung ein. Es führt auch die Messung durch. Sie finden das ganze Skript am Ende von diesem Text.
2.1 Aufbau der Umgebung mit DDEV
Wir haben eigene Einstellungen für TYPO3 Version 13 und 14 gemacht. Für Version 14 laden wir den originalen Programm-Code von TYPO3 herunter. Ein Befehl legt die Art des Projekts fest. Der Befehl bestimmt auch die PHP-Version für jede Umgebung. PHP ist eine Programmier-Sprache.
Einstellungen für DDEV (.ddev/config.yaml)
name: typo3-benchmark-v13
type: typo3
docroot: public
php_version: "8.2"
webserver_type: apache-fpm
database:
type: mariadb
version: "10.11"
web_environment:
- TYPO3_CONTEXT=Development/DDEV
php:
ini:
memory_limit: '2G'Die Nutzung von DDEV garantiert gleiche Bedingungen für alle. Setzen Sie das Limit für den Arbeits-Speicher auf 2 Gigabyte. So bekommen Sie echte Ergebnisse für die Leistung.
2.2 Ablauf der Messung mit Befehlen
Wir führen in allen drei Versionen die gleichen Befehle aus. Wir nutzen dafür TYPO3 Version 12, 13 und 14.
data:generate: Dieser Befehl erstellt 10.000 erfundene Nachrichten.data:import: Dieser Befehl liest die Daten ein. Wir können dabei Optimierungen einstellen.
Ausführung der Befehle:
# Einfache Messung (Eine einzelne DataHandler Anmeldung)
ddev exec vendor/bin/typo3 data:import
# Verbesserte Messung (Verarbeitung in Gruppen + Funktionen abschalten)
ddev exec vendor/bin/typo3 data:import --batch-size=500 --disable-logging --bypass-permissions --disable-versioning2.3 Messwerte & Messung
Wir messen in allen Versionen die gleichen Dinge:
- Ausführungs-Zeit: Wir messen die Zeit sehr genau.
- Höchster Arbeits-Speicher: Wir messen den echten Verbrauch vom Speicher.
- Durchsatz: Wir zählen die verarbeiteten Daten-Sätze pro Sekunde.
Wir führen jeden Test dreimal aus. Wir nehmen den mittleren Wert. Das macht das Ergebnis sicher.
III. TYPO3 Version 13: Schrittweise Verbesserungen
3.1 Änderungen im Kern mit Einfluss auf die Leistung
TYPO3 Version 13 baut den DataHandler nicht komplett um. Es gibt aber mehrere Verbesserungen:
Umgang mit Datum und Uhrzeit:
- Extbase ist ein Teil von TYPO3.
- Extbase gleicht die Verarbeitung der Zeit nun an den DataHandler an.
- Das spart Rechen-Leistung bei Modellen von Extbase.
- Auswirkung: Sehr klein. Das ist nur für Seiten mit viel Extbase wichtig.
Umstellung auf Ereignisse:
- TYPO3 hat alte Schnittstellen durch neue Ereignisse ersetzt.
- Das System verarbeitet diese Ereignisse nun schneller.
- Auswirkung: Etwa 1 Prozent mehr Leistung bei vielen Ereignissen.
Verbesserungen der Datenbank:
- Das System baut Datenbank-Abfragen nun besser auf.
- Abfragen werden besser zwischengespeichert.
- Auswirkung: Wichtig bei der Verarbeitung von vielen Daten.
TYPO3 Version 13 verträgt sich mit altem Programm-Code. Alle Befehle für den DataHandler aus Version 12 funktionieren hier ohne Änderungen.
3.2 Ergebnisse der Messung: TYPO3 Version 13
Einfaches Einlesen (10.000 Daten-Sätze, ein DataHandler):
| Messwert | Wert | Einheit |
|---|---|---|
| Ausführungs-Zeit | 408.22 s | Sekunden |
| Höchster Speicher | 779.45 MB | Megabyte |
| Durchsatz | 24.50 Daten/s | Daten pro Sekunde |
Im Vergleich zu TYPO3 Version 12:
- Ausführungs-Zeit: 1,1 Prozent schneller (408.22s anstatt 412.58s)
- Höchster Arbeits-Speicher: 0,6 Prozent weniger (779.45 MB anstatt 784.31 MB)
- Durchsatz: 1,1 Prozent mehr (24.50 Daten/s anstatt 24.24 Daten/s)
TYPO3 Version 13 ist beim einfachen Einlesen nur ganz leicht schneller. Die Verbesserungen sind messbar. Sie verändern die massenhafte Verarbeitung aber nicht grundlegend.
3.3 Verbessertes Einlesen in Gruppen: Version 13
Wir nutzen die gleichen Verbesserungen wie bei Version 12. Die Gruppen-Größe ist 500. Das Protokoll ist aus. Die Rechte-Prüfung ist aus.
- Ausführungs-Zeit: 37,91 Sekunden (anstatt 38,77 Sekunden in Version 12)
- Höchster Arbeits-Speicher: 96,22 Megabyte (anstatt 98,50 Megabyte in Version 12)
- Durchsatz: 263,85 Daten-Sätze pro Sekunde (anstatt 257,99 in Version 12)
- Verbesserung zum einfachen Einlesen: 90,7 Prozent
Die Verarbeitung in Gruppen bringt die meiste Leistung. Die Version von TYPO3 ist dabei egal.
IV. TYPO3 Version 14 Entwicklung: Große Änderungen
4.1 Entwicklung vom Aufbau
TYPO3 Version 14 räumt weiter auf. Es gibt dabei große Änderungen:
Alte Eigenschaften entfernt:
- TYPO3 hat alte Teile aus dem DataHandler gelöscht.
- Der Programm-Code ist nun einfacher.
- Auswirkung: Das macht das System sauberer. Es bringt keine direkte Leistung.
Alte Schnittstellen komplett entfernt:
- TYPO3 hat alle alten Schnittstellen durch neue Ereignisse ersetzt.
- Das System für Ereignisse ist nun strenger geprüft.
- Auswirkung: Das System arbeitet die Ereignisse nun leicht schneller ab.
Fortschritt bei der Datenspeicherung:
- Erste Schritte für eine Trennung der Dienste sind sichtbar.
- Der Code wird für die Zukunft vorbereitet.
- Auswirkung: Das bringt jetzt noch keine Leistung.
TYPO3 Version 14 ist noch in der Entwicklung. Programmierer müssen alte Befehle aus ihren Erweiterungen entfernen. Sonst funktioniert das Update nicht.
4.2 Ergebnisse der Messung: TYPO3 Version 14
Einfaches Einlesen (10.000 Daten-Sätze):
| Messwert | Wert | Einheit |
|---|---|---|
| Ausführungs-Zeit | 405.18 s | Sekunden |
| Höchster Speicher | 776.80 MB | Megabyte |
| Durchsatz | 24.68 Daten/s | Daten pro Sekunde |
Im Vergleich zu TYPO3 Version 12:
- Ausführungs-Zeit: 1,8 Prozent schneller (405.18s anstatt 412.58s)
- Höchster Arbeits-Speicher: 1,0 Prozent weniger (776.80 MB anstatt 784.31 MB)
- Durchsatz: 1,8 Prozent mehr (24.68 Daten/s anstatt 24.24 Daten/s)
4.3 Verbessertes Einlesen in Gruppen: Version 14
Wir haben wieder alle Optimierungen eingeschaltet:
- Ausführungs-Zeit: 37,52 Sekunden
- Höchster Arbeits-Speicher: 95,18 Megabyte
- Durchsatz: 266,52 Daten-Sätze pro Sekunde
- Verbesserung zum einfachen Einlesen: 90,7 Prozent
TYPO3 Version 14 ist im einfachen Test am schnellsten. Der Unterschied ist aber sehr klein.
V. Leistungs-Vergleich der Versionen
5.1 Entwicklung vom Durchsatz
Der einfache Durchsatz steigt leicht von Version 12 auf 14. Er steigt von 24.24 auf 24.68 Daten-Sätze pro Sekunde. Der verbesserte Durchsatz zeigt die gleiche Richtung. Er steigt von 257.99 auf 266.52 Daten-Sätze pro Sekunde.
Die Verbesserungen der Leistung sind gleichmäßig. Sie sind aber nicht riesig.
5.2 Vergleich vom Speicher-Verbrauch
Der Verbrauch vom Speicher sinkt leicht von Version 12 auf 14:
- Einfach: 784 Megabyte sinken auf 777 Megabyte.
- Gruppen-Verarbeitung: 98.5 Megabyte sinken auf 95.2 Megabyte.
Die Gruppen-Verarbeitung spart den meisten Speicher. Das gilt für alle Versionen.
5.3 Verbesserungen der Leistung über alle Versionen
| TYPO3 Version | Einfach (s) | Verbessert (s) | Verbesserung |
|---|---|---|---|
| Version 12 LTS | 412.58 | 38.77 | 90.6% |
| Version 13 LTS | 408.22 | 37.91 | 90.7% |
| Version 14 Main | 405.18 | 37.52 | 90.7% |
Wichtige Erkenntnis: Die Verarbeitung in Gruppen und das Abschalten von Funktionen bringen etwa 90,7 Prozent mehr Leistung. Das bleibt bei allen Versionen gleich. Die Änderungen am Aufbau wirken. Aber das grundsätzliche Verhalten bleibt gleich.
VI. Einblicke in den Aufbau: Warum die Leistung gleich bleibt
6.1 Das merkende System bleibt bestehen
Der DataHandler hat Engpässe. Er merkt sich Daten. Er prüft jeden einzelnen Daten-Satz. Er leert Zwischen-Speicher. Das alles bleibt in Version 13 und 14 gleich.
Ansammeln von Daten:
// Interne Listen wachsen mit jedem Daten-Satz
public array $errorLog = [];
public array $copyMappingArray_merged = [];
public array $remapStack = [];Diese Eigenschaften sammeln Daten über die gesamte Laufzeit an. Bei 10.000 Daten-Sätzen wird der Arbeits-Speicher voll. Das System wird langsam.
Aufwand pro Daten-Satz:
- Prüfung der Rechte: Passiert pro Daten-Satz
- Verarbeitung der Felder: Passiert pro Feld
- Schreiben vom Verlauf: Passiert pro Änderung
- Leeren vom Zwischen-Speicher: Passiert pro Vorgang
Dieser Aufwand ist Absicht. Er ist kein Fehler. Er bleibt in allen Versionen gleich.
6.2 Verarbeitung in Gruppen als Lösung
Die Verarbeitung in Gruppen umgeht das Ansammeln von Daten. Das System startet sich regelmäßig neu:
foreach ($chunks as $chunk) {
// NEUER DataHandler für jede Gruppe
$dataHandler = GeneralUtility::makeInstance(DataHandler::class);
// Optimierungen aktivieren
$dataHandler->enableLogging = false;
$dataHandler->bypassAccessCheckForRecords = true;
// Gruppe verarbeiten
$dataHandler->start($dataMap, []);
$dataHandler->process_datamap();
// Speicher gezielt freigeben
unset($dataHandler);
}Dieser Weg funktioniert in Version 12, 13 und 14 genau gleich. Das liegt am unveränderten Aufbau.
Die Verarbeitung in Gruppen gilt nicht nur für eine Version. Ein guter Code für Version 12 läuft auch in Version 13 und 14. Die Leistung bleibt dabei gleich.
VII. Praktische Empfehlungen für Programmierer
7.1 Wechsel der Version: Blick auf die Leistung
Von Version 12 auf 13 wechseln:
- Leistungs-Gewinn: Sehr klein (Unter 2 Prozent)
- Änderungen am Code: Keine für die Massen-Verarbeitung
- Aufwand für den Wechsel: Gering (Verträgt sich mit altem Code)
Von Version 13 auf 14 wechseln:
- Leistungs-Gewinn: Sehr klein (Unter 2 Prozent)
- Änderungen am Code: Groß, weil alte Befehle weg sind
- Aufwand für den Wechsel: Mittel (Code muss aufgeräumt werden)
Wechseln Sie nicht nur wegen der Leistung vom DataHandler. Die Verbesserungen sind messbar, aber nicht entscheidend. Achten Sie lieber auf neue Funktionen und Sicherheit.
7.2 Allgemeiner Plan zur Verbesserung
Diese Strategie funktioniert in allen TYPO3-Versionen:
1. Pflicht zur Gruppen-Verarbeitung
Sehr wichtig: Bei mehr als 100 Daten-Sätzen müssen Sie Gruppen nutzen. Nutzen Sie 250 bis 500 Sätze pro Gruppe. Starten Sie den DataHandler für jede Gruppe neu.
2. Funktionen abschalten
Große Wirkung: Schalten Sie das Protokoll ab. Schalten Sie die Rechte-Prüfung ab. Schalten Sie die Prüfung der gespeicherten Daten ab. Schalten Sie die Versionierung ab.
3. Sicherer Rahmen
Daten-Sicherheit: Packen Sie die Logik in sichere Datenbank-Rahmen. Das nennt man Transactions. Das garantiert Sicherheit beim Speichern.
4. Späteres Leeren
Wirksamkeit: Leeren Sie den Zwischen-Speicher nicht nach jedem Daten-Satz. Leeren Sie ihn nur einmal ganz am Ende.
7.3 Code-Beispiel: Allgemeines Einlesen von Massen-Daten
Dieser Code läuft ohne Änderungen in TYPO3 Version 12, 13 und 14. Die Verbesserungen gelten für alle Versionen.
VIII. Blick in die Zukunft: Die Speicher-Initiative
8.1 Das Ziel: Ein getrenntes Speicher-System
Die TYPO3 Speicher-Initiative arbeitet an einem komplett neuen Aufbau.
Das ist das Ziel:
- Dienst für Datenbank: Arbeitet nur mit der Datenbank. Er merkt sich keine alten Daten.
- Dienst für Rechte: Prüft nur, wer was darf.
- Dienst für Prüfung: Prüft nur, ob die Daten richtig sind.
- Dienst für Versionen: Kümmert sich nur um alte und neue Stände.
- Dienst für Zwischen-Speicher: Verwaltet nur die schnellen Speicher.
Zusammensetzung: Programmierer können eigene Abläufe bauen. Sie nutzen nur die nötigen Dienste. Das vermeidet unnötige Arbeit für das System.
8.2 Zeitplan und Erwartungen
Echte Vorhersage:
- TYPO3 Version 14: Bringt erste innere Umbauten. Es gibt noch keine neuen Befehle für alle.
- TYPO3 Version 15: Bringt vielleicht neue Befehle neben dem DataHandler.
- TYPO3 Version 16: Bringt einen komplett neuen Aufbau.
Die große Leistungs-Steigerung kommt nicht in Version 13 oder 14. Aber der Grundstein wird jetzt gelegt.
Die Initiative arbeitet viel. Sie steht aber noch am Anfang. Erwarten Sie in Version 14 keine großen Änderungen am Grund-Aufbau vom DataHandler.
IX. Zusammenfassung und Empfehlungen
9.1 Wichtige Erkenntnisse
- Schrittweise Verbesserungen: TYPO3 Version 13 und 14 bringen kleine Leistungs-Gewinne beim einfachen Einlesen.
- Einheitliche Verbesserungen: Die Verarbeitung in Gruppen bringt immer über 90 Prozent mehr Leistung.
- Aufbau bleibt stabil: Die Art, wie der DataHandler arbeitet, ändert sich in Version 13 und 14 nicht.
- Allgemeine gute Wege: Ein guter Programm-Code aus Version 12 funktioniert auch in neueren Versionen ohne Änderung.
- Blick in die Zukunft: Die Speicher-Initiative arbeitet an einem neuen Aufbau. Das dauert aber noch bis Version 15 oder länger.
9.2 Empfehlungen zum Handeln
Gruppen-Verarbeitung ist Pflicht
Nutzen Sie Gruppen für alle Verarbeitungen ab 100 Daten-Sätzen. Dieser Weg bringt immer über 90 Prozent mehr Leistung. Er funktioniert in jeder Version.
Wechseln Sie nicht wegen der Leistung
Wechseln Sie zu Version 13 oder 14 für neue Funktionen und Sicherheit. Wechseln Sie nicht wegen der Leistung vom DataHandler. Die Gewinne sind zu klein.
Code nur einmal schreiben
Ein verbesserter Code aus Version 12 läuft auch in Version 13 und 14. Investieren Sie in einen guten und allgemeinen Code für den Import.
Speicher-Initiative beobachten
Behalten Sie die Speicher-Initiative im Auge. Prüfen Sie einen Wechsel, sobald neue Befehle verfügbar sind. Das macht das System später noch schneller.
Grundlage der Datenbank
Eine saubere Ordnung in der Datenbank ist wichtig. Ohne gute Ordnung bringen die besten Programme nichts. Achten Sie auf saubere Spalten.
Sichere Abläufe
Nutzen Sie sichere Rahmen für Datenbank-Aktionen. Nutzen Sie Transactions. Das schützt die Daten bei hoher Geschwindigkeit.
X. Anhang: DDEV-Aufbau für Messungen mit mehreren Versionen
10.1 Haupt-Skript für die Messung
Komplett automatischer Aufbau und Messung für alle drei TYPO3-Versionen:
Das Skript erlaubt wiederholbare Messungen auf jedem fähigen System. Die Ausführung dauert etwa 30 Minuten für alle drei Versionen.
10.2 Einstellungen für DDEV pro Version
Einstellungen für Version 12:
Einstellungen für Version 13:
Einstellungen für Version 14:
Für Fragen zur Umsetzung: office@webconsulting.at