Могу ли я написать оператор UPDATE
, который просто не будет выполнять при наличии тупика?
У меня небольшая, но часто обновляемая таблица.
Этот оператор выполняется довольно частона нем ....
UPDATE table_a SET lastChangedTime = 'blah' WHERE pk = 1234;
Где pk
- первичный ключ.
Время от времени это утверждение блокируется.Это само по себе не имеет большого значения;проблема в том, что каждый раз, когда происходит блокировка, Postgres, кажется, требуется одна или две минуты, чтобы разобраться в себе, и я могу потерять много данных.
table_a
очень изменчив, и lastChangedTime
меняются все время, так что вместо того, чтобы иногда ждать две минуты для выполнения UPDATE
, я бы предпочел, чтобы это не беспокоило.Хорошо, мои данные могут быть не такими актуальными, как хотелось бы для этой записи, но, по крайней мере, я бы не заблокировал всю таблицу на 2 минуты.
Обновление послекомментарии:
приложение очень просто взаимодействует с базой данных, оно выдает только простые, однострочные операторы UPDATE
и INSERT
и немедленно фиксирует каждое из них.Одна из проблем, вызывающих у меня сильное головокружение, заключается в том, как что-то может работать миллион раз без проблем, а затем просто потерпеть неудачу на другой записи, которая, похоже, идентична всем остальным.
Последнее предложение/ question ..... Оператор UPDATE вызывается из приложения C #.Если я изменю «тайм-аут команды» на очень короткое значение, скажем, 1 миллисекунда, это даст желаемый эффект?или это может привести к засорению базы данных большим количеством прерванных транзакций?