home.social

#advisory_lock — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #advisory_lock, aggregated by home.social.

fetched live
  1. Двойная бронь: как мы поймали гонку в записи и закрыли её EXCLUDE-констрейнтом

    Я делаю сервис онлайн-записи для салонов красоты: клиент записывается в чат-боте или на странице, а запись падает в расписание мастера. Однажды мастер написал мне: на 15:00 к ней пришли два клиента. Оба записаны, оба уверены, что слот их. Классическая двойная бронь — и классическая race condition. Разберу, почему наивная проверка «свободно ли время?» не спасает, и как мы закрыли дыру двумя слоями: advisory-lock и EXCLUDE-констрейнтом в PostgreSQL. По пути — один неочевидный подвох с IMMUTABLE , на который легко напороться.

    habr.com/ru/articles/1065522/

    #PostgreSQL #race_condition #двойная_бронь #EXCLUDE_constraint #btree_gist #advisory_lock #SAVEPOINT #tstzrange #целостность_данных #конкурентность

  2. Как мы убрали очередь из REFRESH MATERIALIZED VIEW в PostgreSQL

    У нас был долгий REFRESH MATERIALIZED VIEW : один запуск мог идти около часа, а повторные запуски вставали в очередь и держали соединения. CONCURRENTLY помогал не блокировать чтение из materialized view, но не решал проблему очереди одинаковых REFRESH. Мы сделали механизм в PostgreSQL: триггерами отмечаем изменения в зависимых таблицах, храним зависимости каждой MV в служебной таблице, а перед обновлением берём pg_try_advisory_xact_lock по конкретной MV. Если lock не удалось взять — значит, обновление уже идёт, и второй REFRESH не ждёт в очереди, а пропускается.

    habr.com/ru/companies/skbkontu

    #postgresql #materialized_view #advisory_lock #plpgsql #sql #блокировки #оптимизация_postgresql

  3. Postgres advisory locks на Neon ломаются от TCP-сброса. История четырёх фиксов retry-логики

    Расскажу про четыре production-инцидента на одном куске кода за десять дней. В каждом я думал, что разобрался. Закончилось тем, что я выкинул pg_advisory_lock из retry-пути и поставил FOR UPDATE SKIP LOCKED . Day-generation лок остался advisory-ным, но утечка там не критична - почему именно, разберу в конце. Полезно, если у вас Postgres на Neon (или Supabase, или Aiven serverless) и где-то по коду есть session-scoped advisory locks для координации задач между репликами.

    habr.com/ru/articles/1031236/

    #postgresql #advisory_lock #neon #serverless #retry #идемпотентность #distributed_lock

  4. Как я распилил 1,1 ТБ default-партиции и не уронил прод

    Мы забыли вовремя создать партиции, и все новые данные полетели в events_default_partition . Default дорос до ~1.1 ТБ, а простое «ATTACH PARTITION» требовало часов сканирования и долгой блокировки. В статье — почему «быстрые» рецепты оказываются медленными, как я перенёс данные в нужные диапазоны, и как мы уложили критическую блокировку в 44 с . Default-партиция — это не озеро Байкал. Если туда всё сливать, экосистема потом мстит. 44 секунды блокировки: план операции

    habr.com/ru/articles/977528/

    #партиционирование_PostgreSQL #ATTACH_PARTITION #plpgsql #автоматизация_обслуживания_БД #explain_analyze #downtime #advisory_lock #CHECK_constraint #partitioning #database_migrations

  5. Распределённая батчевая обработка данных: как мы решали проблему гонок в продакшене

    Всем привет! Меня зовут Дмитрий, я руковожу командой государственных интеграций в Ozon Банке. Сегодня я расскажу о том, как мы столкнулись с проблемой гонок при батчевой обработке данных в распределённой системе — и какие решения мы рассматривали, чтобы эту проблему решить. Материал основан на реальном кейсе и будет интересен всем, кто работает с PostgreSQL, батчами, распределёнными системами и борьбой за консистентность в высоконагруженных системах.

    habr.com/ru/companies/ozonbank

    #архитектура #sql #аномалии #kafka #postgresql #advisory_lock