Mysql
 sql >> Database >  >> RDS >> Mysql

Frammentazione delle tabelle di Wordpress e MySQL

Una possibilità è che visualizzi statistiche errate sulla dimensione della tabella.

MySQL 8.0 tenta di memorizzare nella cache le statistiche sulle tabelle, ma sembrano esserci alcuni bug nell'implementazione. A volte mostra le statistiche della tabella come NULL ea volte mostra i valori, ma non riesce ad aggiornarli quando modifichi i dati della tabella.

Vedi https://bugs.mysql.com/bug.php?id=83957 ad esempio, un bug che discute i problemi con questo comportamento di memorizzazione nella cache.

Puoi disabilitare la memorizzazione nella cache. Potrebbe causare query su INFORMATION_SCHEMA o SHOW TABLE STATUS un po' più lente, ma suppongo che non sia peggio che nelle versioni di MySQL precedenti alla 8.0.

SET GLOBAL information_schema_stats_expiry = 0;

Il valore intero è il numero di secondi in cui MySQL conserva le statistiche nella cache. Se esegui una query sulle statistiche della tabella, potresti vedere i vecchi valori dalla cache, fino a quando non scadono e MySQL li aggiorna leggendo dal motore di archiviazione.

Il valore predefinito per la scadenza della cache è 86400 o 24 ore. Mi sembra eccessivo.

Vedere https://dev.mysql. com/doc/refman/8.0/en/server-system-variables.html#sysvar_information_schema_stats_expiry

Se pensi che Wordpress stia scrivendo al tavolo, allora potrebbe esserlo. È possibile abilitare il registro binario o il registro delle query per scoprirlo. Oppure osserva semplicemente SHOW PROCESSLIST per qualche minuto.

Potresti avere un plugin per wordpress che aggiorna o inserisce frequentemente in una tabella. Puoi cercare l'ultimo update_time:

SELECT * FROM INFORMATION_SCHEMA.TABLES
ORDER BY UPDATE_TIME DESC LIMIT 3;

Guarda qui per scoprire quali tabelle sono state scritte più di recente.

Ci sono avvertenze per questa statistica UPDATE_TIME. Non è sempre sincronizzato con le query che hanno aggiornato la tabella, perché le scritture nei file tablespace sono asincrone. Leggi qui:https://dev.mysql. com/doc/refman/8.0/en/tables-table.html