Учебный курс «Postgres: мониторинг и оптимизация производительности»

Краткое содержание: мониторинг производительности Postgres, оптимизация подключений, настроек postgresql.conf, индексов, применение секционирования и шардинга, оптимизация VACUUM и обновления статистики, оптимизация запросов

Общие данные:

Сервер Postgres «из коробки» не пригоден к работе в производственном окружении по причине неоптимальных параметров настроек (например, под кэш — параметр shared_buffers — отводится всего 128 МБайт). Опытные администраторы знают о необходимости также проверить систему подключений, индексов, настроить шардинг и выполнить другие действия, которые превратят сервер Postgres в мощную систему, готовую к производственной нагрузке. Наши преподаватели принимали участие в оптимизации серверов Postgres на многих предприятиях и готовы поделиться накопленным опытом.  Заказывайте обучение!

Продолжительность: 3 дня (24 учебных часа).

В курсе 10 модулей (на лабораторные работы, выполняемые под руководством преподавателя, отводится 50 % времени учебного курса).

Для кого предназначен: администраторы сервера Postgres, которым необходимо оптимизировать производительность

План курса:

  1. Основы оптимизации производительности. Мониторинг нагрузки сервера Postgres при помощи счетчиков операционной системы. Применение пакета linux-perf. Счетчики для процессора, оперативной памяти, диска, сетевой подсистемы сервера.
  2. Мониторинг производительности при помощи системных представлений сервера Postgres. Представления pg_stat и pg_stat_io. Добавление дополнительных представлений производительности. Включение модуля pg_stat_statements.
  3. Анализ архитектуры приложения и системы баз данных Postgres. Разделение данных на текущие и архивные. Виды баз данных: OLTP, Data Warehouse, staging databases, OLAP. Модификация существующих баз данных для разделения данных на текущие и архивные.
  4. Настройка подсистемы подключений к Postgres. Выбор типа драйвера подключения. Применение пулов подключений (connection pool).
  5. Анализ настроек сервера Postgres с точки зрения влияния на производительность. Файл postgresql.conf. Параметры shared_buffers, wal_buffers, effective_cache_size, maintenance_work_mem, max_parallel_workers_per_gather и другие. Сравнение производительности при разных вариантах настроек и применение pgbench.
  6. Анализ системы индексов. Применение представления pg_stat_user_tables, отношение idx_scan к seq_scan. Типы индексов в Postgres. Настройка оптимальной системы индексов для баз данных Postgres.
  7. Секционирование (partitioning) и шардинг (sharding) в Postgres. Распределение нагрузки по дискам и по набору серверов.
  8. Распухание (bloating) и фрагментация таблиц баз данных Postgres как особенности версионной системы изменений. Мониторинг подсистемы VACUUM и ее настройка.
  9. Анализ системы автоматического пересчета статистики в базах данных Postgres. Проверка достоверности статистики и настройка ручного пересчета статистики.
  10. Оптимизация запросов в Postgres. Выбор запросов для оптимизации. Команда EXPLAIN. Применение параметров конфигурации на уровне сеанса. Развертывание модуля pg_hint_plans и применение хинтов в запросах. Лучшие практики при оптимизации запросов в Postgres.