首页 > 解决方案 > 从不同服务运行 UPDATE 和 INSERT 查询时的性能问题

问题描述

当我在同一张表上运行来自不同 Windows 服务的频繁/批量 INSERT 查询和 UPDATE 查询时,我遇到了性能问题。使用 C# 和 SQL Server。

我使用相同的连接字符串,但我在不同的程序上运行查询。解决此问题的最佳方法是什么?

我想我可以使用存储过程来进行查询,而不是许多 INSERT 和 UPDATE。

或者可能有一种方法可以检查表何时被另一个进程占用并稍等片刻?

当我停止其中一项服务时,对 UPDATE 服务的查询速度会快两倍多。

查询是这样的:

开启服务1:

INSERT INTO table1 (id, First, Last)
VALUES
('Fred', 'Smith'),
('John', 'Smith'),
('Michael', 'Smith'),
('Robert', 'Smith');

在服务 2

UPDATE table1
SET First = 'Alfred'
WHERE id IN (1, 3, 100, 34 ....);

表 1 遵循 QUEUE 模型。服务 1 插入 10 条记录。服务 2 从同一个表中获取队列的最后一个元素,并在一些计算后更新信息。这在两种服务上每 2-3 秒发生一次。

主要问题是它们很难同步。因此,同一张表上的一个查询可能需要花费大量时间,但同时另一个服务开始执行他的查询,因此由于这种开销,整体时间很慢。

标签: sql-serverperformance

解决方案


推荐阅读