Народ, привет. У меня есть потоки в которых я делаю

запрос в базу данных.
Мне надо сделать что-то вроде:
lock("someid")
query()
unlock("someid")
Чтобы избежать ситуации с созданием deadlock'а в базе данных.
Как я могу такое реализовать?

9 ответов

21 просмотр

Для этого в DB есть механизм транзакций, чтобы ничего не поломалось когда не хочется.

Lukaš 🇷🇸- Автор вопроса

Ну просить базу это разруливать получается дольше по времени и более нагруженно по логике. Монговский драйвер не умеет повторять запрос и это придется делать в ручную. По этому я бы хотел просто блокировать поток на такой случай

Lukaš 🇷🇸
Ну просить базу это разруливать получается дольше ...

Ну тогда Mutex'ы, они работают везде идеологически одинаково. В Rust просто сделано красивее и с защитой от склеротиков.

А можно поподробнее что за потоки и что за запросы?

Lukaš 🇷🇸- Автор вопроса

Select for update. БД все бля блокировок уже предоставляет

Есть транзакционные базы данных. Открываешь транзакцию, делаешь изменения, коммитишь. Другие способы пока как ни странно не видел

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

в постгрес знаю точно есть транзакции. В случае чего можно роллбеком откатить ее

Похожие вопросы

Обсуждают сегодня

Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Привет всем! Почему этот код не срабатывает при добавлении или удалении пользователя из чата? bot.on('chat_member', async (ctx) => { console.log(ctx); }) bot.launch({allo...
Alexander
7
Всем привет. Не понимаю, в чём тут шутка юмора. Убирается только разрешение на send_messages. А send_media_messages остаётся. Как сделать, чтобы оба убирались? await b...
Alexander
2
Есть тут кто занимается разработкой серваков майна? Или знакомые
meow *
3
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Есть ли лимиты на кол-во вебхук по домену? Стоит в данный момент 900+ ботов и бывает бот перестает отвечать (не приходят вебхуки) 🐒 Помогает только перезапуск
ᅠ [ Кому не ответил, дублируйте ]
11
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Товарищи, здравствуйте Подскажите, пожалуйста, может кто-нибудь сталкивался с такой задачей Через вебапку можно сканировать qr-код, а есть ли возможность считывать nfc?
Artem Stormageddon
8
Карта сайта