PostgreSQL. Скрипт для нахождения разрастающихся объектов базы данных

Недавно столкнулся с ситуацией, когда backup базы стал довольно внушительного размера, хотя на самом деле я прекрасно понимал, что даже самые большие таблицы не «весят» столько.

Как оказалось, выполнив следующий скрипт:

SELECT nspname || '.' || relname as name,
 pg_size_pretty(pg_total_relation_size(C.oid)) as totalsize, -- incl. TOASTed and indx
 pg_size_pretty(pg_relation_size(C.oid)) as relsize -- pure size (w/o TOAST and indexes)
 FROM pg_class C
 LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
 WHERE nspname NOT IN ('pg_catalog', 'information_schema')
 ORDER BY pg_total_relation_size(C.oid) DESC
 LIMIT 20;

я обнаружил, что есть некие объекты pg_toast_<некий порядковый номер>, имеющие громадный размер. При этом связанные с ними таблицы мой базы имели такой же размер.
Сделав VACUUM (автоматический вакуум у меня отключен на этой базе), все обернулось самым лучшим образом. 

Выполнив еще раз вышеуказанный запрос, pg_toast_ уже в результатах не оказался.

 

Поделиться в соц. сетях

Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *