来自链接服务器的另一个 table 的 INSERT 触发器很慢
INSERT trigger from another table from a linked Server is slow
我有三个table:
(table_a)
有一个 AFTER INSERT 触发器,可将另一个 table (table_b)
中的行从链接服务器插入到本地 table (table_c)
.
只要将批号插入 (table_a)
,触发器就会从 (table_b)
插入包含与批号相同的列值的 (table_c)
行。
这似乎很慢,有时会冻结我服务器上的操作。我发现从本地服务器的 table 插入似乎 运行 没问题,所以我怀疑问题是因为它从链接服务器插入。
如何提高插入速度?
应始终尽可能快地编写触发器,以避免出现此问题。理想情况下,不应在触发器内执行任何类型的密集操作。当操作涉及联系其他服务器时,这会加倍适用,因为这很容易耗费实时。
而是使用服务或代理将操作排队并在触发器外部处理您的队列。
队列可能看起来像 table 中的一条记录,一旦处理就会被标记。记录需要包含足够的信息以便服务执行相关操作,这些信息可以包含在存储过程中。
我有三个table:
(table_a)
有一个 AFTER INSERT 触发器,可将另一个 table (table_b)
中的行从链接服务器插入到本地 table (table_c)
.
只要将批号插入 (table_a)
,触发器就会从 (table_b)
插入包含与批号相同的列值的 (table_c)
行。
这似乎很慢,有时会冻结我服务器上的操作。我发现从本地服务器的 table 插入似乎 运行 没问题,所以我怀疑问题是因为它从链接服务器插入。
如何提高插入速度?
应始终尽可能快地编写触发器,以避免出现此问题。理想情况下,不应在触发器内执行任何类型的密集操作。当操作涉及联系其他服务器时,这会加倍适用,因为这很容易耗费实时。
而是使用服务或代理将操作排队并在触发器外部处理您的队列。
队列可能看起来像 table 中的一条记录,一旦处理就会被标记。记录需要包含足够的信息以便服务执行相关操作,这些信息可以包含在存储过程中。