设置
我有一个简单的 SQLDataReader 配置为带回给定表中的每一行。
我正在使用 SQLDataReader,因为我希望将内存占用保持在相对较低的水平。
对于检索到的每一行,我对一些数据进行了简单的更改,并将其用作我立即执行的更新的基础。
通过这种方式,我可以将一个简单的计算函数应用于 aa 表中的每条记录。
它什么时候起作用?
这在我的本地数据库上运行良好。它也适用于位于另一台服务器上的测试数据库。
什么时候不起作用?
如果我恢复我们的实时数据库的副本,则该过程无法正确执行,在第一次尝试执行更新时遇到超时。
有什么不同吗?
LiveBackup 和 Test 之间的唯一区别似乎是其中的记录数。Test 数据库有 4823 条记录,LiveBackup 有 10182 条记录。
此外,如果我在 SQLDataReader 中引入标准,使其从 LiveBackup 系统检索有限数量的记录(1000 条左右),它会立即开始工作
理论
似乎有可能引入了某种锁,但我真的看不出在哪里。
我很感激我可以简单地将记录分成 1000 个批次,但这仍然会让我不明白究竟是什么导致了我的问题。
当我的 SQLDatareader 处理大量记录时,为什么会在更新(处理单个记录)时发生超时?