MySQL har en OPTIMIZE TABLE kommando som kan brukes til å gjenvinne ubrukt plass i en MySQL-installasjon. Er det en måte (innebygd kommando eller vanlig lagret prosedyre) for å kjøre denne optimaliseringen for hver tabell i databasen og / eller serverinstallasjonen, eller er dette noe du må skripte opp selv?
Du kan bruke mysqlcheck
for å gjøre dette på kommandolinjen.
Én database:
mysqlcheck -o <db_schema_name>
Alle databaser:
mysqlcheck -o --all-databases
Følgende eksempel på php-skript kan hjelpe deg med å optimalisere alle tabellene i databasen din
<?php
dbConnect();
$alltables = mysql_query("SHOW TABLES");
while ($table = mysql_fetch_assoc($alltables))
{
foreach ($table as $db => $tablename)
{
mysql_query("OPTIMIZE TABLE '".$tablename."'")
or die(mysql_error());
}
}
?>
MySQL Administrator (en del av MySQL GUI Tools) kan gjøre dette for deg på databasenivå.
Bare velg skjemaet ditt og trykk på knappen "Vedlikehold" nederst til høyre.
Siden GUI-verktøyene har nådd End-of-life-status, er de vanskelig å finne på mysql-siden. Du finner dem via Google: http://dev.mysql.com/downloads/gui-tools/5.0.html
Jeg vet ikke om den nye MySQL Workbench kan gjøre det også.
Og du kan bruke kommandolinjeverktøyet mysqlcheck
som også skal kunne gjøre det.