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

Wordpress &MySQL tabelfragmentering

En mulighed er, at du ser forkerte statistikker om tabelstørrelsen.

MySQL 8.0 forsøger at cache statistikken om tabeller, men der ser ud til at være nogle fejl i implementeringen. Nogle gange viser den tabelstatistik som NULL, og nogle gange viser den værdier, men den kan ikke opdatere dem, mens du ændrer tabeldata.

Se https://bugs.mysql.com/bug.php?id=83957 for eksempel en fejl, der diskuterer problemerne med denne cache-adfærd.

Du kan deaktivere cachen. Det kan forårsage forespørgsler mod INFORMATION_SCHEMA eller SHOW TABLE STATUS til at være en smule langsommere, men jeg vil gætte på, at det ikke er værre end i versioner af MySQL før 8.0.

SET GLOBAL information_schema_stats_expiry = 0;

Heltalsværdien er antallet af sekunder, MySQL holder statistik cachelagret. Hvis du forespørger på tabelstatistikken, kan du muligvis se gamle værdier fra cachen, indtil de udløber, og MySQL opdaterer dem ved at læse fra lagermotoren.

Standardværdien for cachens udløb er 86400 eller 24 timer. Det virker overdrevet.

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

Hvis du tror, ​​at Wordpress skriver til bordet, så er det måske det. Du kan aktivere den binære log eller forespørgselsloggen for at finde ud af det. Eller bare observer SHOW PROCESSLIST i et par minutter.

Du har måske et wordpress-plugin, der ofte opdaterer eller indsætter i en tabel. Du kan se efter den seneste update_time:

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

Se dette for at finde ud af, hvilke tabeller der senest er skrevet til.

Der er forbehold for denne UPDATE_TIME-statistik. Det er ikke altid synkroniseret med de forespørgsler, der opdaterede tabellen, fordi skrivning til tablespace-filer er asynkrone. Læs om det her:https://dev.mysql. com/doc/refman/8.0/da/tables-table.html



  1. SWITCHOFFSET() Eksempler i SQL Server

  2. Postgres-tekstkolonne, der kun tillader/konverterer til små bogstaver og ingen specialtegn såsom:Ñöáè

  3. Ydelsestest ved hjælp af MySQLdump og MySQL Shell Utility

  4. Hvordan vælger jeg betinget et felt fra en af ​​to tabeller?