
1台のPCで発生している問題です。SQLServerで、Select命令は即戻ってくるのですが、Insertの処理は遅く、1件に2秒くらいかかっており、理由が分からず困っています。他のPCからは、SelectもInsertも問題ありません。
<SQLServer環境>
・バージョン:SQLServer2005 Express
・OS:WindowsXP
・ポート番号:1433固定
<クライアント環境>
・OS:Windows7
※問題の発生しているPCも、問題の発生しないPCも、共に同じOS・同様のスペックです。
<当方でテストした内容>
※全テストで、実行前にテーブルはtruncateし、トランザクションは未使用で実行しています。
(1) 1件づつ Insertし、計3000件を登録
→問題発生PCでは、1件に2秒くらいかかる。問題なしPCでは、3秒くらいで全て終了
(2) sqlBulkCopyを利用し、配列変数に格納したデータ計3000件を一括登録 (配列格納後に測定)
→問題発生PCでは、15秒で30件くらい。問題なしPCでは、3秒くらいで全て終了
(3) bcpin で、テキストファイルの計3000件を登録
→問題発生PCでは、30秒くらい経っても開始されず。問題なしPCでは、1秒くらいで全て終了
(4) Select命令発行
→問題発生PC、問題なしPC 共に、1秒くらいで全て終了。
(5) bcpout で、テーブルより計3000件をテキストファイルに落とす
→問題発生PC、問題なしPC 共に、1秒くらいで全て終了。
bcpinについては、ためしに、 -S IPアドレス\Express,1433 と、ポート番号を付けて実行もしてみましたが、結果は同じで、問題発生PCでは、開始に時間がかかり、問題なしPCでは即終了しました。
以上の結果より、問題なく動くクライアントもあるため、Server側の問題ではなく、問題発生クライアントPCの環境に問題があるのではないかと思っていますが、SQLServerの接続、Selectやbcpoutには問題なく、Insertやbcpinといったデータ挿入のみが遅いという点で、何に問題があるのか、さっぱり検討がつきません。
このような場合、どういった点を調査したらよいのでしょうか?
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
遅くなってすみません。
ありがとうございます。教えてもらった「謎のおまじない」ですが、実は既に実行済みで、結果は変わらずでした(悲)。
ADOでのInsertはともかく、BCPでも遅いので、やはりPC環境だと思います。
そちら回りを再度調べてみようと思います。
レスいただき、有難うございました。
また困ったときは、よろしくお願いします。
No.1
- 回答日時:
> (1) 1件づつ Insertし、計3000件を登録
> →問題発生PCでは、1件に2秒くらいかかる。問題なしPCでは、3秒くらいで全て終了
ADO.NETのExecuteNoQueryの応答が2秒ですか?
均一に2秒ですか?徐々に遅くなって平均2秒ですか?
> 調査
SQL Server 2005 Express Profiler
http://www.atmarkit.co.jp/fdotnet/dotnettips/744 …
この回答への補足
はい。3000件ループさせて、ADO.NETのExecuteNoQueryでInsertを実行。Insert命令の直後に測定しました。
1件目から2秒程度かかります。徐々に遅くなることなく、だいたい均一で2秒くらいかかってます。
教えて頂いたプロファイラで、Inser処理がSQLServer側に到達していることは確認できました。
しかし、到達にやはり時間がかかっています。ためしにSELECT命令も実行してみたところ、やはり即到達しており、こちらは問題ありません。
なので、クライアントPCからSQLServerへ到達するまでの通信に問題がありそうです。
(ただし、SQLServer接続・SELECTには問題なし)
何か、お心当たりがありますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
TruncateしたテーブルへのInsertの遅さが気になる
Oracle
-
SELECT文でのデッドロックに対しての対処方
SQL Server
-
insertを高速化させたい
その他(データベース)
-
-
4
selectした大量データをinsertしたい
MySQL
-
5
オブジェクトブラウザでデータをエクスポート/インポートする方法
その他(データベース)
-
6
主キーにインデックスは貼らないと駄目でしょうか?
SQL Server
-
7
DataTableに入っているデータを全てinsertしたい!(C#)
Microsoft ASP
-
8
3つ以上のテーブルをUNIONするのは現時的でないでしょうか?
MySQL
-
9
エラーについて
SQL Server
-
10
テーブル列数とデータファイル列数の違うbcpインサートをしたい
SQL Server
-
11
ストアドをまたがるローカル一時テーブル
SQL Server
-
12
データを削除しても表領域の使用率が減りません
Oracle
-
13
排他ロックしたレコードが、別トランザクションから参照されてしまい困っています。
SQL Server
-
14
キャッシュを使わずにSELECTを投げたい
Oracle
-
15
select into句のトランザクションについて
SQL Server
-
16
select文の実行結果に空白行を入れたい
MySQL
-
17
DBの定義のサイズを大きくし過ぎると問題ある?
その他(データベース)
-
18
datetime型でNULL値を入れたい。
SQL Server
-
19
VIEWに対してWHERE句をつける
MySQL
-
20
VBAでSQLServerへのODBC接続
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECT文でのデッドロックに対...
-
SELECT時の行ロックの必要性に...
-
SQLServer Insertが遅い
-
MongoDBのデータ更新はDBを排他...
-
INSERTにおいてロック処理は必要か
-
更新ロックとデッドロック
-
ExcelからAccess2013DBを更新す...
-
AccessShareLock はどの程度気...
-
UPDATE文で発生するデッドロッ...
-
「マスタ」と「テーブル」の違...
-
accessで移動平均する方法
-
ACCESS2000のテーブル構造
-
請求と入金のテーブルの作成の...
-
SQLで○○の値以外を持っているレ...
-
accessのエクスポートエラーに...
-
ACCESS2007 フォーム 「バリア...
-
Accessにインポートしたら並び...
-
オラクルではできるのにSQLSERV...
-
SQLServerで同一条件レコードの...
-
2つのテーブルから条件に一致...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT文でのデッドロックに対...
-
SELECT時の行ロックの必要性に...
-
accessのロック
-
Oracleの排他制御について教え...
-
排他ロックしたレコードが、別...
-
SQLServer Insertが遅い
-
AccessShareLock はどの程度気...
-
INSERTにおいてロック処理は必要か
-
DB2でSelectした時(rollback,c...
-
SELECT文でタイムアウト...
-
トランザクション中にSELECTし...
-
ExcelからAccess2013DBを更新す...
-
更新ロックとデッドロック
-
UPDATE文で発生するデッドロッ...
-
DB2のロック調査
-
MongoDBのデータ更新はDBを排他...
-
ADOで排他ロックがうまくいかない
-
SELECT FOR UPDATE にトランザ...
-
同時書き込み
-
max+1で初番する場合 for updat...
おすすめ情報