2012-02-29 25 views
0

私のサーバー上で7つのXMLパーサー(サードパーティのWebサイトからデータを取得)を実行しています。SQL Serverのパフォーマンスの問題

私は各XML Parserを別々に実行しているとき、15MBのXML(これはかなり巨大です)を実行するのに約1分かかります。

私は7人を一緒に走らせると、走り終わるのにそれぞれ約10分かかります。

各XMLは、DBに多くの情報を追加し、約50,000のクエリを実行しています。

私は上の私のパーサを実行していますサーバーは、次のとおりです。

  • サーバーの種類:HP DL180 G6の
  • プロセッサの種類:インテルXeonプロセッサE5504
  • プロセッサ速度:2000 MHzの
  • CPUの数:コアの2
  • 番号:4
  • RAM:16ギガバイト

2 CPUでSQL Server Web Editionを実行

すべてのパーサーが並行して実行されると、SQL ServerのCPUが100%になるという問題が発生します。

そして、本当に大きな問題は、私は将来的には50のXMLパーサの周りに持っている必要があるということです:(

あなたのアドバイスのみんなは?私は何を多分XMLサーバをアップグレード?またはサーバー自体なければならないのですか?

はたぶん、SQL Serverがどのように私は?

が何かアドバイスが役立つだろう...

+0

少ないパーサーを一緒に実行してみてください。コアが4つの場合は、4回または3回の解析を一度に実行します。 – TcKs

答えて

1

iがどのXML 60万行を持っていた。同じ問題を抱えていたことを確認することができますか?1つのCPU上ではなく2 CPUの上で実行されています1時間後も処理が完了しなかった。 私のために働いたのは、XMLを小さなチャンクに分割し、チャンクを一時テーブルに挿入することでした(私のXMLはテレビの靴で200個の異なるチャンネルに分割されていました)。

+0

それは私がやったこと!私はサッカーの試合スケジュールのXMLを解析しているので、今は小さなチャンク(それぞれ別々にマッチ)で解析していますが、それはより速く動作しますが、一緒に走るとCPUは非常に高くなります。 ..他のアイデアかもしれない? –

+0

私はDBAでこれを解決しようとしましたが運がありませんでした。私はXMLエンジンが大きなXMLに問題があると思う。私は一時テーブルに泊まっています。それは私のために良い仕事 – uriz

0

CPUが100%であっても、ボトルネックはI/Oだと思います。特に、ディスクに同時にデータを読み書きするプロセスが複数あると言われています。サーバーのI/Oを確認できますか?

プロセスが異なるテーブルにヒットしている場合は、ファイルグループを使用してDBを別のHDに分割するなど、何かできることがあります。

同じテーブルにヒットしている場合は、パーザAが同じテーブルパーサーBにデータを読み込もうとするときにブロッキングの問題が発生する可能性があります。私は、これを実際に問題があるかどうかをテストして調べることをお勧めします。分離レベルがコミットされていない状態でプロセスを実行しています。正常に実行されている場合は、問題が何だったのか分かります。

+0

こんにちはディエゴ、コメントありがとう!あなたは私が何をすべきかもっと説明できますか?私は100%理解しなかった。 パーザはXMLを一度メモリに読み込み、すべての要素についてループ処理を実行しているため、基本的には(DB自体のほかに)ディスクには何も保存されません。 あなたが言ったように、私は3つのテーブル(すべてのパーサー)を扱っています。 –

+0

しかし、あなたは "それぞれのXMLはDBに多くの情報を追加しており、約50,000のクエリを実行しています。私はいくつかのインサートを実行してDBに選択していることを理解しました。複数のプロセスがあるので、おそらくリソースのために戦っています。 とにかく、私の提案は、あなたのパーサに「コミットされていないトランザクションの読み取りレベルを設定する」を追加して、ブロッキングの原因にならないようにして、これが本当の問題かどうかを確認することでした。 – Diego

+0

どうすればいいですか?私はあなたが推測できるようにDBAではない:) –

関連する問題