vb_buddy Ответов: 1

Хранимая процедура занимает больше времени для выполнения.


У меня есть программное обеспечение, которое работает в Сети. К серверу подключено около 10 клиентских машин.
Все sql - запросы связаны с помощью хранимой процедуры.

Для каждой транзакции выполняются определенные шаги.
Пример :

Клиент идет к клиентской машине X и делает заказ.
Затем он идет к клиентской машине Y, чтобы получить доставку.

Но один из 1000 случаев, когда заказ, отправленный с клиентской машины X, не записывается на сервере, и клиентская машина Y не может выполнить доставку.

Есть огромные сделки, и такие случаи вызывают много беспокойства.

Я не могу понять первопричину этой проблемы.

Пожалуйста помочь

Что я уже пробовал:

Я установил определенные блоки в полях базы данных, но ничего не работает.

Herman<T>.Instance

Есть ли у вас какие-либо исключения, зарегистрированные в журнале? Тайм-аут, например?

PeejayAdams

Какие временные вариации вы получаете? Существует ли какой-либо шаблон, связанный с тем, какие пользователи выполняют эту процедуру?

1 Ответов

Рейтинг:
0

OriginalGriff

Мы не имеем ни малейшего представления.
Вам нужно очень внимательно посмотреть на свой код и понять, что происходит - и вы единственный человек, который может это сделать, потому что:
0) мы не можем видеть, как вы проверяете свои входные данные или передаете их на сервер.
1) Мы не можем видеть ваш код - поэтому мы не знаем, проглатываете ли вы исключения, используете ли плохие практики или что-то еще.
2) Мы не можем видеть ваш SP - поэтому мы также понятия не имеем, что он делает,m o0r, как он это делает.
3) у нас нет доступа к базе данных или к значениям, которые вы пытаетесь поместить в нее, поэтому мы не можем сказать, есть ли какой - либо общий фактор в любой из отсутствующих записей.

Извините, но вам придется разобраться в этом самостоятельно - никто другой не имеет необходимой информации (а это все!)


vb_buddy

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

Заранее спасибо

OriginalGriff

Да... но... это плохая идея.
Поставь

SET LOCK_TIMEOUT 10000;

в верхней части запроса, и он будет выдавать исключение, если превышает 10 секунд. Это может вызвать откат, но вы должны быть осторожны, чтобы уведомить пользователя.

Это, вероятно, не решит вашу ранее сообщенную проблему, просто введет новые...

vb_buddy

Спасибо... постараюсь

OriginalGriff

Всегда пожалуйста!

vb_buddy

Вы правы... это может не решить проблему...
Я объясню вам процесс совершения сделки :

Программное обеспечение работает дальше VB.net
-> пользователь нажимает на кнопку Сохранить
-> Он переходит к функции и дает все данные, а именно: имя хранимой процедуры, имена столбцов, необработанные данные через команду.Параметры.AddWithValue
и чем весь набор запросов выполняется в хранимой процедуре.
И чем он снова возвращается к vb.net и забирает результат. В случае, если между ними что-то пойдет не так, вся транзакция откатывается и выдает ошибку VB.Net-да.

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

У меня есть предчувствие, что вы решите мою проблему.

С Теплыми Пожеланиями..





OriginalGriff

Я думаю, вам нужно посмотреть на свой SP и посмотреть, что он делает: ввод пользователя занимает более 10 секунд, чтобы сохранить его в современную БД? Либо они вводят слишком много данных за один раз - и это плохо, потому что любая ошибка или колебания мощности могут потерять для них огромное количество работы, - либо в вашем потоке данных / дизайне есть что-то очень, очень неправильное.
Один пользовательский ввод должен занять в худшем случае миллисекунды для вставки / обновления.

vb_buddy

спасибо... буду внимательно изучать СП