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