MySQL TRUNCATE, hol a hely?

jan 24

Az imént szórtam ki 36 millió rekordot az egyik log táblánkból, felszabadítva ezzel 34GB tárhelyet a szerveren. Illetve csak felszabadítottam volna, mert a táblához tartozó .idb fájl mérete a tisztogatás után nem változott.

Rövid guglizás után meglett a válasz: a TRUNCATE csak a MySQL felé tünteti el a rekordokat, rendszer szinten nem szabadítja fel a korábban allokált helyet. A probléma szerencsére egyszerűen orvosolható egy tábla optimalizálással:

OPTIMIZE TABLE tablename;

És máris ott figyel több tíz gigányi szabad terület a diszken.

sql