Обслуживание (Maintenance)

Материалы к уроку

Чтобы попасть на страницу регламентного обслуживания СУБД, нужно нажать на кнопку «Maintenance» в меню экземпляра.
Модуль «Maintenance» доступен только на мастере.

На странице, в табличной форме представлен список баз данных, которые присутствуют на сервере.
1 столбец: процент bloat таблиц.
2 столбец: процент bloat индекса.
3 столбец: процент wraparound (насколько счётчик транзакции использован в процентах).

По умолчанию таблица пустая, чтобы сформировать актуальные данные, необходимо кликнуть на кнопку «Collect data». «Collect data» — запустит запрос, который выполняется на наблюдаемой базе данных. После его выполнения результаты отображаются в таблице. Этот запрос является достаточно сложным, поэтому не рекомендуется выполнять его без необходимости. После выполнения запроса Платформа автоматически сохранит результаты в кэш браузера. Эти данные остаются доступными до тех пор, пока пользователь не выйдет из аккаунта или не очистит кэш браузера. Если нужно обновить данные, следует нажать на кнопку «Refresh».
Для обслуживания базы данных нужно нажать на меню в хвосте, в нем представлено три опции:
1. Исправление раздувания таблиц.
2. Исправление раздувания индексов.
3. Исправление переполнения счетчика транзакций.

Fix Table Bloat

На странице «Fix Table Bloat» представлен список таблиц с наибольшим раздуванием.
Столбцы в списке таблиц имеют следующую информацию:
  1. Имя таблицы.
  2. Количество bloat (раздувания). Таблицы отсортированы по степени раздувания, с самой большой вверху.
  3. Процент раздувания.
  4. Совокупный размер таблицы с bloat.
  5. Чистый размер таблицы.
  6. Количество строк в таблице.
  7. Дата и время последнего автовакума..
  8. Дата и время последнего вакуума.
Кликая на заголовки столбцов таблицы информация будет сортироваться.
Чтобы обслуживать таблицу, нужно выбрать ее и нажать кнопку «Select», затем выбрать одну из операций: ANALYZE, VACUUM или VACUUM FULL.

Операция «ANALYZE» предназначена для сбора статистики. При выборе флажка «SKIP_LOCKED» строки, находящиеся в эксклюзивной блокировке, будут пропущены и статистика по ним не будет собрана. Однако, благодаря этому, операция «ANALYZE» будет выполнена быстрее.

«VACUUM» — при вакууме таблицы, можно выбрать дополнительные настройки:
  • «TRUNCATE» — очистка содержимого таблицы.
  • «SKIP_LOCKED» — пропуск заблокированных.
  • «INDEX_CLEANUP» — очистка индексов.
  • «FREEZE» — заморозка версий строк (технология, позволяющая использовать счетчик транзакций повторно).
  • «DISABLE_PAGE_SKIPPING» — выключение пропуска страниц.
  • «ANALYZE» — сбор статистики таблицы.

Операция «VACUUM FULL» — это процедура обслуживания базы данных, которая помимо очистки версий строк на последней странице табличного пространства полностью перестраивает его. Однако следует помнить, что при выполнении операции «VACUUM FULL», устанавливается эксклюзивная блокировка на таблицу, что означает, что она будет закрыта и для записи, и для чтения.

Чтобы запустить регламентное обслуживание, необходимо нажать на кнопку «Run Maintenance». В появившемся окне написать «proceed» и нажать «Run Maintenance».
После запуска, в правом нижнем углу появиться красный индикатор, сообщающий о том, что обслуживание в процессе, этот индикатор появится у всех пользователей, находящихся в одном из модулей экземпляра в Платформе. Это важно, так как регламентное обслуживание в Платформе не может быть запущено параллельно двумя или более пользователями. Этот защитный механизм реализован в целях безопасности.

Fix index Bloat

Принцип работы этого модуля идентичен предыдущему.
В табличной форме представлен список индексов. Столбцы в списке таблиц имеют следующую информацию:
  1. Имя таблицы, к которой относится данный индекс.
  2. Имя индекса.
  3. Размер раздувания этого индекса (индексы в списке отсортированы по размеру раздувания, наверху находится индекс с максимальным размером раздувания).
  4. Соотношение между bloat и полезными данными в процентах. Индексы с большим процентом отмечены красным цветом, те, у которых процент поменьше, отмечены желтым, а те, у которых совсем маленький процент, отмечены белым цветом.
  5. Соотношение общего размера индекса к размеру индекса без раздувания.
  6. Фактор заполнения табличного пространства индекса.
  7. Нужен ли автовакуум на этот index.

Для обслуживания, как и в Fix Table Bloat нужно нажать на кнопку «Select».
Здесь есть только одна операция — удаление блокировки из индекса. При выборе этой операции, появляется отметка «INDEX», которую нельзя убрать, и флажок «CONCURRENTLY» (PostgreSQL построит новый индекс отдельно и после проверки его правильности, переключит таблицу на новый индекс, а старый удалит).

Затем нужно выбрать все индексы, которые необходимо обслужить.
Чтобы запустить регламентное обслуживание, необходимо нажать на кнопку «Run Maintenance». В появившемся окне написать «proceed» и нажать «Run Maintenance».

Fix Wraparound Bloat

На странице «Fix Wraparound Bloat» представлен список таблиц. Столбцы в списке таблиц имеют следующую информацию:
  1. Имя таблицы.
  2. XID (список отсортирован от большего к меньшему).
  3. Сколько процентов счетчика транзакций выбрано.
  4. Сколько выбрано счетчика транзакций до запуска аварийного автовакуума. Аварийный автовакуум — это фоновый процесс, который автоматически запускается в том случае, если количество доступных идентификаторов транзакций начинает приближаться к исчерпанию, которое должно быть выставлено в файле конфигурации. Процесс аварийного автовакуума невозможно остановить. Даже если перезагрузить сервер, как только сервер загрузится, процесс аварийного автовакуума сразу начнет работу.
  5. Размер таблицы.
Для обслуживания нужно нажать на кнопку «Select».
Есть две операции, которые можно выбрать: «VACUUM» и «VACUUM FULL».

При вакууме можно можно выбрать дополнительные настройки:
«TRUNCATE» — очистка содержимого таблицы.
«SKIP_LOCKED» — пропуск заблокированных.
«INDEX_CLEANUP» — очистка индексов.
«FREEZE» — заморозка версий строк.
«ANALYZE» — сбор статистики таблицы.

Опция «VACUUM FULL» полностью перестраивает таблицу и освобождает номера транзакций, но это занимает больше времени и потребует эксклюзивной блокировки. Можно выполнить «VACUUM FULL» также и без анализа.

HISTORY

На второй странице модуля, во вкладке «History», есть возможность посмотреть историю всех операций.
В таблице представлена следующая информация:
  1. ID обслуживания.
  2. База данных, на которой было выполнено обслуживание.
  3. Дата начала обслуживания.
  4. Статус обслуживания.
Можно перейти в событие через меню, или же просто нажав на само событие.
Внутри события указаны данные:
  • номер ID обслуживания
  • база данных, по которой было сделано обслуживание
  • выбранная операцию по обслуживанию таблицы
  • статус завершения
  • время начала обслуживания
  • кто начал обслуживание
  • время завершения обслуживания
В таблице указаны:
  1. Обслуженные объекты (включая сам объект и его тип таблицы).
  2. Выполненные действия.
  3. Данные до обслуживания.
  4. Данные после обслуживания.