0

最近、古い Core2Duo 2.93 GHz PC から新しい Core i7-3820 3.6 GHz マシンに .NET 開発を移しました。プロジェクト コードやデータベース レイアウトは変更されていません。どちらのマシンも、同じ SQL Server 2012 Express with Advanced Services (LocalDB ではない) を使用しています。

INSERT INTO コマンドの大幅な速度低下が見られます。古いマシンでは 1 行あたり 1 ~ 2 ミリ秒かかっていましたが、新しいマシンでは 8 ~ 9 ミリ秒かかります。私が見つけた唯一の修正は、1 つのコマンドで複数の行の挿入を使用することでした。これにより、コマンドのオーバーヘッドが多くの行に分散されるようです。SQL Server 2008 R2 と同様に、SQL Server 2012 では、1 つのコマンドでの行数の制限は 1000 です: http://msdn.microsoft.com/en-us/library/dd776382.aspx

ただし、複数行の回避策はすべてのシナリオに適用できるわけではありません。たとえば、行ごとに行われ、完了するまでに長い時間がかかるテーブル アダプターの更新などです。

誰もこの問題を経験しましたか? どうすれば解決できますか?

4

2 に答える 2

0

CPUは間違いなく優れていますが、ディスクIOはどうですか?インサートは明らかにそのサブシステムに依存しています。

たまたまこの記事を読んでいたところですhttp://www.altdevblogaday.com/2012/05/16/sql-server-high-performance-inserts/

テーブル値パラメータはパフォーマンスを劇的に向上させることができるようです

コメントは、いくつかの印象的な数字を持っている次のページにつながります。

コメントでhttp://florianreischl.blogspot.de/2012/03/performance-comparison-of-sql-server.html

私はまだこれを自分で使用していませんが、2008年以降の場合、tvpはクライアントからSQLサーバーにデータを送り出す方法のようです。

于 2012-05-21T15:02:37.237 に答える
0

正直に言うと、レコードを一度に 1 つずつ書き込むのは常に遅いです。アーキテクチャに収まる場合は、行をテキスト ファイルに書き込んでから一括挿入することを検討してください。そうすれば、パフォーマンスが大幅に向上します。

于 2012-11-21T20:13:37.430 に答える