Qual è una buona strategia per pianificare la crescita di WordPress DB?


9

Sperando in un feedback sul tema dell'ottimizzazione e del massimo delle prestazioni man mano che cresce un database WordPress ... per dipingere un'immagine .... diciamo che hai un sito MU WordPress / Buddypress che inizia a circa 150kb (installazione vanilla) ... col passare del tempo gli utenti aggiungono blog, forum, post e commenti e il database cresce fino a 5 MB .... poi 10 MB l'anno successivo .... Supponendo anche che i controlli di hosting siano una configurazione standard condivisa come Cpanel o Plesk.

  • A che punto il numero di voci nel database influisce sulle prestazioni del sito Web front-end?
  • Cosa puoi fare come gestore di siti Web per mantenerlo in esecuzione senza problemi con la crescita del database?
  • Cosa puoi aspettarti in termini di prestazioni dopo il 5 ° anno quando il tuo database è grande da 500 a 600 MB?

Grazie per qualsiasi feedback tu possa avere su come mantenere una nave stretta.

Saluti,

S.


3
Hai fatto 7 domande e accettato solo 1. Non un buon record. :-(

8
25mb è niente. Dovresti preoccuparti della dimensione del database quando raggiunge i GB.
Dunhamzzz,

Grazie per il tuo feedback Se abbiamo problemi con le prestazioni a 500 mb, probabilmente è la nostra società di hosting. PS Sono tornato e ha accettato le risposte alle domande.
Simon,

Risposte:


4

Le tue domande specifiche:

1) Non esiste un limite rigoroso al "numero di voci" che un DB può contenere prima che le prestazioni siano influenzate. Le prestazioni dipendono tanto dall'hardware e dalla configurazione quanto dalle dimensioni e dalla struttura del DB.

2) Se sei preoccupato per la scalabilità del tuo livello DB, puoi eseguirlo in un cluster o su un cloud box o VPS che consente il ridimensionamento. Se il tuo DB inizia a diventare lento, puoi ridimensionarlo (anche se di solito a un costo aggiuntivo). Queste opzioni aggiungono costi, ma sono davvero il modo migliore per garantire la scalabilità di un DB.

3) Dipende molto dalla configurazione dell'hosting e dall'architettura del DB. Ma in generale (a meno che tu non sia su una scatola davvero economica), non mi preoccuperei di un database WordPress da 30 MB. WordPress fa un buon lavoro di indicizzazione delle tabelle e anche una configurazione MySQL OOB dovrebbe facilmente gestire query WordPress su un DB di queste dimensioni. Quando arrivi a Gigabyte, è allora che potresti dover esaminare seriamente le opzioni di ottimizzazione delle prestazioni.

In generale:

Se sei preoccupato per le prestazioni, concentrati sull'ottimizzazione della tua configurazione MySQL esistente e / o sulla configurazione di un livello di memorizzazione nella cache. La memorizzazione nella cache può ridurre notevolmente l'onere per MySQL (in particolare con i siti WordPress, poiché generalmente eseguono un gran numero di query DB).

Se dopo aver sintonizzato correttamente MySQL e impostato un livello di cache decente, sei ancora preoccupato di superare la configurazione hardware, potresti istituire una politica di eliminazione dei contenuti dopo x tempo.

Nessuna di queste cose è specifica per WordPress. E non sono sicuro che la domanda abbia delle risposte che non si applicano a nessun sito Web o applicazione in esecuzione su uno stack LAMP. Ma forse qualcun altro ha suggerimenti riguardanti le strutture delle tabelle MU o altri trucchi DB specifici del WP ... Non so.


4

Dal punto di vista di MySQL, ho suggerimenti su come migliorare la memorizzazione nella cache di dati / indici per un'istanza di MySQL.

Tieni presente che esistono due principali motori di archiviazione per MySQL

  • MyISAM
  • InnoDB

I loro meccanismi di memorizzazione nella cache sono diversi. C'è qualcosa che puoi fare per sintonizzare il motore di archiviazione di tua scelta.

MyISAM

MyISAM memorizza solo nella cache le pagine dell'indice. Non memorizza mai nella cache i dati. Puoi fare due cose per migliorare l'I / O per le tabelle MyISAM.

Miglioramento MyISAM n. 1

Qualsiasi tabella MyISAM con colonne VARCHAR può essere convertita internamente in CHAR senza toccare il progetto iniziale. Supponiamo di avere una tabella chiamata mydb.mytable e che desideri migliorare l'I / O, esegui quanto segue:

ALTER TABLE mydb.mytable ROW_FORMAT=Fixed;

Ciò consentirà di aumentare le dimensioni della tabella dal 60% al 100%, ma produrrà un aumento delle prestazioni del 20-30% nell'I / O senza modificare nient'altro . Ne ho scritto prima in StackExchange DBA:

Miglioramento MyISAM n. 2

È necessario aumentare la cache delle chiavi MyISAM (in base alle dimensioni di key_buffer_size ). Esegui questa query, per favore:

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql','performance_schema')) AA ) A,
(SELECT 2 PowerOf1024) B;

Questo ti mostrerà il key_buffer_size ideale basato sul tuo set di dati corrente.

InnoDB

InnoDB memorizza nella cache sia i dati che gli indici. Se hai convertito tutti i tuoi dati in InnoDB e stai attualmente eseguendo WordPress da un database tutto InnoDB, devi dimensionare il tuo pool di buffer InnoDB (dimensionato con innodb_buffer_pool_size ). Esegui questa query, per favore:

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;

Questo ti mostrerà il key_buffer_size ideale basato sul tuo set di dati corrente.

proiezioni

Se si prevede che il set di dati aumenterà 20 volte di più, è sufficiente moltiplicare ciò che questa query consiglia per 20. Supponiamo che il set di dati MyISAM sia 15 MB e 3 MB sia la somma degli indici. Se stimate che avrete 20 volte più dati, impostate key_buffer_size su 60MB in questo modo in /etc/my.cnf:

[mysqld]
key_buffer_size=60M

quindi riavviare MySQL. La stessa cosa si applicherebbe al pool di buffer InnoDB.

Se tutti i tuoi dati sono InnoDB, devi eseguire una pulizia completa della tua infrastruttura InnoDB che ho pubblicato in StackOverflow .


2

A che punto il numero di voci nel database influisce sulle prestazioni del sito Web front-end?

Quando le query iniziano a colpire il limite di risorse del tuo account di hosting.

Cosa puoi fare come gestore di siti Web per mantenerlo in esecuzione senza problemi con la crescita del database?

Tieni d'occhio l'utilizzo delle risorse. Adottare misure per aumentare le risorse e / o ottimizzare l'utilizzo.

Cosa puoi aspettarti in termini di prestazioni dopo il 5 ° anno quando il tuo database è grande 25-30 MB?

Non dovrebbe esserci alcun cambiamento nelle prestazioni su quel piccolo database.

Se ti aspetti che il tuo sito cresca così lentamente, allora hai un sacco di tempo per imparare a gestire la crescita.

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.