sql >> Database >  >> RDS >> Mysql

Wordpress &MySQL-tabelfragmentatie

Een mogelijkheid is dat u onjuiste statistieken over de tafelgrootte ziet.

MySQL 8.0 probeert de statistieken over tabellen in de cache op te slaan, maar er lijken enkele bugs in de implementatie te zitten. Soms worden tabelstatistieken weergegeven als NULL en soms worden waarden weergegeven, maar worden ze niet bijgewerkt wanneer u tabelgegevens wijzigt.

Zie https://bugs.mysql.com/bug.php?id=83957 bijvoorbeeld een bug die de problemen met dit caching-gedrag bespreekt.

U kunt de cache uitschakelen. Het kan ertoe leiden dat query's tegen de INFORMATION_SCHEMA of SHOW TABLE STATUS een beetje langzamer zijn, maar ik vermoed dat het niet erger is dan in versies van MySQL vóór 8.0.

SET GLOBAL information_schema_stats_expiry = 0;

De integerwaarde is het aantal seconden dat MySQL statistieken in de cache bewaart. Als u de tabelstatistieken opvraagt, ziet u mogelijk oude waarden uit de cache, totdat ze verlopen en MySQL ze ververst door ze uit de opslagengine te lezen.

De standaardwaarde voor het verlopen van de cache is 86400 of 24 uur. Dat lijkt overdreven.

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

Als je denkt dat Wordpress naar de tafel schrijft, dan is dat misschien zo. U kunt het binaire logboek of het querylogboek inschakelen om erachter te komen. Of volg gewoon SHOW PROCESSLIST voor een paar minuten.

Mogelijk hebt u een WordPress-plug-in die regelmatig wordt bijgewerkt of in een tabel wordt ingevoegd. U kunt zoeken naar de laatste update_time:

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

Bekijk dit om te zien naar welke tabellen het meest recent is geschreven.

Er zijn kanttekeningen bij deze UPDATE_TIME-statistiek. Het is niet altijd synchroon met de query's die de tabel hebben bijgewerkt, omdat schrijfacties naar tabelruimtebestanden asynchroon zijn. Lees er hier meer over:https://dev.mysql. com/doc/refman/8.0/en/tables-table.html



  1. MySQL-query's sorteren met getallen

  2. Ontvang de eerste/laatste n records per groep door

  3. Json ontleden met Oracle SQL - JSON_TABLE

  4. Hoe exporteer ik het queryresultaat naar csv in Oracle SQL Developer?