Il nostro carissimo e amatissimo CMS WordPress è progettato per funzionare solo su Database MySQL e ottimizzarlo è davvero fondamentale se volete che WordPress viaggi ad una velocità il più possibile vicino a quella della luce. Non tutto è così semplice come potrebbe apparire.

Tenete presente che, sin dall’uscita di mySQL 5.0, ci sono ben dieci motori per l’immagazzinamento dei dati; prima della realease 5.5, MyISAM era il motore di default, perciò, quando creavate una nuova tabella, automaticamente veniva utilizzato MyISAM.

Con l’avvento di MySQL 5.5 il motore di default è divenuto InnoDB e perciò ora si pone il dubbio: meglio MyISAM o InnoDB?

MyISAM

E’ il motore più vecchio e, di conseguenza, più comunemente utilizzato; semplice da impostare, è davvero ottimo nella lettura e supporta la piena indicizzazione testuale; purtroppo presenta anche degli svantaggi: nessun supporto operativo, nessun controllo dell’integrità dei dati e consente solo il blocco completo delle tabelle rendendo più lento ogni aggiornamento o inserimento nuovo di dati in quanto, per ognuna di queste operazioni, l’intera tabella risulterà bloccata rendendola inaccessibile alle query.

Struttura di MyISAM

Struttura di MyISAM

Per questi motivi MyISAM risulta una buona scelta per la maggior parte delle tabelle WordPress: lavora bene e non necessita di troppe ottimizzazioni (anche perché, pur ottimizzandolo, non ricaverete sensibili benefici in termini di performance).

A causa del mancato controllo dell’integrità dei dati, però, è possibile una perdita di dati seguente a problemi hardware, chiusura e/o blocco temporaneo del sistema.

InnoDB

E’, relativamente, il nuovo motore e supporta appieno tutte le operazioni: veloce nell’aggiornamento e nell’inserimento di dati perché permette il blocco per riga per le operazioni multiple sulla stessa tabella e supporta chiavi estranee per le relazioni nella tabella stessa. La cosa veramente rilevante di InnoDB è il controllo dell’integrità dei dati: mentre MyISAM esegue una scansione completa del proprio database per ripararlo, InnoDB legge le istruzioni registrate nei log e ripristina il tutto; da ciò consegue che il tempo che impiega InnoDB per il recupero dei dati non aumenta (come nel caso dell’uso di MyISAM) con l’aumento delle dimesioni del database.

Struttura di InnoDB

Struttura di InnoDB

Non supporta le ricerche fulltext e necessita di molte più risorse (leggasi RAM) rispetto a MyISAM. Dovrete impegnare parecchio tempo per trovare le ottimizzazioni giuste per il vostro InnoDb, a seconda del livello di ottimizzazione che volete utilizzare e dell’hardware di cui disponete, ma, alla fine, sarete ricompensati: potrete velocizzare InnoDb facendolo viaggiare ad un velocità fino a 20 volte quella iniziale di default!

InnoDB non ha dimensioni costanti per tabella, quindi, se interrogate per conoscere le dimensioni di una tabella, sappiate che i valori che vi compariranno sono indicativi; InnoDb ha un sistema completamente diverso di manovrare i dati rispetto a MyISAM e necessita di molto più spazio, il suo particolare metodo di operare lo rende la scelta appropriata per i sistemi che necessitano di backup periodici avendo, inoltre, la quasi certezza della sicurezza con la quale verranno gestiti i dati.

Quale motore scegliere?

Non è semplice rispondere a questa domanda; se avete MyISAM come motore di default per il vostro database, potreste comunque provare InnoDB. Tutto dipende dalle vostre necessità: se avete un server con molta memoria non noterete rallentamenti (passando da MyISAM a InnoDB) e impostandolo per bene noterete notevoli miglioramenti nell’accesso ai dati.

Di default WordPress non supporta le ricerche fulltext, perciò potrebbe essere una buona idea quella di utilizzare InnoDB, così come se avete necessità di affidabilità nel recupero dati.

Per i siti normali, con non molto traffico, il motore non è un fattore determinante; diventa importante con l’aumentare del traffico sul vostro sito.

Potreste utilizzare InnoDB per le tabelle che richiedono aggiornamenti maggiori (come le tabelle wp_options, wp_usermeta, wp_comments) e MyISAM per le tabelle per le quali volete utilizzare la ricerca fulltext.

Ricordatevi di non perdere di vista le caratteristiche del vostro server: centellinate le risorse a vostra disposizione per evitare noiosi rallentamenti e impiegate il vostro tempo alla ricerca della configurazione più adatta a voi.

Buon lavoro!