PostgreSQL - одна из самых мощных и удобных систем управления базами данных. Она активно поддерживается сообществом и каждый год получает новые релизы.
PostgreSQL поддерживает самые продвинутые функции SQL-стандарта, а также предоставляет возможности NoSQL, богатый набор типов данных и расширений. Все это делает PostgreSQL привлекательным решением для программных систем.
Тем не менее, извлечение максимальной производительности из PostgreSQL - это непростая задача. Для этого нужно сочетание проверенных методик, тщательного тестирования, надежного мониторинга и регулярного обслуживания. Также важно использовать дополнительные инструменты, которые дополняют возможности основной базы данных.
Этот курс дает вам как теоретические, так и практические знания для создания высокопроизводительных решений на базе PostgreSQL. Вы научитесь строить динамичные базы данных для корпоративных приложений, используя последние версии PostgreSQL.
В курсе мы подробно разберем такие продвинутые аспекты PostgreSQL, как логическая репликация, кластеры баз данных, настройка производительности и мониторинг. Вы научитесь работать с оптимизатором PostgreSQL, настраивать его для высокой скорости, управлять транзакциями, блокировками, индексами и оптимизировать запросы.
Курс предполагает базовые знания о базах данных, таких как таблицы и индексы. Этот курс будет полезен как для новичков в PostgreSQL, так и для тех, кто уже несколько лет работает с ним. Даже опытные пользователи PostgreSQL откроют для себя несколько новых команд и подходов к оптимизации, а также лучше поймут, как работает база данных.
Курс по настройке производительности PostgreSQL: Программа
Изучение архитектуры сервера PostgreSQL
В этом разделе мы рассмотрим архитектуру PostgreSQL. Поймем, как совместная работа кэшей Shared Buffers и кэша операционной системы улучшает производительность, снижая объем физического ввода-вывода. Мы также обсудим важность настройки контрольных точек (Checkpoints) для минимизации времени восстановления после сбоев и необходимость процессов WAL Writer и Background Writer для эффективного функционирования системы. Поймем, через какие стадии проходит процессор запросов, чтобы получить результаты, и узнаем о подсистемах, обеспечивающих обслуживание базы данных.
Настройка VACUUM для повышения производительности
Рассмотрим, почему при каждой операции обновления (UPDATE) или удаления (DELETE) остаются «мертвые» строки и индексы, которые требуют последующей очистки. Узнаем, как чрезмерное накопление таких строк снижает производительность, и почему процесс VACUUM лучше выполнять на постоянной основе, используя автоматический вакуум (autovacuum), вместо периодического выполнения очистки вручную.
Эффективное использование индексов
Поймем, как индексы влияют на нагрузку при добавлении или изменении строк и зачем требуется выборочно добавлять индексы. Мы рассмотрим, почему индекс используется только для выборки небольшой части строк и как кардинальность данных влияет на выбор оптимального плана выполнения запроса.
Советы по оптимизации индексов
Научимся настраивать индексы, чтобы ускорить запросы. Рассмотрим покрывающие индексы, которые позволяют отвечать на запросы, используя только данные индекса, и узнаем о преимуществах индексирования внешних ключей. Также обсудим частичные индексы и комбинацию индексов для повышения производительности.
Использование статистики
Изучим статистику PostgreSQL, которая помогает находить и сортировать запросы, вызывающие наибольшую нагрузку. Узнаем, как находить пропущенные индексы и определять, когда их следует удалить.
Выявление проблем в запросах
Научимся читать планы запросов и понимать, как каждый тип узла вносит свой вклад в выполнение запроса. Рассмотрим способы определения наиболее ресурсоемких частей запросов и методы их оптимизации.
Советы по оптимизации запросов
Узнаем, почему важна правильная семантика запроса до оптимизации, и когда лучше избегать SELECT *, ORDER BY и DISTINCT. Изучим функции PostgreSQL, такие как синтаксис CASE и параллельные запросы, для снижения времени выполнения.
Настройка shared_buffers для повышения производительности
Узнаем, как оптимально настроить параметр shared_buffers, учитывая низкие значения по умолчанию и необходимость соотношения с объемом кэша операционной системы.
Масштабирование и репликация
Рассмотрим, как репликация помогает распределять нагрузку на несколько серверов, повышая производительность системы. Изучим сторонние решения, такие как Pgpool-II и Postgres-XL, которые обеспечивают балансировку нагрузки и масштабируемость для больших объемов данных.
Этот курс дает вам все необходимые знания для настройки PostgreSQL на высокую производительность и поможет вам применять их для создания надежных и масштабируемых решений в реальных проектах.