我想要尽可能高效地插入到数据库中,并且有大量不断传入的数据(每分钟大约10,000个,并且正在增长)。目前我正在使用准备好的插入语句,但我正在考虑使用SqlBulkCopy类以更大的块导入数据。快速插入;使用关系数据的BulkCopy
问题是我没有插入到单个表中 - 数据项的元素被插入到许多表中,并且他们的标识列被用作同时插入的其他行中的外键。我知道批量复制并不意味着允许更复杂的插入,但我想知道是否值得在uniqueidentifier列中交换我的身份列(在这种情况下是bigint)。这将允许我为每个表执行几个批量复制,并且由于我可以在插入之前确定ID,所以我不需要检查SCOPE_IDENTITY之类的任何内容,这些内容阻止我使用批量复制。
这听起来像是一个可行的解决方案,或者我可能会遇到其他潜在问题吗?或者,还有另一种方法可以快速插入数据,但保留使用bigint标识列吗?
谢谢。
“创建这样一个可以持续且可靠工作的过程很难...”没错,但是如果你在数据库之外的一个单独的非共享应用程序中执行它,它会容易得多。没有争用,没有竞争条件,没有交易。 –
我尝试了GUID,获得了10倍的性能(approp。10,000 inserts per second)。 :) – Barguast