title

text

Михаил Тюрин
Михаил Тюрин ИТ предприниматель предприниматель
16:00 17 марта
22 мин

Лок, лок – дедлок!

< Query failed: ERROR: deadlock detected
< DETAIL: Process 17371 waits for ShareLock on transaction 102733872; blocked by process 10414.
< Process 10414 waits for ShareLock on transaction 102733874; blocked by process 17371.

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

В кратком докладе-сообщении будет объяснена механика взаимодействия блокировок, приводящая к ситуации дедлока; приведены ссылки на документацию; разобрана техника "обхода" данной проблемы конкурентной работы с данными; показаны обобщенные приемы из практики.

Слайды

Видео

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

  • Alvaro Hernandez
    Alvaro Hernandez 8Kdata CTO
    45 мин

    Миграция с MongoDB на PostgreSQL

    MongoDB – популярная NoSQL CУБД, используемая в основном для работы с OLTP системами. Но из-за отсутствия требований ACID (в частности, транзакций как таковых), а также серьезных проблем с производительностью при работе с OLAP/DW нагрузками, все больше пользователей MongoDB рассматривают возможность перехода на реляционные СУБД, выбирая зачастую именно PostgreSQL. Это открывает перед сообществом PostgreSQL большие возможности по “обращению” пользователей из NoSQL в SQL. В этом докладе мы расскажем о сложностях, с которыми сталкиваются пользователи MongoDB, и представим соверменные инструменты и open-source решения, с помощью которых можно осуществить миграцию на PostgreSQL в режиме реального времени или через процесс ETL. В частности, мы обсудим ToroDB Stampede – open-source решение, которое создает реплику MongoDB в режиме реального времени, конвертирует документы JSON в реляционные таблицы и сохраняет данные в PostgreSQL.

    ВИДЕО

  • Илья Космодемьянский
    Илья Космодемьянский Data Egret
    45 мин

    Внутреннее устройство подсистемы ввода-вывода Linux для администраторов PostgreSQL

    Вопросы производительность ввода-вывода всегда были на повестке дня DBA всё время, пока существуют базы данных. Объемы данных быстро растут и важно, чтобы чтение с диска, и особенно запись на него, оставалась быстрой.

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

    В этом докладе будет объяснено, как работает подсистема ввода-вывода в Linux, как страницы данных PostgreSQL попадают с диска в разделяемый буфер и обратно, и с помощью каких механизмов можно управлять этими процессами.

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

    Отчуждаемые таблицы в PostgresPro

    Большие потоки данных нередко могут создавать проблемы даже с самой их загрузкой в БД - кроме загрузки собственно данных необходимо создавать для них индексы, проводить после загрузки VACUUM как для корректной работы Index-only scans и т.п. О том, как можно если не избежать этих проблем, то, по крайней мере, в значительной степени избежать их и посвящен этот доклад.

    ВИДЕО

  • Дмитрий Мельник
    Дмитрий Мельник ИСП РАН разработчик
    22 мин

    Динамическая компиляция SQL-запросов в PostgreSQL с использованием LLVM JIT

    В данный момент в PostgreSQL для исполнения SQL-запросов применяется интерпретатор, реализующий модель итераторов (Volcano-модель). В то же время можно добиться существенного ускорения, выполняя динамическую компиляцию запроса «на лету». В этом случае можно генерировать код, специализированный для конкретного SQL-запроса, а также применять компиляторные оптимизации, учитывая, что во время выполнения уже известна структура используемых таблиц и типы данных. Такой подход особенно актуален для сложных запросов, скорость выполнения которых ограничена производительностью процессора.