ADO.net возвращает результаты только после указанного вызова хранимой процедуры или ожидает выполнения всех триггеров? - PullRequest
2 голосов
/ 26 сентября 2011

Я пытаюсь записать каждое слово, используемое в поле nvarchar (max) в моей базе данных, и каждое слово станет строкой данных, и это занимает много времени, когда я делаю это в одной хранимой процедуре.Итак, я создал другую хранимую процедуру, которая добавляет все слова как новые строки данных в другую таблицу, но это занимает очень много времени, и я не хочу, чтобы пользователь ждал этой операции.Мое решение состояло в том, чтобы запустить трудоемкую вставку в запрос в отдельном процессе (system.thread), но теперь я думаю о триггерах.Если я инициирую вставку всех слов в триггер, будет ли пользователь ждать всех запросов на вставку, включая триггеры?или SQL запустит хранимую процедуру, вернет результаты пользователю, а затем триггеры будут работать?при условии, что триггеры следуют за триггерами.

Ответы [ 2 ]

4 голосов
/ 26 сентября 2011

Правильно - хранимая процедура ожидает завершения триггера (для поддержки фиксации / отката транзакции).Если вам нужно асинхронное поведение, вы можете избавиться от триггера и использовать брокер служб SQL-сервера для его обработки асинхронным способом.Проверьте эту тему для получения дополнительной информации.

1 голос
/ 26 сентября 2011

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

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

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

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