Best practice di configurazione MySQL
Triggers
Questo articolo spiega come evitare problemi di prestazioni quando si utilizzano i trigger MySQL. Gli attivatori vengono utilizzati per registrare le modifiche nelle tabelle di controllo.
Prodotti e versioni interessati
- Adobe Commerce on-premise
- Adobe Commerce sull’infrastruttura cloud
Impatto sulle prestazioni
I trigger vengono interpretati come codice, il che significa che MySQL non li precompila.
Collegandosi allo spazio delle transazioni della query, i trigger aggiungono un sovraccarico a un parser e a un interprete per ogni query eseguita con la tabella. I trigger condividono lo stesso spazio di transazione delle query originali e, mentre tali query competono per i blocchi della tabella, i trigger competono in modo indipendente per i blocchi di un'altra tabella.
Questo sovraccarico aggiuntivo può influire negativamente sulle prestazioni del sito se vengono utilizzati molti trigger.
Uso efficace
Per evitare problemi di prestazioni quando si utilizzano i trigger, attenersi alle seguenti linee guida:
- Se disponi di trigger personalizzati che scrivono alcuni dati quando il trigger viene eseguito, sposta questa logica per scrivere direttamente nelle tabelle di controllo. Ad esempio, aggiungendo una query aggiuntiva nel codice dell’applicazione, dopo la query per la quale intendi creare il trigger.
- Rivedi i trigger personalizzati esistenti e prendi in considerazione la loro rimozione e la scrittura diretta nelle tabelle dal lato dell’applicazione. Controllare i trigger esistenti nel database utilizzando l'istruzione SQL
SHOW TRIGGERS
. - Per ulteriore assistenza, domande o dubbi, invia un ticket di supporto Adobe Commerce.
Connessioni slave
Adobe Commerce può leggere più database in modo asincrono. Se prevedi un carico elevato per il database MySQL di un sito Commerce distribuito sull’architettura Pro dell’infrastruttura cloud, l’Adobe consiglia di abilitare la connessione slave MYSQL.
Quando si abilita la connessione slave MYSQL, Adobe Commerce utilizza una connessione di sola lettura al database per ricevere traffico di sola lettura su un nodo non principale. Le prestazioni migliorano grazie al bilanciamento del carico quando un solo nodo gestisce il traffico in lettura-scrittura.
Versioni interessate
Adobe Commerce su infrastruttura cloud, solo architettura Pro
Configurazione
Nell'infrastruttura cloud di Adobe Commerce è possibile ignorare la configurazione predefinita per la connessione slave MYSQL impostando la variabile MYSQL_USE_SLAVE_CONNECTION. Impostare questa variabile su true
per utilizzare automaticamente una connessione di sola lettura al database.
Per abilitare la connessione slave MySQL:
-
Sulla workstation locale, passa alla directory del progetto.
-
Nel file
.magento.env.yaml
, impostareMYSQL_USE_SLAVE_CONNECTION
su true.code language-none stage: deploy: MYSQL_USE_SLAVE_CONNECTION: true
-
Eseguire il commit delle modifiche al file
.magento.env.yaml
e inviare il messaggio push all'ambiente remoto.Al termine della distribuzione, la connessione slave MySQL viene abilitata per l'ambiente cloud.