Bonnes pratiques de configuration de MySQL
Déclencheurs
Cet article explique comment éviter des problèmes de performances lors de l’utilisation de déclencheurs MySQL. Des déclencheurs sont utilisés pour consigner les modifications dans les tables d'audit.
Produits et versions concernés
- Adobe Commerce On-Premise
- Adobe Commerce sur les infrastructures cloud
Incidences sur les performances
Les Triggers sont interprétés comme du code, ce qui signifie que MySQL ne les précompile pas.
En se connectant à l’espace de transaction de la requête, les déclencheurs ajoutent une surcharge à un analyseur et à un interpréteur pour chaque requête effectuée avec la table. Les déclencheurs partagent le même espace de transaction que les requêtes d'origine. Alors que ces requêtes sont en concurrence pour les verrous sur la table, les déclencheurs sont en concurrence indépendamment pour les verrous sur une autre table.
Cette surcharge supplémentaire peut avoir un impact négatif sur les performances du site si de nombreux déclencheurs sont utilisés.
Utilisation efficace
Pour éviter des problèmes de performances lors de l’utilisation de déclencheurs, suivez ces instructions :
- Si des déclencheurs personnalisés écrivent des données lors de l’exécution du déclencheur, déplacez cette logique pour écrire directement dans les tables d’audit à la place. Par exemple, en ajoutant une requête supplémentaire dans le code de l’application, après la requête pour laquelle vous souhaitiez créer le déclencheur.
- Passez en revue les déclencheurs personnalisés existants et envisagez de les supprimer et d’écrire directement dans les tableaux du côté de l’application. Recherchez les déclencheurs existants dans votre base de données à l’aide de l’instruction SQL
SHOW TRIGGERS
. - Pour toute assistance supplémentaire, toute question ou préoccupation, envoyez un ticket d’assistance Adobe Commerce.
Connexions esclaves
Adobe Commerce peut lire plusieurs bases de données de manière asynchrone. Si vous prévoyez une charge élevée pour la base de données MySQL d’un site Commerce déployé sur l’architecture Pro de l’infrastructure cloud, Adobe recommande d’activer la connexion esclave MYSQL.
Lorsque vous activez la connexion esclave MYSQL, Adobe Commerce utilise une connexion en lecture seule à la base de données pour recevoir le trafic en lecture seule sur un nœud non maître. Les performances sont améliorées par l’équilibrage de charge lorsqu’un seul nœud gère le trafic en lecture-écriture.
Versions affectées
Adobe Commerce sur les infrastructures cloud, architecture Pro uniquement
Configuration
Dans Adobe Commerce sur l’infrastructure cloud, vous pouvez remplacer la configuration par défaut de la connexion esclave MYSQL en définissant la variable MYSQL_USE_SLAVE_CONNECTION. Définissez cette variable sur true
pour utiliser automatiquement une connexion en lecture seule à la base de données.
Pour activer la connexion esclave MySQL :
-
Sur votre station de travail locale, accédez au répertoire du projet.
-
Dans le fichier
.magento.env.yaml
, définissez laMYSQL_USE_SLAVE_CONNECTION
sur true.code language-none stage: deploy: MYSQL_USE_SLAVE_CONNECTION: true
-
Validez les modifications apportées au fichier
.magento.env.yaml
et envoyez-le à l’environnement distant.Une fois le déploiement terminé, la connexion esclave MySQL est activée pour l’environnement cloud.