Database Wordpress lento - devo passare a InnoDB?


12

Ho un sito WordPress con oltre 10k post e le cose iniziano a rallentare ogni volta che aggiungo e modifico post. Le pagine si caricano in modo rapido e piacevole per gli utenti, insieme agli elenchi di post di amministrazione, ma è quando si verificano scritture o aggiornamenti che il server passa al 100% della CPU e impiega molto tempo (a volte più lungo del timeout di PHP degli anni '60).

Sto pensando che questo avrà probabilmente a che fare con il blocco a livello di tabella di MyISAM e sto pensando di passare a InnoDB. Quali sono le implicazioni nel fare questo?

Alcune statistiche:

select  - per hour ~22k
update  - per hour ~7.6k
set option  - per hour ~7k

So che ci sono molte altre ottimizzazioni che posso fare, ma i miei sentimenti sono che questo potrebbe avere il maggiore impatto.

Grazie

Modifica : ho riscontrato uno dei maggiori problemi che causano la lentezza, è stato YARPP (Yet Another Related Posts Posts Plugin) che stava rigenerando la "relazione" ogni volta, e questo sembrava essere dovuto ai tag 2k + che abbiamo. Ho disattivato l'opzione "considera tag" e ha accelerato notevolmente.

Inoltre, altri plugin che rigenerano le cose possono causare questo tipo di problemi, come alcuni plugin XML Sitemap.

Quindi, il mio problema immediato è stato risolto, anche se mi piacerebbe comunque sentire una buona risposta a InnoDB vs MyISAM per Wordpress!

Risposte:


11

Passerei davvero a InnoDB. Il blocco della tabella / blocco delle righe è stato a lungo discusso da molti. Sceglierei sempre InnoDB a mani basse. Tuttavia, c'è un altro motivo profondo per scegliere InnoDB ... CACHING .

Mentre la maggior parte delle persone si vanta che MyISAM è più veloce per le letture, la maggior parte delle persone dimentica che molte cache per MyISAM, che è chiamata cache delle chiavi (impostata da key_buffer_size), memorizza solo nella cache le pagine dell'indice dai file .MYI. Non memorizza mai nella cache le pagine dei dati. Ha un massimo ufficiale di 4 GB nei sistemi a 32 bit. 8 GB è il massimo massimo per 64 bit.

Il pool di buffer InnoDB memorizza nella cache i dati e le pagine dell'indice. A seconda del server in uso, è possibile memorizzare nella cache l'intero set di dati nella RAM. È possibile ottimizzare InnoDB per un massimo dell'80% di RAM e del 10% per DB Conenctions e lasciare il 10% per il sistema operativo. Questo vale anche per diversi sistemi operativi .

Ho raccomandato queste cose ai clienti Drupal con un successo meraviglioso. Si applica anche a Wordpress . Ho fornito supporto DB per i clienti con WordPress. Stessi miglioramenti.

Puoi sempre configurare la memoria per InnoDB in modo più efficace rispetto a MyISAM. C'è sempre un modo per modificare InnoDB in base alle proprie esigenze di prestazione . Man mano che i tuoi dati crescono, alla fine diventeranno un requisito .


6

Probabilmente InnoDB non ti aiuterà: il blocco a livello di pagina / riga aiuta a mitigare la contesa, ma non è questo il problema.

Ci sono molte cose là fuori che suggeriscono che MyISAM sia più lento di InnoDB nello scenario medio del blog (molte più letture che scritture).

Prima di effettuare un passaggio, è necessario almeno effettuare le seguenti operazioni

  • esegui mysqltuner che ti darà alcuni consigli di configurazione (non è infallibile o lo sa tutti però)
  • attiva la registrazione delle query lenta, lasciala per circa un giorno, quindi inizia a setacciare il registro e SPIEGARE le query per vedere cosa sta succedendo

Per esperienza personale, ho scoperto che l'aggiunta di un indice a un campo non indicizzato su wp_comments mi ha aiutato moltissimo nella mia situazione particolare (periodi di commenti affrettati, in cui circa 10 persone potrebbero provare a commentare contemporaneamente), ed è possibile che scoprirlo quali query vengono eseguite lentamente e perché potrebbero aiutarti a comprendere meglio il problema e a una soluzione REALE!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.