sql-server - 来自链接服务器的另一个表的 INSERT 触发器很慢
问题描述
我有三张桌子:
(table_a)
有一个 AFTER INSERT 触发器,它将(table_b)
来自链接服务器的另一个表中的行插入到本地表中(table_c)
。
每当将批号插入(table_a)
时,触发器就会将 from(table_b)
插入到(table_c)
包含与批号相同的列值的行中。
这似乎很慢,有时会冻结我服务器上的操作。我发现从本地服务器的表中插入似乎运行良好,所以我怀疑问题是因为它是从链接服务器插入的。
如何提高插入速度?
解决方案
触发器应始终尽可能快地写入,以避免出现此问题。理想情况下,不应在触发器内执行任何类型的密集操作。当操作涉及联系其他服务器时,这会加倍适用,因为这很容易最终会占用实时时间。
而是使用服务或代理将操作排队并在触发器之外处理您的队列。
队列可能看起来像表中的记录,一旦处理就会被标记。记录需要包含足够的信息以供服务执行相关操作,这些信息可以包含在存储过程中。
推荐阅读
- python - Bitmex Api 授权
- c# - 使用 Dapper 从数据库中检索用户 ID 失败
- c# - ef core new dbcontext 只执行一次 OnModelCreating
- java - 当我触摸用户开始聊天时出现问题
- php - 在同一个 HTML 表格中使用不同的数组变量来显示数据
- jquery - 从 Ajax 请求解析 Json 数据时出错
- c - 具有共享数据的 OpenMP 递归任务导致速度大幅下降
- angular9 - ngcc 中的错误已在 id xxxx 的进程中运行
- kubernetes - Apache Flink 作业未在 Kubernetes(副本)中的多个 TaskManager 上调度
- airflow - Airflow - 一次从 dags_folder 中清除所有已删除 DAG 文件的 Web UI 中的所有 DAG 条目