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: 512MParameter name: innodb_thread_concurrency
Recommended value: 8 (equal to number of CPU cores)Parameter name: innodb_additional_mem_pool_size
Recommended value: 8MParameter name: innodb_log_buffer_size
Recommended value: 4M
Magento usa il motore di database InnoDB per la maggiorparte delle sue tabelle.