title

text

Артур Закиров
Артур Закиров Postgres Professional Разработчик
18:00 05 февраля
22 мин

Использование pg_variables в качестве временных таблиц

PostgreSQL предоставляет возможность создания временных таблиц. Хотя временная таблица доступна только для сессии, которая ее создала, и удаляется по окончании этой сессии, вся информация о ней хранится в системном каталоге PostgreSQL. С этим связаны несколько проблем, которые затрудняют или делают невозможным использование временных таблиц в некоторых случаях. Есть различные попытки решения этой особенности, в том числе в нашей компании. Но они пока не увенчались успехом, главным образом из-за движка PostgreSQL. В докладе я хочу рассказать о довольно простом и небольшом расширении pg_variables. Оно позволяет создавать табличные переменные наряду со скалярными. Я расскажу, в каких случаях оно может заменить временные таблицы, какие у него есть достоинства и недостатки.

слайды

Видео

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

  • Алексей Фадеев
    Алексей Фадеев Sibedge Старший разработчик .NET, евангелист Postgres.
    45 мин

    ORM: как писать запросы и не сводить с ума СУБД

    Многие специалисты, обслуживающие СУБД не любят эти три буквы - ORM, потому что не раз видели сгенерированные многоэтажные запросы для простейших операций. Однако, практика показывает, что источник проблемы - не ORM, а разработчики, не умеющие ими пользоваться. В этом докладе я расскажу основные принципы, как писать код для ORM, генерирующий «хорошие» запросы, а также покажу «плохие» примеры кода, и что из них получается на выходе. Основные идеи – при написании кода мыслить в SQL, научиться заранее видеть, какой запрос будет сгенерирован. Но даже обретя такой навык нужно всегда проверять выходной SQL для сложных запросов. Приведу конкретный пример, когда незначительное изменение в ORM-логике меняет объём выходного SQL в десятки(!) раз. Расскажу о дополнительных инструментах и хитростях. А именно – отключение трекинга, конструкция Include, разный синтаксис для JOIN, как получить больше данных за меньшее число запросов, как эффективно писать запросы с группировкой, и зачем нужны проекции. Не обойду стороной и случаи, когда эффективно решить задачу средствами ORM не получается (например, запросы с рекурсией). Кроме SELECT-запросов немного расскажу о средствах Batch-Update/Delete, позволяющих обновлять и удалять данные средствами ORM без загрузки на клиент. Несколько слов будет и о вставке – как заставить ORM быстро вставлять большие объёмы данных через Multi-Insert и COPY. Будет упомянуто и о поддержке в ORM специфичных для PostgreSQL типов данных – массивов, hstore и jsonb. Может возникнуть вопрос – а есть ли вообще смысл использовать ORM, раз нужно столькому научиться. Преимущества их использования есть, и об этом тоже будет сказано. Все примеры будут на технологии Entity Framework для платформ .Net Core и .Net Framework на языке C#. Для Hibernate/NHibernate могут быть отличия в некоторых тонкостях, но основные принципы те же, поэтому доклад будет полезен разработчикам, использующим различные технологии.

  • Федор Сигаев
    Федор Сигаев Postgres Professional технический директор, ведущий разработчик PostgreSQL
    22 мин

    Вперед в прошлое

    Иной раз есть большое желание вернуть базу данных в прошлое, на день, два или несколько дней. Причины самые разные, но чаще всего: посмотреть, что поменялось, приложение после обновления повело себя некорректно, повеление свыше сделать как вчера. Классический способ все знают - держим опорные резервные копии и наборы WAL-логов для возможности восстановления на произвольный момент. И такой способ - головная боль для DBA/администраторов и быстро не делается. Безусловно, есть способы несколько оптимизировать этот процесс, но без downtime это не обходится. PostgresPro предлагает новый способ - снапшоты или снимки состояния БД и возможность вернуться к ним.

  • Иван Фролков
    Иван Фролков Postgres Professional инженер-консультант
    45 мин

    Типичные ошибки приложений при работе с Postgres

    По роду своей деятельности мне все время приходится иметь дело с приложениями, работающими с Postgres. Некоторые работают хорошо; некоторые не совсем - и доклад будет как раз об ошибках последних.

    Фотогалерея

  • Алексей Лустин
    Алексей Лустин SilverBulleters, LLC CTO
    22 мин

    Анализ проблемных запросов как средство регулярного рефакторинга кода 1С

    1. Принципы поиска проблемных запросов в PostgreSQL
    2. Оценка гипотетических индексов и степени их влияния на планы запросов
    3. Наиболее часто встречающиеся ошибки у 1С-программистов
    4. Базовые методы рефакторинга кода с учетом особенностей PostgreSQL
    5. Хранение аналитической информации журнала работы PostgreSQL для оценки качества рефакторинга