DBAtlas · Атлас эксплуатации баз данных

Вернуть свободное место (shrink / vacuum / compact)

Oracle

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

SHRINK понижает high water mark (HWM). Чтобы сжать и индексы, используйте 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 берёт AccessExclusiveLock и перезаписывает таблицу; не запускайте в часы пик. Альтернатива: pg_repack.

MySQL

OPTIMIZE TABLE customer;

В InnoDB перестраивает таблицу и возвращает пространство data_free; на больших таблицах занимает много времени.

SQL Server

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

Сжатие файла данных вызывает фрагментацию индексов; после него выполните REBUILD индексов. Для журнала сначала сделайте бэкап.

MongoDB

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

В WiredTiger пытается вернуть свободное место операционной системе (не всегда возможно). В 4.4+ не блокирует чтение/запись, только некоторые DDL-операции над той же коллекцией; так как создаёт большую нагрузку IO, безопаснее запускать на secondary и в окно обслуживания.

Redis

MEMORY PURGE
# Tries to return jemalloc fragmentation to the OS

Настройка activedefrag yes выполняет автоматическую онлайн-дефрагментацию; MEMORY DOCTOR даёт рекомендации.

Открыть в DBAtlas →