0

我的软件需要很长时间才能将大约 2500 行添加到 SQL Server 2008 R2 中,但我在 2005 年遇到了同样的问题。

我没有使用事务,我不需要太多的性能,但我不明白为什么时间执行不是恒定的。

每个插入都会创建新的SqlCommandand SqlConnection,池化设置为 true。

通常插入需要 3/4 毫秒……但每插入 3/4 次我就有 200 毫秒的执行时间!!!

这意味着我需要更多的 200 毫秒来插入 3 或 4 行。

我正在使用 sql native 客户端从另一台电脑通过网络工作,在本地机器上运行相同的应用程序,它的工作速度要快得多。

4

1 回答 1

0

使用批量插入

我不确定您是否使用 MS Enterprise Libraries,您可以执行以下操作:

using (DbConnection connection = db.CreateConnection())
{
     connection.Open();
     DbTransaction transaction = connection.BeginTransaction();

     try
     {

          // insert a bunch of rows here. You could try to insert all 2500, but that leaves your transaction open for the whole duration. Or you could break it into 100 inserts. Test it out to see what suits your application better.
          transaction.Commit();
     }
     catch (Exception ex)
     {
          transaction.Rollback();
     }
     connection.Close();
}

要点是,如果您对一堆插入使用相同的事务而不是每次插入一个事务,那么您将更少地写入日志,从而使其更快。

于 2013-03-21T17:22:44.567 回答