Использование pg_variables в качестве временных таблиц
PostgreSQL предоставляет возможность создания временных таблиц. Хотя временная таблица доступна только для сессии, которая ее создала, и удаляется по окончании этой сессии, вся информация о ней хранится в системном каталоге PostgreSQL. С этим связаны несколько проблем, которые затрудняют или делают невозможным использование временных таблиц в некоторых случаях. Есть различные попытки решения этой особенности, в том числе в нашей компании. Но они пока не увенчались успехом, главным образом из-за движка PostgreSQL. В докладе я хочу рассказать о довольно простом и небольшом расширении pg_variables. Оно позволяет создавать табличные переменные наряду со скалярными. Я расскажу, в каких случаях оно может заменить временные таблицы, какие у него есть достоинства и недостатки.
Слайды
Видео
Другие доклады
-
Василий Пучков ООО Главный эксперт
Интеграция серверов PostgreSQL в корпоративную сеть
Корпоративные стандарты защиты информации, обеспечения надёжности и унификации ПО: Аутентификация Kerberos (на Windows и Linux) в среде Active Directory. Особенности 1С Предприятие. Подключение к системе резервного копирования (HP Data Protector). Подключение к системе мониторинга Solarwinds.
-
Артем Иванов Atos IT S&S Пресейл-инженерАлексей Игнатов Postgres Professional DBA
Миграция на СУБД PostgreSQL/Postgres Pro с многоядерными серверами Bull. Реальный опыт
При миграции на СУБД PostgreSQL/Postgres Pro многоядерные серверы требуют к себе внимательного отношения и знания настроек для параллельной работы процессов. Как обеспечить корректную и быструю работу при многотерабайтных конфигурацях?
В своем докладе Артем Иванов и Алексей Игнатов расскажут об опыте тестирования PostgreSQL и Postgres Pro на BullSequana S и Bullion S.
- Особенности данной аппаратной платформы для высонагруженных конфигураций
- Многопроцессорные Scale-up серверы и PostgreSQL/Postgres Pro
- Результаты стрессового тестирования оборудования для СУБД PostgreSQL/Postgres Pro.
-
TTatsuro Yamada NTT Comware Ведущий специалист по базам данных
Настройка автопланировщика с использованием цикла обратной связи
При OLAP и пакетной обрабокте данных часто наблюдается ситуация, что чем сложее запрос (содержит много джойнов, фильтров и аггрегативных функций), тем выше вероятность ошибок в оценке количества строк, в результате чего планировщик выбирает неэффективный план исполнения запроса.
Для того, чтобы решить эту проблему, я разработал инструмент под названием pg_plan_advsr - это расширение для PostgreSQL, которое исправляет ошибки оценки путем неоднократного возвращения в планировщик информации, собранной в ходе исполнения запроса.
Расширение содержит три фичи:
- Автоматическая оптимизация плана запроса за счет неоднократного возвращения информации о ходе выполнения запроса в планировщик.
- Сохранение всех выработанных при оптимизации планов запросов в таблицу истории.
- Создание и сохранение хинтов оптимизатора с тем, чтобы иметь возможность воспроизвести выработанные планы исполнения запросов в процессе настройки.
Я верифицировал эффективность pg_plan_advsr путем запуска join order benchmark (JOB) на PG 10.4, в ходе чего наблюдалось сокращение времени исполнения запроса до 50% от первоначального. Таким образом, расширение будет полезно пользователям, который хотят настроить планировщик для OLAP и пакетной обработки данных.
В ходе презентации я расскажу о следующие моментах:
- Принципы построения и архитектура pg_plan_advsr.
- Подробная информация о результатах тестирования JOB.
- Направления улучшений в будущем.
- Совместное использование расширений aqo и pg_plan_advsr together (экспериментальное).
-
Мирослав Шедиви solute GmbH Senior Software Developer
Битемпоральность: отслеживание воспроизводимых изменений в PostgreSQL с помощью типа данных RANGE
Итак, вы наконец создали модель базы данных для вашего приложения и наполнили ее текущими данными. Каким образом обеспечить их актуальность? Хотя команда INSERT может быть все еще прозрачной, команды UPDATE и DELETE перезапишут ваши предыдущие данные, так что вы не сможете их воспроизвести. Клонирование целиком огромного контента при каждом небольшом обновлении - не вариант. Для богатых и сложных данных о сотнях тысяч электрогенераторов в Германии и по всему миру я построил базу данных, используя тип данных range, недавно появившийся в PostgreSQL. Это позволило мне добавлять, обновлять и удалять данные, при том обладая полным доступом к состоянию базы данных в любой исторический момент. Во время выступления я представлю очень упрощенную версию базы данных, чтобы аудитория смогла тут же применить знания на практике. Также я покожу несколько хитрых приемов в работе с Python и Psycopg2, которые позволят всей команде подготавливать, просматривать и развертывать все изменения в базе данных без конфликтов слияния. И подкину несколько идей о том, как можно эти данные эффективно извлекать.