Предположим, у меня есть следующая ситуация в базе данных SQL Server.
Это таблицы в базе данных:
- Table1
- Table2
- Связанные триггеры: триггер при вставке (trigger1)
- Table3
База данных содержит одну хранимую процедуру sp1
(с параметрами).
Теперь вот как sp1
работает:
sp1
собирает несколько строк из Table1
за 2 секунды - В зависимости от значений этих строк, может бытьнекоторые строки будут вставлены в
table2
(вставка занимает 1 секунду), и, конечно, вставка заставляет trigger1
запускать trigger1
вставляет или обновляет некоторые строки в Table3
(это занимает 2 секундыподробнее) sp1
еще не выполнено после шагов 1-3, оно продолжает работать в течение 2 секунд обработки, а затем завершается
Представьте, что есть приложение (скажем,Java, C # или что-то еще) вызывая sp1
100 раз подряд (вызов происходит намного быстрее, чемВыполнение sp1
).
Я хочу понять, как работает поток обработки.
Есть ли параллелизм?
Дождется ли sp1
завершения trigger1
, прежде чем перейти к шагу 4?
При вызове sp1
из приложения, делает ликаждый звонок должен ждать, прежде чем перейти к следующему звонку?