在 SQL 服务器中执行存储过程和触发器
The execution of stored procedure and triggers in SQL Server
假设我在SQL服务器数据库中有以下情况。
这些是数据库中的表:
- 表 1
- 表2
- 关联触发器:插入时触发 (trigger1)
- 表 3
数据库包含一个存储过程sp1
(带参数)。
现在,sp1
是这样工作的:
sp1
正在 2 秒内从 Table1
收集一些行
- 根据这些行的值,可能有些行会被插入到
table2
(插入需要 1 秒),当然插入会导致 trigger1
触发
trigger1
在 Table3
中插入或更新一些行(多花 2 秒)
sp1
1-3步还未完成,继续工作2秒处理完毕
假设有一个应用程序(比如 Java、C# 或其他)连续调用 sp1
100 次(调用比 sp1
的执行快得多)。
我想了解处理流程的工作原理。
是否有并行性?
是否 sp1
等待 trigger1
完成后再继续第 4 步?
从应用程序调用 sp1
时,是否每次调用都必须等待才能继续下一个调用?
我制作了一个演示来测试这种情况,这是我发现的:
1- sp1 总是在继续其余处理之前等待触发器。
2- 从应用程序调用 sp1 将等待执行完成,除非调用是异步的。
假设我在SQL服务器数据库中有以下情况。
这些是数据库中的表:
- 表 1
- 表2
- 关联触发器:插入时触发 (trigger1)
- 表 3
数据库包含一个存储过程sp1
(带参数)。
现在,sp1
是这样工作的:
sp1
正在 2 秒内从Table1
收集一些行- 根据这些行的值,可能有些行会被插入到
table2
(插入需要 1 秒),当然插入会导致trigger1
触发 trigger1
在Table3
中插入或更新一些行(多花 2 秒)sp1
1-3步还未完成,继续工作2秒处理完毕
假设有一个应用程序(比如 Java、C# 或其他)连续调用 sp1
100 次(调用比 sp1
的执行快得多)。
我想了解处理流程的工作原理。
是否有并行性?
是否 sp1
等待 trigger1
完成后再继续第 4 步?
从应用程序调用 sp1
时,是否每次调用都必须等待才能继续下一个调用?
我制作了一个演示来测试这种情况,这是我发现的:
1- sp1 总是在继续其余处理之前等待触发器。
2- 从应用程序调用 sp1 将等待执行完成,除非调用是异步的。