Нужно ли использовать транзакцию при чтении данных после записи? - PullRequest
0 голосов
/ 10 июня 2019

У меня есть веб-приложение Node.js с маршрутом, который помечает некоторую сущность как удаленную - переворачивая логическое поле в базе данных.Этот маршрут возвращает эту сущность.Прямо сейчас у меня есть код, который выглядит следующим образом:

UPDATE entity SET is_deleted=true WHERE entity.id = ?
SELECT * FROM entity WHERE entity.id = ?

На данный момент я не могу использовать инструкцию RETURNING по другим причинам.Итак, я поспорил с коллегой, я думаю, что помещать и UPDATE, и SELECT внутри транзакции не нужно, потому что мы не делаем ничего значительного с данными, просто возвращаем их.Как пользователь приложения, я ожидал бы, что возвращаемые данные будут как можно более свежими, а это означает, что я получу те же результаты при обновлении страницы.

Мой вопрос заключается в том, как лучше всего читать данные послезаписывать?Вы всегда оборачиваете чтение письмом внутри транзакции?Или это зависит?

1 Ответ

0 голосов
/ 10 июня 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...