Dav*_*ave 5 t-sql sql-server locking
我们有大约 7 个运行 .NET Windows 服务的应用程序服务器,它们对单个 sql server 2005 队列表执行 ping 操作,并以固定时间间隔获取固定数量的记录进行处理。要处理的记录量和提取之间的时间量都是可配置的,最初设置为 100 秒和 30 秒。
目前,我的队列表有一个 int status 列,可以是“就绪、处理、完成、错误”。获取记录的过程有一个sql事务,事务内有以下代码:
1)将x条记录提取到临时表中,其中状态为“Ready”。select 使用了 Holdlock 提示
2) 将队列表中这些记录的状态更新为“正在处理”
.NET 服务执行一些处理,每个记录可能需要几秒钟甚至几分钟的时间。每个记录调用另一个过程,它只是将状态更新为“完成”。更新过程没有事务,因为我在这里依靠隐式事务作为更新子句的一部分。
我不知道这方面的流量例外情况,但估计每天会低于 10k 条记录。
这是处理这种情况的最佳方法吗?如果是这样,我是否遗漏了任何细节,例如这里或那里的提示?
谢谢!戴夫
归档时间: |
|
查看次数: |
191 次 |
最近记录: |