Performance optimiert
Caches
Es wurde der 2nd-Level-Cache von Doctrine eingeführt. https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/second-level-cache.html
Namespaces und Regions wurden eingeführt und im Einklang an den Namen der jeweiligen App gebunden
Die UI zum aktivieren/deaktivieren/leeren wurde an die zuvor genannte Dynamik angeglichen. Es ist nun bspw. möglich App spezifische Caches zu leeren.
Es wurden Cache-Parameter Klassen eingeführt, die Cache-Stellen nach außen sichtbar und nachvollziehbar machen
MySQL-Indices
Für jede Suche ist ein Index notwendig (Delete, FindBy, Relations, Translations, usw.). Fehlende Indices wurden nachgezogen.
Garbage Collection
Bei der Verarbeitung großer Datenmengen muss der Garbage Kollektor dazu passende Anfragen erstellen. Es gab Stellen die z.T. sehr inperformant geschrieben waren.
Es wurden ForeignKeys ergänzt um Garbage Kollektoren zu vermeiden.
SQL Views
Die Möglichkeit SQL Views einzusetzen unterstützt dabei performante Queries zu schreiben.
Optimierung von Queries
Suchen wurden so optimiert dass Pattern der folgenden Art beachtet wurden:
WHERE IN id (1,2,3,4,..)
= Anti-Pattern
WITH RECURSIVE SELECT FROM (Rekursive Queries)
FULLTEXT mit MATCH () AGAINST ()
Weitere Anpassungen
Es wurde eine zentrale Stelle so umgestellt, dass Deadlocks vermeiden werden. Die Relations sind nun dediziert.
Die Suche in verschlüsselten Feldern wurde optimiert.
Es wurde ein Performance-Logging eingeführt