title

text

Кирилл Боровиков
Кирилл Боровиков ООО "Компания "Тензор" Технический директор
12:15 07 февраля
45 мин

explain.sbis.ru - массовая оптимизация запросов

Как оптимизировать производительность запросов в PostgreSQL? Как это делать, если серверов - сотни, а баз - тысячи? В "Тензоре" мы разработали для этого отдельный инструмент - explain.sbis.ru: - для синхронного сбора и анализа запросов - для визуализации планов выполнения - для мониторинга ошибок в БД

Слайды

Видео

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

  • Иван Картышов
    Иван Картышов Postgres Professional Разработчик ядра
    Дмитрий Иванов
    Дмитрий Иванов Postgres Professional Developer
    22 мин

    Басня про тестирование и postgres

    Однажды вот Питон и Слон
    Вести тестирование взялись.
    И вместе все в него впряглись!

    В нашей компании (Postges Professional) разрабатываются разные проекты: multimaster, pg_probackup, pg_pathman, pg_shardman, RUM, и другие. Совладать со всей этой оравой весьма непросто, поэтому нам необходим инструмент, который способен облегчить и ускорить написание всевозможных тестов.

    В данном докладе мы расскажем о фреймворке testgres, написанном на Python, который уже позволил решить множество проблем и протестировать функциональность, которую нельзя так просто покрыть прямолинейными регрессионными тестами.

    Вы узнаете, как при помощи нескольких строчек кода запускать узлы PostgreSQL, настраивать всевозможную репликацию и создавать бекапы, меняя параметры на лету, и про многое другое. Также мы расскажем, как эти возможности позволяют нам проверять "самые труднодоступные места" и улучшать качество наших продуктов.

    Мы стремимся сделать testgres фреймворком для проведения функциональных тестов пользовательских запросов, хранимых процедур и прочей серверной логики, привнося практику TDD на уровнь разработки БД.

  • Александр Коротков
    Александр Коротков Postgres Professional Руководитель разработки
    45 мин

    Подключаемые хранилища

    Тема подключаемых хранилищ для PostgreSQL стала уже притчей во языцех. Период споров о том, нужны ли подключаемые хранилища, или нет закончился. Позиции скептиков, говорящих, что подключаемые хранилища не нужны, поскольку являются источником неконсистентного поведения СУБД, заметно ослабли после критики реализации MVCC в PostgreSQL со стороны Uber'а. Стало понятно, что подключаемые хранилища нужны как-минимум для альтернативной реализации MVCC через undo-лог, и это стало одним из ориентиров для проектирования интерфейса.

    На текущий момент работа над подключаемыми хранилищами перешла в практическую плоскость: ведётся тред, в котором несколько человек разрабатывают набор патчей, и ещё больше делают ревью.

    В данном докладе будут рассмотрены следующие вопросы:

    • обзор получившегося интерфейса для подключаемых хранилищ;
    • изменения в ядре PostgreSQL, которые потребовались для реализации данного интерфейса;
    • текущие и потенциальные применения данного интерфейса, включая heap с undo-логом и in-memory OLTP движок;
    • текущее состояние патчей и перспектива их принятия в ядро;
    • дальнейшее развитие интерфейса с целю расширения возможностей подключаемых хранилищ (columnar, index-organized, LSM и т.д.).

  • Марк Локшин
    Марк Локшин Мэйл Ру Старший программист
    45 мин

    Опыт миграции высоконагруженных игровых проектов с MySQL на PostgreSQL

    В докладе будет рассказано о том, как мы переносили два высоконагруженных игровых проекта, изначально разработанных для работы с MySQL на Postgres. Какие проблемы мы видели изначально при миграции на Postgres, с какими очевидными и не очень сложностями столкнулись во время миграции и как их решали. Какие проблемы выявились в процессе эксплуатации. Какие фичи Postgres нам оказались очень полезными, а чего нам не хватало при переносе.

  • Алексей Клюкин
    Алексей Клюкин Zalando SE Database Engineer
    Александр Кукушкин
    Александр Кукушкин Zalando SE Database Engineer
    180 мин

    Мастер-класс: Управление высокодоступными PostgreSQL кластерами с помощью Patroni

    Patroni - это Python-приложение для создания высокодоступных PostgreSQL кластеров на основе потоковой репликации. Оно используется такими компаниями как Red Hat, IBM Compose, Zalando и многими другими. С его помощью можно преобразовать систему из ведущего и ведомых узлов (primary - replica) в высокодоступный кластер с поддержкой автоматического контролируемого (switchover) и аварийного (failover) переключения. Patroni позволяет легко добавлять новые реплики в существующий кластер, поддерживает динамическое изменение конфигурации PostgreSQL одновременно на всех узлах кластера и множество других возможностей, таких как синхронная репликация, настраиваемые действия при переключении узлов, REST API, возможность запуска пользовательских команд для создания реплики вместо pg_basebackup, взаимодействие с Kubernetes и т.д.

    Слушатели мастер-класса подробно узнают, как работает Patroni, получат практические навыки настройки высокодоступных кластеров на его основе, познакомятся с различными дополнительными возможностями и поучаствуют в диагностике проблем. Будут рассмотрены следующие темы:

    • область применения: какие задачи HA успешно решаются Patroni
    • обзор архитектуры
    • создание тестового кластера
    • утилита patronictl
    • изменение конфигурации PostgreSQL для кластера, управляемого Patroni
    • мониторинг с помощью API
    • подходы к переключению клиентов
    • дополнительные возможности: ручное переключение, перезагрузка по расписанию, режим паузы
    • настройка синхронной репликации
    • расширяемость и универсальность
    • частые ошибки и их диагностика

    Для полного участия в мастер-классе вам понадобится ноутбук с установленным git, vagrant и virtual box.

    Vagrant можно загрузить со страницы https://www.vagrantup.com или установить с помощью пакетов в вашем дистрибутиве. Virtualbox: https://www.vagrantup.com

    После установки Vagrant и Virtualbox нужно выполнить:

    $ git clone https://github.com/alexeyklyukin/patroni-training
    $ cd patroni-training
    $ vagrant up
    

    После того, как patroni box поднимется и установит необходимые пакеты к нему можно подключиться с помощью vagrant ssh.