sql-server - 从不同服务运行 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 秒发生一次。
主要问题是它们很难同步。因此,同一张表上的一个查询可能需要花费大量时间,但同时另一个服务开始执行他的查询,因此由于这种开销,整体时间很慢。
解决方案
推荐阅读
- firebase - 如何在没有 StreamBuilder 的情况下从 Firestore 检索实时日期
- json - Python requests.get 与 Session.get
- qt - QML VirtualKeyboard 即将出现在 Popup 之上
- django - Django Rest - 发布数据在外键引用表中创建新行
- batch-file - 批处理:如果源文件夹上的文件名包含 x,则移动到 x 目标文件夹
- google-cloud-platform - Firestore 云函数 http 请求
- javascript - 承诺不会在循环内返回
- python - 如何使用 Python 从两个绘制的图表中找到 RMSE?
- c++ - 为什么在成员初始化器列表中初始化数组时不需要括号?
- android - 如何在 Android Studio 中为图像按钮添加渐变颜色,中心颜色为最大