title

text

Иван Фролков
Иван Фролков Postgres Professional инженер-консультант
11:00 03 февраля
90 мин

Оптимизация запросов в PostgreSQL

Основная задача для приложения, работающего с СУБД, кроме реализации требуемого функционала - это обеспечения минимального времени отклика либо максимальной пропускной способности. К сожалению, многие разработчики зачастую весьма смутно представляют себе, на что и как СУБД расходует ресурсы при выполнении запроса, и неспособны предугадать узкие места. Рассказу о том, какими способами может быть выполнен запрос, какие из них оптимальны, какие при этом могут быть проблемы и как их можно попробовать обойти и посвящен этот мастер-класс.

Слайды

Видео

Другие доклады

  • Kevin  Grittner
    Kevin Grittner EnterpriseDB

    Всё об изоляции транзакций в PostgreSQL для разработчиков приложений

    Когда множество пользователей, процессов или потоков выполнения одновременно модифицируют их общие данные, это может вызывать проблемы, если каким-то образом не урегулировать условия гонки. Эти проблемы особенно остро проявляются в базах данных, реализующих семантику ACID. Набор изменений, объединённых в транзакцию базы данных, должен проявляться атомарно, и для параллельных транзакций, и для процесса восстановления после сбоя. Каждая транзакция должна переводить базу данных из одного согласованного состояния (с точки зрения бизнес-правил) в другое. Для эффективной разработки необходимо иметь возможность запрограммировать каждую транзакцию независимо от других транзакций, которые по стечению обстоятельств могут выполняться в то же самое время. В случае сбоя все изменения, внесённые транзакциями, об успешном завершении которых были уведомлены приложения, а также все изменения, ставшие видимыми для других транзакций, должны оставаться в базе после восстановления. За многие годы были выработаны различные стратегии обеспечения этих гарантий, а иногда гарантии корректировались тем или иным способом. В данном докладе будет рассказано, каким образом обеспечиваются эти гарантии или их компромиссные варианты, с упором на методику сериализуемой изоляции снимков (SSI, Serializable Snapshot Isolation), применяемую в PostgreSQL (и ни в какой другой производственной СУБД на данный момент). Хотя SSI уже работает быстрее и с большей степенью параллельности, чем любая другая методика управления условиями гонки с наиболее типичной нагрузкой, есть много путей для дальнейшего увеличения производительности, некоторые из которых требуют помощи эксперта по различным методам доступа индексов; эти вопросы и будут обсуждены в данном докладе. Кроме того, на докладе будут представлены некоторые общие идеи о том, как можно использовать методики SSI с XTM в распределённой системе. В конце мы оставили время для группового обсуждения оптимизации и возможных применений в распределённой среде.

  • Pavel  Stehule
    Pavel Stehule

    Хранимые процедуры в PostgreSQL, язык PL/pgSQL

    • Архитектура
    • Дизайн и релизация языка PL/pgSQL
    • Разница между PL/SQL и PL/pgSQL
    • Преимущества и проблемы PL/pgSQL

  • Andreas Scherbaum
    Andreas Scherbaum Pivotal Principal Software Engineer

    Как мы сделали Greenplum Open Source

    Greenplum — это форк PostgreSQL, оптимизированный для использования в аналитике и хранилищах данных. Компания Pivotal в начале 2015 г. анонсировала, что часть её продуктов станут продуктами Open Source, в том числе и Greenplum Database. На этом выступлении будет представлен обзор истории Greenplum, всего процесса перевода продукта в мир Open Source и препятствий, с которыми мы столкнулись. Мы также расскажем, как можно принять участие в нашем проекте.

  • Marco Slot
    Marco Slot Citus Data Главный инженер-программист

    CitusDB: расширение для масштабирования PostgreSQL

    CitusDB — расширение PostgreSQL, позволяющее распределять таблицы в кластере серверов PostgreSQL. Данные разделяются по секциям (шардам) по добавлению (оптимально для массовой загрузки данных временных рядов) или по хешу (для введения данных в реальном времени). Запросы SELECT к распределённым таким образом таблицам прозрачно распараллеливаются в кластере, при этом задействуются все доступные ядра. Также параллельно возможно соединять распределённые таблицы, даже если они разделены не по значению одной колонки. CitusDB исключительно подходит для сценариев использования с анализом в реальном времени, например, для информационных панелей, где нужны быстрые аналитические запросы к динамическим данных и в то же время востребована масштабируемая оперативная база данных. На этом докладе будет освещено внутреннее устройство CitusDB и представлена живая демонстрация крупномасштабного кластера CitusDB.