Раздувание таблиц vPostgres в VMware VCSA

В СУБД PostgreSQL присутствует эффект раздувания таблиц aka table bloat. Он выражается в падении производительности при интенсивном обновлении данных, например,  при частых UPDATE, INSERT, DELETE. Данное поведение характерно и для СУБД vPostgres в VMware VCSA.

Для диагностики раздувания необходимо выполнить следующие действия:

  1.  Скачать скрипт 51981_check_bloat.sql из БЗ VCSA database storage /storage/db is full or nearly full (51981) (скрипт является копией официального Show database bloat).
  2. Подключиться к БД: /opt/vmware/vpostgres/current/bin/psql -U postgres -d VCDB.
  3. Скопировать и вставить содержимое файла и нажать Enter.
  4. Проанализировать отчёт. Если значение колонок tbloat либо ibloat column больше 25, то запланировать обслуживание БД.

Пример вывода (обратите внимание на запись vci_task_stats, где tbloat==43.5):

Для оптимизация таблиц и ликвидации раздувания необходимо выполнить следующие действия:

  1. Остановить сервисы:
    service-control –stop –all
  2. Запустить vpostgres:
    service-control –start vmware-vpostgres
  3. Подключиться к БД:
    /opt/vmware/vpostgres/current/bin/psql -U postgres -d VCDB
  4. Перестроить таблицы и индексы для ликвидации раздувания:
    vacuum full;
  5. Собрать новую статистику для планировщика в целях получения оптимальной производительности:
    vacuum analyze;
  6. Для выхода ввести:
    \q
  7. Запустить сервисы:
    service-control –start –all

После оптимизации  в записи vci_task_stats  наблюдаем tbloat== 1.0.

Leave a Reply

Your email address will not be published. Required fields are marked *