sql >> Databasteknik >  >> RDS >> Mysql

MySQL-datafilen kommer inte att krympa

Filstorleken på InnoDB-tabellutrymmen kommer aldrig att minska automatiskt, oavsett hur mycket data du tar bort.

Vad du kan göra, även om det är mycket ansträngning, är att skapa en tabellyta för varje tabell genom att ställa in

innodb_file_per_table

Den långa delen av detta är att du måste exportera ALL DATA från mysql-servern (att sätta upp en ny server skulle vara lättare) och sedan återimportera data. Istället för en enda ibdata1-fil som innehåller data för varje tabell, hittar du många filer som heter tablename.ibd som endast innehåller data för en enda tabell.

Efteråt:

När du sedan raderar mycket data från tabeller kan du låta mysql återskapa datafilen genom att utfärda

alter table <tablename> engine=myisam;

för att byta till MyIsam (och få InnoDB-datafilen för denna tabell raderad) och sedan

alter table <tablename> engine=innodb;

för att återskapa tabellen.



  1. Bygga en mycket tillgänglig databas för Moodle med MariaDB (replikering och MariaDB-kluster)

  2. Hur ADD_MONTHS() fungerar i MariaDB

  3. Oracle 12c Toppnya funktioner

  4. mySQL lagrad funktion för att skapa en snigel