и не смог понять как правильно ей пользоваться, почему-то примеры для меня показались не явными(
Да не используй это вообще, зачем оно?
Стандартная ситуация: несколько подов, одна база. Нужна блокировка.
Кубернетиса
Несколько инстансов приложения в кластере (кубер)
Корректно не получается обработать это на джаве. Сыпятся дедлоки, если обрабатывать/отлавливать всё равно нормально не отрабатывает
Делай транзакции нормальные, и всё будет ок. Если deadlock, то это отдельный вопрос, надо разбираться детально
А почему не рекомендовано к использованию pg_advisory_xact_lock?
Потому что если ты не умеешь без этого нормально с данными работать, то и с этим точно не сможешь
Это не рекомендовано, это просто моё мнение основное на длительном опыте работы с БД. Если у тебя Дедлоки и такие проблемы с транзакциями, значит вы там что-то сильно не так делаете и вам уже ничто не поможет. Тем более если это на PG, где MVCC, очень хорошее управление concurrency и хороший оптимизатор.
Там проблема в том, что могут приходить дубли,(например 2 в одно время, и срабатывает апдейт который ведет к дедлоку), но дубли обрабатывать слишком дорого для приложения, поэтому в таких случаях нужно просто коммититься и ничего не делать.
Дубли чего и куда приходят?
В приложение из кафки приходят данные (дубли), их нужно обработать, и апдейтом положить в таблицу.
Ну так очень странно у тебя есть Кафка У тебя есть какие-то задачи У тебя есть приложение и блядь при всём этом каким-то образом появляются какие-то дубли Да ещё приходят в базу данных несчастную которая блин этим всем должна заниматься и разгребать это дерьмо, ну тебе самому не смешно?
А если ты начнёшь использовать системные средства по адреса чтобы каким-то Макаром как-то хитрожопообработать транзакцией то ты сразу же эту ситуацию разрулишь ну да ну да...
Так эти дубли шлю не я, в этом и проблема, и этот сторонний сервис не поможет отправлять данные без них
Ты шлёшь или не ты шлёшь Это ничего не меняет
Короче Хочешь про PG adv lock - сходи лучше в чат по PG, а я всё сказал https://t.me/pgsql
Что за данные такие, что дубли дорого обрабатывать? Пробовали так делать, не справляется с нагрузкой?
Проблема в том что дублей очень много и приходят очень очень часто, поэтому и тяжело от этого.
Ну это уже ненормально как-то слегка у тебя стоит травка тебя стоит твоё приложение в нескольких экземплярах да видимо ещё что-то ну база данных понятно И всё это впустую молотит только для того чтобы убрать дубли...
Если не у тебя эти дубли возникают то ты должен обратиться соответственно к коллегам которые занимаются архитектурой вашей системы и поставить перед ними проблему чтобы они избавились от этих дублей архитектурно и сразу в смысле чтобы мощности вычислительные вашей системы не тратились на поиски и устранения дублей то есть впустую
Это первое что сделал, но там с мертвой точки не получится сдвинуть. Как наверно догадываешься бюрократическая большая организация
Значит не занимайся этой проблемой
Так-то такие вопросы решаются довольно просто на входе делаешь небольшую базу данных запросов на обработку там вычисляешь какой-то хороший хэш от исходных данных делаешь по нему уникальный индекс сорри не так, делаешь по нему не уникальный индекс, на входе вычисляешь этот хэш проверяешь по индексу наличии уже так такого поступившего запроса по хешу, если хэш совпадает проверяешь сами данные, если они тоже совпадают то клиента с этим запросом отфуливаешь потому что уже такой запрос был если я не совпадаю то запрос идёт дальше Вот и всё
Да и хер сними, пусть сыпятся.
Ты чего это ?
Опечатка была неочевидная, да.
Обсуждают сегодня