#advisory_lock — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #advisory_lock, aggregated by home.social.
-
Двойная бронь: как мы поймали гонку в записи и закрыли её EXCLUDE-констрейнтом
Я делаю сервис онлайн-записи для салонов красоты: клиент записывается в чат-боте или на странице, а запись падает в расписание мастера. Однажды мастер написал мне: на 15:00 к ней пришли два клиента. Оба записаны, оба уверены, что слот их. Классическая двойная бронь — и классическая race condition. Разберу, почему наивная проверка «свободно ли время?» не спасает, и как мы закрыли дыру двумя слоями: advisory-lock и EXCLUDE-констрейнтом в PostgreSQL. По пути — один неочевидный подвох с IMMUTABLE , на который легко напороться.
https://habr.com/ru/articles/1065522/
#PostgreSQL #race_condition #двойная_бронь #EXCLUDE_constraint #btree_gist #advisory_lock #SAVEPOINT #tstzrange #целостность_данных #конкурентность
-
Как мы убрали очередь из REFRESH MATERIALIZED VIEW в PostgreSQL
У нас был долгий REFRESH MATERIALIZED VIEW : один запуск мог идти около часа, а повторные запуски вставали в очередь и держали соединения. CONCURRENTLY помогал не блокировать чтение из materialized view, но не решал проблему очереди одинаковых REFRESH. Мы сделали механизм в PostgreSQL: триггерами отмечаем изменения в зависимых таблицах, храним зависимости каждой MV в служебной таблице, а перед обновлением берём pg_try_advisory_xact_lock по конкретной MV. Если lock не удалось взять — значит, обновление уже идёт, и второй REFRESH не ждёт в очереди, а пропускается.
https://habr.com/ru/companies/skbkontur/articles/1043566/
#postgresql #materialized_view #advisory_lock #plpgsql #sql #блокировки #оптимизация_postgresql
-
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 для координации задач между репликами.
https://habr.com/ru/articles/1031236/
#postgresql #advisory_lock #neon #serverless #retry #идемпотентность #distributed_lock
-
Как я распилил 1,1 ТБ default-партиции и не уронил прод
Мы забыли вовремя создать партиции, и все новые данные полетели в events_default_partition . Default дорос до ~1.1 ТБ, а простое «ATTACH PARTITION» требовало часов сканирования и долгой блокировки. В статье — почему «быстрые» рецепты оказываются медленными, как я перенёс данные в нужные диапазоны, и как мы уложили критическую блокировку в 44 с . Default-партиция — это не озеро Байкал. Если туда всё сливать, экосистема потом мстит. 44 секунды блокировки: план операции
https://habr.com/ru/articles/977528/
#партиционирование_PostgreSQL #ATTACH_PARTITION #plpgsql #автоматизация_обслуживания_БД #explain_analyze #downtime #advisory_lock #CHECK_constraint #partitioning #database_migrations
-
Распределённая батчевая обработка данных: как мы решали проблему гонок в продакшене
Всем привет! Меня зовут Дмитрий, я руковожу командой государственных интеграций в Ozon Банке. Сегодня я расскажу о том, как мы столкнулись с проблемой гонок при батчевой обработке данных в распределённой системе — и какие решения мы рассматривали, чтобы эту проблему решить. Материал основан на реальном кейсе и будет интересен всем, кто работает с PostgreSQL, батчами, распределёнными системами и борьбой за консистентность в высоконагруженных системах.
https://habr.com/ru/companies/ozonbank/articles/944882/
#архитектура #sql #аномалии #kafka #postgresql #advisory_lock