Вчера я задал вопрос: Время ожидания для запроса на выборку из внешней службы после обновления на той же таблице , но я начинаю новый разговор об этой же проблеме, потому что я исследовал ее больше и сейчасэто оказалось немного другой проблемой, чем я думал ранее.
Это изображение из инструмента мониторинга базы данных после того, как я использовал функцию из своегоприложение.Эти три зеленых запроса запускаются из моего Java-приложения и представляют собой:
- процедура с запросом выбора
- процедура с двумя запросами на обновление в MyTable
- запрос выбора в MyTable
затем вызывается внешняя служба, которая выполняет запрос на выборку на MyTable (красная).Этот запрос истекает (потому что он не может читать из MyTable).Я не знаю почему.Я попытался изменить эту вторую процедуру с помощью запросов на обновление, чтобы эти обновления были зафиксированы перед вызовом внешней службы.Я пытался:
помещать только запросы на обновление внутри процедуры
CREATE PROCEDURE
...
AS
BEGIN
UPDATE
....
UPDATE
....
END
помещать запросы на обновление в транзакцию и фиксировать ее внутри этой процедуры
, но только когда я заканчиваю процедуру с:
IF @@TRANCOUNT > 0 COMMIT TRAN
без запуска транзакции внутри этой процедуры, я не получаю тайм-аут (красный) выберите запрос.Но это кажется ужасной идеей совершить транзакцию, я не знаю, с чего она началась.
Есть идеи, что я могу с этим поделать или как исследовать эту проблему?По сути, я застрял здесь и не знаю, что делать дальше.