0

私のソフトウェアでは、SQL Server 2008 R2 に約 2500 行を追加するのに時間がかかりますが、2005 でも同じ問題があります。

私はトランザクションを使用していません。あまりパフォーマンスは必要ありませんが、実行時間が一定でない理由がわかりません。

すべての挿入により、新しいSqlCommandandが作成SqlConnectionされ、プーリング セットが true になります。

通常、挿入には 3/4 ミリ秒かかります...しかし、3/4 挿入ごとに 200 ミリ秒の実行時間を得ました!!!

これは、3 行または 4 行を挿入するには 200 ミリ秒以上必要であることを意味します。

SQLネイティブクライアントを使用して別のPCからネットワーク経由で作業しており、ローカルマシンで同じアプリケーションを実行すると、はるかに高速に動作します。

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();
}

要点は、挿入ごとに1つのトランザクションではなく、一連の挿入に同じトランザクションを使用すると、ログへの書き込みが少なくなるため、高速になります。

于 2013-03-21T17:22:44.567 に答える