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