Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wordpress- und MySQL-Tabellenfragmentierung

Eine Möglichkeit ist, dass Sie falsche Statistiken über die Tabellengröße sehen.

MySQL 8.0 versucht, die Statistiken über Tabellen zwischenzuspeichern, aber es scheint einige Fehler in der Implementierung zu geben. Manchmal zeigt es Tabellenstatistiken als NULL an, und manchmal zeigt es Werte an, aktualisiert sie aber nicht, wenn Sie Tabellendaten ändern.

Siehe https://bugs.mysql.com/bug.php?id=83957 zum Beispiel ein Fehler, der die Probleme mit diesem Caching-Verhalten beschreibt.

Sie können das Caching deaktivieren. Es kann dazu führen, dass Abfragen für INFORMATION_SCHEMA oder SHOW TABLE STATUS etwas langsamer sind, aber ich würde vermuten, dass es nicht schlechter ist als in MySQL-Versionen vor 8.0.

SET GLOBAL information_schema_stats_expiry = 0;

Der ganzzahlige Wert ist die Anzahl der Sekunden, die MySQL Statistiken zwischenspeichert. Wenn Sie die Tabellenstatistiken abfragen, sehen Sie möglicherweise alte Werte aus dem Cache, bis sie ablaufen und MySQL sie durch Lesen aus der Speicher-Engine aktualisiert.

Der Standardwert für den Cache-Ablauf ist 86400 oder 24 Stunden. Das scheint übertrieben.

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

Wenn Sie denken, dass Wordpress auf den Tisch schreibt, dann könnte es sein. Sie können das Binärprotokoll oder das Abfrageprotokoll aktivieren, um dies herauszufinden. Oder beachten Sie einfach SHOW PROCESSLIST für ein paar Minuten.

Möglicherweise haben Sie ein WordPress-Plugin, das häufig aktualisiert oder in eine Tabelle eingefügt wird. Sie können nach der letzten update_time suchen:

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

Sehen Sie sich dies an, um herauszufinden, in welche Tabellen zuletzt geschrieben wurde.

Es gibt Vorbehalte zu dieser UPDATE_TIME-Statistik. Es ist nicht immer synchron mit den Abfragen, die die Tabelle aktualisiert haben, da Schreibvorgänge in Tablespace-Dateien asynchron sind. Lesen Sie hier darüber:https://dev.mysql. com/doc/refman/8.0/en/tables-table.html