Pull to refresh

Comments 9

Поясните как правильно очищать базу данных стандартным способом vacuum full если места на диске хватает, какие там есть подводные камни?

Сильно зависит от вашей задачи, чистите ли вы одну таблицу или множество? Как активно они используются - постоянно или к примеру только ночью для расчетов?
Какой размер таблицы и так далее.

Важно понимать, vacuum full - блокирует таблицу, работать с ней не получится. vacuum - не блокирует, но решает проблему не полностью

Ночью можно без проблем на 1 минуту заблокировать 1 таблицу и почистить ее используя vacuum full. Таблицы не сильно большие, думаю за 1 минуту почистится. Сможете в статье пояснить как правильно работать со втроенными средствами очистки?

Если таблицы не сильно большие и есть уверенность в том,что вакум отработает за 1 минуту и это не затронет вашу систему - то просто запускайте команду `vacuum full schema_name.table_name`

Для удобства можно запустить из условного `/var/lib/postgresql/bin/psql`, зависит от того, где у вас установлена бд

На сколько корректно показывается реальный размер таблицы на диске этой коммандой? Можно ли использовать другую команду чтобы узнать точный ральный размер?

SELECT pg_size_pretty(pg_total_relation_size('table_name'));

SELECT schemaname,
       C.relname AS "relation",
       pg_size_pretty (pg_relation_size(C.oid)) as table,
       pg_size_pretty (pg_total_relation_size (C.oid)-pg_relation_size(C.oid)) as index,
       pg_size_pretty (pg_total_relation_size (C.oid)) as table_index,
       n_live_tup
FROM pg_class C
LEFT JOIN pg_namespace N ON N.oid = C .relnamespace
LEFT JOIN pg_stat_user_tables A ON C.relname = A.relname
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
AND C.relkind <> 'i'
AND nspname !~ '^pg_toast'
ORDER BY pg_total_relation_size (C.oid) desc

Вот этим запросом

Целевое решение проблемы хранения "устаревших" записей - pg_repack.

delete from schema.table where condition;

Из этого текста получается что pg_repack это и есть delete from. А это совсем не так.

И ещё не указаны ограничения pg_compacttable, он не работает с TPAST, а это может быть большей частью занятого места.

Частично эту проблему решают команды vacuum и vacuum full, но у первых двух есть свои проблемы, подробности есть в документации.

Тут всего две команды. :)

Sign up to leave a comment.

Articles