使用带有 SQL Server 2008 的实体框架,我们有一个写入大量数据的应用程序,例如每分钟 1000 行新行,每行都在它们自己的 DBContext.saveChanges 调用中(我们没有将它们批处理在一起)
问题是我们的写作落后了,远远落后。以至于事情似乎在颠簸。例如,我们将在两分钟内用新行调用 saveChanges 数千次,并且不会进行一次写入,然后突然之间我们将获得少量写入(但很多都完全丢失了)。
我们进行了 SQL 跟踪,发现 SQL 甚至在 10% 的 saveChanges 调用中都没有收到写入命令。
因此,在 saveChanges 和 SQL Server 之间似乎存在问题。我想知道这个电话是如何工作的。它使用线程池吗?排队?一些我们可能会溢出的缓冲区?也许由于写入量很大,它默默地失败了?
MSDN 在解释这些东西的实际工作原理方面毫无用处