我正在尝试诊断 SqlBulkCopy 的性能问题。
我的代码中有一点,大多数时候,插入一行,但有时可以插入数百行,大多数情况下它运行良好,即使对于大型案例也能在不到一秒内完成,但是偶尔这段代码需要 10 秒来插入一行,我们怀疑它在我们的测试环境中超时,服务器负载很重(90%+ cpu 使用率)导致测试随机失败。
我无法想象是什么导致批量插入需要 10 秒才能插入一行,我应该如何诊断导致这种情况的原因?
Using bulk As New SqlBulkCopy(CType(Me._connection, SqlConnection), SqlBulkCopyOptions.Default, trans)
bulk.BulkCopyTimeout = Me.commandTimeout
For Each column As DataColumn In insertTable.Columns
bulk.ColumnMappings.Add(column.ColumnName, column.ColumnName)
Next
bulk.DestinationTableName = destinationTable
bulk.WriteToServer(insertTable)
Dim statistics = CType(_connection, SqlConnection).RetrieveStatistics()
End Using
这些是我从 RetrieveStatistics 获得的统计数据: