DBAtlas · Atlas d'exploitation des bases de données

Récupérer l'espace libre (shrink / vacuum / compact)

Oracle

ALTER TABLE customer ENABLE ROW MOVEMENT;
ALTER TABLE customer SHRINK SPACE;

SHRINK abaisse le high water mark (HWM). Pour réduire aussi les index, utilisez SHRINK SPACE CASCADE.

PostgreSQL

-- Online, light locking (does not return space to the OS):
VACUUM (VERBOSE, ANALYZE) customer;
-- Return space to the OS (locks the table!):
-- VACUUM FULL customer;

VACUUM FULL pose un AccessExclusiveLock et réécrit la table ; ne l'exécutez pas aux heures de pointe. Alternative : pg_repack.

MySQL

OPTIMIZE TABLE customer;

Sur InnoDB, reconstruit la table et restitue l'espace data_free ; long sur les grandes tables.

SQL Server

-- Generally NOT RECOMMENDED (causes fragmentation). If really needed:
DBCC SHRINKFILE (N'MyDB_data', 1024);  -- target 1024 MB

Réduire un fichier de données provoque une fragmentation des index ; faites ensuite un REBUILD des index. Pour le journal, effectuez d'abord une sauvegarde.

MongoDB

db.runCommand({ compact: "customer" })

Sur WiredTiger, tente de restituer l'espace libre au système d'exploitation (pas toujours possible). En 4.4+, ne bloque pas les lectures/écritures, seulement certaines opérations DDL sur la même collection ; comme il génère beaucoup d'IO, il est plus sûr de l'exécuter sur un secondaire et dans une fenêtre de maintenance.

Redis

MEMORY PURGE
# Tries to return jemalloc fragmentation to the OS

Le réglage activedefrag yes effectue une défragmentation automatique en ligne ; MEMORY DOCTOR fournit des recommandations.

Ouvrir dans DBAtlas →