- - PR -
処理の重いSQLを発行すると画面が固まってしまう
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-05-29 14:40
非同期呼び出しは今の自分の技術では難しいと思いまして、試しませんでした。
副問い合わせは使用しています。 SQLを変更して副問合せを行わない方法も考えた方が良いみたいですね。 SQL処理はだいたい40秒くらいです。SQL Plusからやってもだいたい同じくらいです。 今回導入した部門のサーバー性能が低いため、特に遅いです。 他に導入した部門では数秒で処理が完了していました。 遅い1つの部門のためにプログラムを大きく変更するのが嫌でしたので、 ユーザーが、画面が固まったのか処理中なのか判断がつく程度で良いので 何か簡単な方法があればと思ったのですが。 | ||||||||
|
投稿日時: 2007-05-29 14:56
ただ単に「処理中です・・・」みたいなフォームを前面に出して
終わったら消せばいいんじゃない? | ||||||||
|
投稿日時: 2007-05-29 15:32
クライアント側の努力でサーバ処理を速くすることはできないので、 ・遅いサーバを早いサーバに交換する ・SQL 実行を非同期呼び出しにする ・SQL 実行を BackgroundWorker を使ってワーカスレッドに実行させる なんて辺りが現実的な対応と思います。 | ||||||||
|
投稿日時: 2007-05-29 15:47
副問い合わせだから遅い、ということも無いかと思いますが...。
データベースに関する調査って何か試されたんでしょうか。 何でもデータベースのチューニングで片付くわけではありませんが、 アプリケーションを修正したりするまえにデータベース側で ある程度チューニングしておくのがコストもかからなくて よいかと。 # ま、時間がかかっても問題ないということであれば、チューニングに # コストをかけないというのも選択肢になりますが。 _________________ もしもし@RMAN 友の会 | ||||||||
|
投稿日時: 2007-05-29 16:12
あれこれ現場の技術者が2〜3日調査すると、
コスト的に軽く10万以上かかると思いますが、 案外数万のメモリを足せば即解決したりして。 | ||||||||
|
投稿日時: 2007-05-29 16:23
これが事実ならなんで今回導入した部門だけ低い性能になったのかが 著しく疑問なんですが… ハードのボトルネックを探してメモリで解決するなら メモリ追加が一番早い様な。 [ メッセージ編集済み 編集者: NAO 編集日時 2007-05-29 16:24 ] | ||||||||
|
投稿日時: 2007-05-29 16:52
画面が固まるとユーザーからのクレームがありましたので
メッセージ表示等はなるべくやめようかと思っていました。 DBのチューニングはDBの知識が浅いため、ほとんどしていませんが、 もう少し勉強してみようと思います。 導入しているシステムは、部門ごとに持っている自サーバーを使用するのですが、 今回導入するとろだけサーバーがすごく古いんです。 まだサーバー更新まで半年以上あるそうなので何とかしようかと思いましたが、 更新まで我慢して使ってもらおうかと思います。 アドバイスいろいろありがとうございました。 | ||||||||
|
投稿日時: 2007-05-29 21:55
.NET Framework のバージョンがわかりませんが、2.0 からは簡単にスレッドを扱える BackgroundWorker クラスが提供されています。 @ITのこの記事がわかりやすいかな。 http://www.atmarkit.co.jp/fdotnet/dotnettips/436bgworker/bgworker.html
チューニングされていない DB に適切な Index を張るだけで数十パーセント早くなる。 なんていうのはざらにあるので、パフォーマンスが気になるならぜひやってください。 _________________ かるあ のメモ と スニペット |