Magento è un’applicazione molto incentrata sui database con uno schema complesso e centinaia di tabelle, usando un’architettura che viene indicata come il modello Entity-attribute-value model (EAV) .

Questo modello fa di Magento una piattaforma molto potente ed estensibile , ma il server deve essere ottimizzato per elaborare queste query complesse sul database . La maggior parte dei problemi di prestazioni di magento, sono in realtà causati da una configurazione inefficiente di MySQL .


Nota : queste modifiche richiedono l’accesso amministratore sul server , quindi se il vostro sito è hostato su un provider di hosting condiviso probabilmente non siete grado di applicare queste modifiche .

Sul server MySQL , aprire il file di configurazione ( di solito si trova in /etc/my.cnf ) in un editor di testo . Questo file contiene vari parametri che hanno effetto su come MySQL alloca le risorse , limite di connessione , ecc.

I numeri possono variare a seconda della configurazione del sistema .

MySQL Query Cache

Parameter: query_cache_type
Recommended value: 1 (on)

Parameter: query_cache_size
Recommended value: 64M

Forse il più importante di tutti i parametri di ottimizzazione è la cache delle query . La cache delle query memorizza il testo di un’istruzione SELECT insieme al risultato corrispondente che viene inviato al client . Se una dichiarazione identica viene inviata in seguito , il server recupera i risultati dalla cache delle query invece di eseguire nuovamente l’istruzione .Questo avrà un impatto significativo sulle prestazioni di Magento .

 

Thread Cache Size

Parameter name: thread_cache_size
Recommended value: 16

MySQL utilizza un thread separato per ogni connessione client . In ambienti dove le applicazioni non si attaccano ad un’istanza di database persistente , ma piuttosto creano e chiudono un sacco di connessioni ogni secondo , il processo di deposizione dei nuovi threads ad alto tasso può consumare notevoli risorse di CPU . Per alleviare questo effetto negativo , MySQL implementa thread cache, che permette di risparmiare thread di connessioni che vengono chiuse e riutilizzarli per nuove connessioni .

 

Key Buffer

Parameter name: key_buffer
Recommended value: 256M

 

Il key buffer viene utilizzata per memorizzare i blocchi di indice per le tabelle MyISAM . Magento utilizza InnoDB per molte delle sue tabelle del database più pesanti , l’effetto del buffer delle chiavi MyISAM è alquanto ridotta . Tuttavia, è una buona idea impostarlo un po ‘ superiore a quello di default .

 

Table Cache

Parameter name: table_cache
Recommended value: 512

 

MySQL alloca una porzione della memoria per il table caching. table_cache è legato al max_connections .

Ad esempio , per 200 connessioni simultanee in esecuzione , si dovrebbe avere una dimensione di cache table di almeno 200 * N , dove N è il numero massimo di tabelle per join a una delle query che si esegue .

 

InnoDB impostazioni specifiche

Parameter name: innodb_buffer_pool_size
Recommended value: 512M

Parameter name: innodb_thread_concurrency
Recommended value: 8 (equal to number of CPU cores)

Parameter name: innodb_additional_mem_pool_size
Recommended value: 8M

Parameter name: innodb_log_buffer_size
Recommended value: 4M

 

Magento usa il motore di database InnoDB per la maggiorparte delle sue tabelle.