2013-11-15 71 views
1

我正在计划一个应用程序与许多移动设备周期性地连接到SQL服务器并发送INSERT到100个记录块,包裹在一个事务中(100-记录块用于最小化网络开销,因为按记录插入记录是非常慢)。可以有多达20-30个设备同时发送数据。问题,我找不到明确的答案是 - 直到单个事务提交(所以其他设备必须等待)或多个事务并行运行之前,SQL Server是否阻止目标表?目前的测试表明,表被阻塞,直到事务提交,这有时会导致设备上的超时错误。将事务级别设置为“读取未提交”对INSERT语句有什么影响? (我不在乎“脏读”)。许多同时插入 - 最佳策略?

+0

1 - 如果你花了很长时间来插入100条记录,你几乎可以肯定是做错了。如果你一次只做这一行,你可能需要将你的逻辑转换为使用MERGE命令(2008+) –

+0

Gary,当应用程序插入时,它发生得很快,对于那100条记录来说,最多只有一秒。现在的问题是,客户“排队”并等待他们的事务开始,然后死于超时错误。 –

+0

以1秒为单位插入100条记录对于基于集合的操作来说非常慢。您的问题不清楚,是每个连接发送成千个记录块的成千上万的记录,或者是每个连接发送100个记录块。 –

回答

0

停止将您的1500个记录批次分成100个记录批次。使用单个大容量插入语句插入全部1500条记录。这几乎肯定是最快的方法。如果你不能使用这种方法,你应该解释为什么