Я керую великою базою (кілька сотень концертів), що містить таблиці з різними ролями, деякі з них містять мільйони записів. Деякі таблиці отримують лише велику кількість вставок та видалень, деякі інші кілька вставок та велику кількість оновлень.
База даних працює на PostgreSQL 8.4 в системі Debian 6.0 amd64 з 16 гігабайтами оперативної пам’яті.
Питання полягає в тому, що процес автовакууму на столі займає дуже багато часу (днів). Я хочу вміти приблизно сказати, скільки часу займе певна команда вакууму, щоб можна було вирішити, скасувати її чи ні. Крім того, якби був показник прогресу для вакуумних операцій після постгресу, було б дуже корисно.
Редагувати:
Я не шукаю кулезахисного рішення. Достатньо лише грубої підказки щодо кількості мертвих кортежів або необхідних байтів вводу / виводу. Це насправді прикро не мати поняття, коли VACUUM
закінчуватимеш.
Я бачив, що pg_catalog.pg_stat_all_tables
є стовпчик для кількості мертвих кортежів. Отож, можливо, мати оцінку, навіть якщо це означає, що треба до ANALYZE
таблиці. З іншого боку, autovacuum_vacuum_threshold
і autovacuum_vacuum_scale_factor
настройки в поодинці довести , що Postgres сам знає що - то про кількість змін на таблицях і , ймовірно , ставить його в руках DBA теж.
Я не впевнений, який запит потрібно запустити, бо коли я запускаю VACUUM VERBOSE
, я бачу, що не тільки таблиці, але й індекси на них теж обробляються.