Складчина: Курс по Оптимизации PostgreSQL 4.0 [Евгений Аристов]
Версия 4.0 сильно переработана и добавлена новая практика и дополнительные исследования, рассматриваются незадокументированные нюансы temp table, work_mem, volatile, HOT update и других внутренних структур, новые подходы к проектированию (более 10 новых пунктов только в занятии по оптимизации запросов), RLS – row level security, фичи audit и многое многое другое
Цель курса – освоение лучших практик , которые позволят ускорить существующие решения, минимизировать простои и избежать граблей:
Практический курс уникален для России и мира, предназначен для ДБА, архитекторов, девопсов
Каждое занятие включает тестирование примеров на стендах
Построен только на актуальных кейсах по реальным задачам, без воды
Экономит время и ресурсы как для текущих проектов, так и для модернизации существующих
Позволить ускорить поиск проблемных мест. Все собрано в одном месте с учетом экспертизы
Увеличивает быстродействие баз данных как Постгреса, так и остальных субд
Позволяет осознанно подходить к проектированию больших баз данных, изменению схемы данных
Оптимизирует планирование ресурсов для новых БД за счёт подробных инструкций, позволяет прогнозировать будущие проблемы
Бест практис, чеклисты и антипаттерны к каждой лекции
Сотни примеров по подходам к траблшутину БД
По желанию домашние задания идут к каждой лекции
Состав лекций:
- Первичная настройка ОС и PostgreSQL
- Коннектинг к PostgreSQL. Права пользователя
- Настройка файловой системы
- Настройка бэкапов и репликации
- Мониторинг, профилирование и логирование
- Тюнинг shared_buffers, background writer, checkpoint, WAL
- Особенности работы Vacuum, work_mem, statistic collector, locks
- Оптимизация схемы данных
- Оптимизация запросов
- Обслуживание СУБД. Работа на стенде
1. Первичная настройка ОС и PostgreSQL
- проблематика
- конфигурация ВМ & ОС
- swap vs OOMKiller
- тюнинг PostgreSQL
- best practice & caveats
- особенности бенчмарков
- варианты измерения производительности
- архитектура авторской БД по Тайским перевозкам
- генерация и варианты использования от 6 до 600 млн. записей
- работа на стенде с реальными кейсами в каждой лекции
- проблематика
- на что стоит обратить внимание при работе с сетью
- docker caveats
- best practice по обмену данными
- варианты connection pooling
- варианты балансировщиков
- архитектуры построения отказоустойчивых соединений
- тестирование производительности пулконнекторов
- pgbouncer vs odyssey vs pgagroal vs pgcat
- нюансы при работе с правами пользователя
- RLS – row level security
- проблематика
- табличные пространства
- toast и сжатие данных
- json vs jsonb – что с ними не так?
- типы технологий хранения
- типы файловых систем
- fsync – быстро ли это? и какие есть варианты
- trim for SSD
- контрольные суммы добро или зло
- data corruption
- шифрование данных
- журналы транзакций – варианты тюнинга
- каталог со статистикой – пути оптимизации
- pg_class и связанные с ним проблемы
- batch insert/update
- unlogged table – киллер фича?
- проблематика
- принципы построения HA и DR архитектур
- варианты настройки бэкапов и тестирование производительности
- преимущества Data Domain
- варианты физической конфигурации
- пять уровней синхронного коммита
- варианты логической конфигурации
- мастер мастер репликация – киллер фича?
- подключаемся репликой к DBaaS primary
- PITR
- pg_rewind
- варианты мониторинга
- список основных параметров для мониторинга и причины
- pgcenter
- PMM
- auto_explain с нюансами
- особенности профилирования
- особенности логирования
- инструменты анализа исторической нагрузки
- pg_stat*
- autovacumm_worker max load
- audit
- проблематика
- особенности работы MVCC PostgreSQL
- буферный кеш – всё ли так очевидно?
- принцип работы и тюнинг background writer
- Checkpoint, влияние на производительность и варианты тюнинга
- восстановление после сбоев
- pg_prewarm
- WAL под капотом
- движок OrioleDB
- проблематика
- принцип работы и тюнинг vacuum/autovacuum
- vacuum on long transaction
- Transaction ID wraparound
- HOT Update + tuning
- особенности выделения памяти при работы c work_mem и связанные с эти caveats
- особенности работы со статистикой
- блокировки, что с ними не так?
- deadlock норма или ошибка архитектора?
- idle, idle in transaction – насколько плохо?
- что и почему нужно оптимизировать
- как обновить схему данных и избежать проблем
- добавление колонки, когда миллионы строк – паттерны
- soft delete caveats
- секционирование – киллер фича?
- виртуальные колонки
- использование предагрегатов mat.view vs triggers
- индексы как серебряная пуля. или нет?
- DEFERRABLE index
- HypoPG
- int VS bigint
- caveat порядка колонок
- типичные ошибки при изменении схемы данных
- использование колоночного хранения
- timescale db
- варианты использования postgres_fdw для ускорения работы
- проблемы миграции
- изменение кодировки
- проблематика
- пути оптимизации
- возможные ошибки
- анализ запросов – определяем узкие места
- volatile or not
- pg_hintplan
- GEQO – генетический оптимизатор
- использование IN & EXISTS & ANY
- prepared statements
- parameter sniffing caveat
- 5 вариантов паджинации, самый быстрый и связанные проблемы
- temp table отличный паттерн?
- circuit breaker
- принцип работы СТЕ и причины его использования
- generated always – киллер фича?
- best practice & caveats
- причины обслуживания СУБД
- отличие явного от неявного коммита
- обновление мажорной версии
- freeze
- stat
- index, redindex, concurrently
- materialized view refresh, concurrently
- pg_repack vs pgcompacttable vs pg_squeeze
- особенности выгрузки данных для дев стенда
- pg_orphaned
- security
- debug && trace stored procedure
- STONITH && chaos engineering
- стенд с проблемами производительности и чеклист, что нужно проверить. Оптимизируем работу
Автор Евгений Аристов
- Архитектор с 25+ опытом на хайлоад проектах (100++ Тб, 1 млн+ TPS)
Скрытая ссылка