Best Practices für die MySQL-Konfiguration
Trigger
In diesem Artikel wird erläutert, wie sich Leistungsprobleme bei der Verwendung von MySQL-Triggern vermeiden lassen. Trigger werden verwendet, um Änderungen in Audit-Tabellen zu protokollieren.
Betroffene Produkte und Versionen
- Adobe Commerce On-Premises
- Adobe Commerce auf Cloud-Infrastruktur
Auswirkungen auf die Leistung
Trigger werden als Code interpretiert, was bedeutet, dass MySQL sie nicht vorkompiliert.
Beim Einbinden in den Transaktionsbereich der Abfrage fügen Trigger für jede mit der Tabelle durchgeführte Abfrage einen Mehraufwand für einen Parser und einen Interpreter hinzu. Die Trigger nutzen denselben Transaktionsbereich wie die Originalabfragen. Während diese Abfragen um Tabellensperren konkurrieren, konkurrieren die Trigger unabhängig voneinander um Sperren in einer anderen Tabelle.
Dieser zusätzliche Mehraufwand kann sich negativ auf die Site-Leistung auf der Site auswirken, wenn viele Trigger verwendet werden.
Effektive Nutzung
Um Leistungsprobleme bei der Verwendung von Triggern zu vermeiden, befolgen Sie die folgenden Richtlinien:
- Wenn Sie benutzerdefinierte Trigger haben, die einige Daten schreiben, wenn der Trigger ausgeführt wird, verschieben Sie diese Logik stattdessen so, dass sie direkt in die Audit-Tabellen schreibt. Durch Hinzufügen einer zusätzlichen Abfrage im Anwendungscode nach der Abfrage, für die Sie den Trigger erstellen möchten, können Sie dies beispielsweise tun.
- Überprüfen Sie vorhandene benutzerdefinierte Trigger und erwägen Sie, sie zu entfernen und direkt in die Tabellen auf Anwendungsseite zu schreiben. Suchen Sie mithilfe der
SHOW TRIGGERS
SQL-Anweisung nach vorhandenen Triggern in Ihrer. - Wenn Sie weitere Hilfe, Fragen oder Bedenken wünschen, Sie ein Adobe Commerce Support-Ticket.
Slave-Verbindungen
Adobe Commerce kann mehrere Datenbanken asynchron lesen. Wenn Sie eine hohe Auslastung der MySQL-Datenbank einer Commerce-Site erwarten, die auf der Cloud Infrastructure Pro-Architektur bereitgestellt wird, empfiehlt Adobe, die MYSQL-Slave-Verbindung zu aktivieren.
Wenn Sie die MYSQL-Slave-Verbindung aktivieren, verwendet Adobe Commerce eine schreibgeschützte Verbindung zur Datenbank, um schreibgeschützten Traffic auf einem Nicht-Master-Knoten zu empfangen. Die Leistung wird durch den Lastausgleich verbessert, wenn nur ein Knoten Lese-/Schreibdatenverkehr verarbeitet.
Betroffene Versionen
Adobe Commerce auf Cloud-Infrastruktur, nur Pro-Architektur
Konfiguration
In der Adobe Commerce on Cloud-Infrastruktur können Sie die Standardkonfiguration für die MYSQL-Slave-Verbindung überschreiben, indem Sie die Variable MYSQL_USE_SLAVE_CONNECTION festlegen. Legen Sie diese Variable auf true
fest, um automatisch eine schreibgeschützte Verbindung zur Datenbank zu verwenden.
So aktivieren Sie die MySQL-Slave-Verbindung:
-
Wechseln Sie auf Ihrer lokalen Workstation in Ihr Projektverzeichnis.
-
Legen Sie in der
.magento.env.yaml
-Datei denMYSQL_USE_SLAVE_CONNECTION
auf „true“ fest.code language-none stage: deploy: MYSQL_USE_SLAVE_CONNECTION: true
-
Übergeben Sie die
.magento.env.yaml
Dateiänderungen und übertragen Sie sie in die Remote-Umgebung.Nach erfolgreichem Abschluss der Bereitstellung wird die MySQL-Slave-Verbindung für die Cloud-Umgebung aktiviert.