- PR -

処理の重いSQLを発行すると画面が固まってしまう

投稿者投稿内容
走り幅跳び
常連さん
会議室デビュー日: 2007/02/27
投稿数: 36
投稿日時: 2007-05-29 14:40
非同期呼び出しは今の自分の技術では難しいと思いまして、試しませんでした。

副問い合わせは使用しています。
SQLを変更して副問合せを行わない方法も考えた方が良いみたいですね。

SQL処理はだいたい40秒くらいです。SQL Plusからやってもだいたい同じくらいです。
今回導入した部門のサーバー性能が低いため、特に遅いです。
他に導入した部門では数秒で処理が完了していました。
遅い1つの部門のためにプログラムを大きく変更するのが嫌でしたので、
ユーザーが、画面が固まったのか処理中なのか判断がつく程度で良いので
何か簡単な方法があればと思ったのですが。
めだか
大ベテラン
会議室デビュー日: 2004/11/11
投稿数: 109
投稿日時: 2007-05-29 14:56
ただ単に「処理中です・・・」みたいなフォームを前面に出して
終わったら消せばいいんじゃない?
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-05-29 15:32
引用:

SQL処理はだいたい40秒くらいです。SQL Plusからやってもだいたい同じくらいです。
今回導入した部門のサーバー性能が低いため、特に遅いです。
他に導入した部門では数秒で処理が完了していました。
遅い1つの部門のためにプログラムを大きく変更するのが嫌でしたので、
ユーザーが、画面が固まったのか処理中なのか判断がつく程度で良いので
何か簡単な方法があればと思ったのですが。



クライアント側の努力でサーバ処理を速くすることはできないので、

・遅いサーバを早いサーバに交換する
・SQL 実行を非同期呼び出しにする
・SQL 実行を BackgroundWorker を使ってワーカスレッドに実行させる

なんて辺りが現実的な対応と思います。
もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2007-05-29 15:47
引用:

なごやさんの書き込み (2007-05-29 14:40) より:

副問い合わせは使用しています。
SQLを変更して副問合せを行わない方法も考えた方が良いみたいですね。



副問い合わせだから遅い、ということも無いかと思いますが...。

引用:

なごやさんの書き込み (2007-05-29 14:40) より:

SQL処理はだいたい40秒くらいです。SQL Plusからやってもだいたい同じくらいです。
今回導入した部門のサーバー性能が低いため、特に遅いです。
他に導入した部門では数秒で処理が完了していました。



データベースに関する調査って何か試されたんでしょうか。
何でもデータベースのチューニングで片付くわけではありませんが、
アプリケーションを修正したりするまえにデータベース側で
ある程度チューニングしておくのがコストもかからなくて
よいかと。

# ま、時間がかかっても問題ないということであれば、チューニングに
# コストをかけないというのも選択肢になりますが。

_________________
もしもし@RMAN 友の会
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-05-29 16:12
あれこれ現場の技術者が2〜3日調査すると、
コスト的に軽く10万以上かかると思いますが、
案外数万のメモリを足せば即解決したりして。
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2007-05-29 16:23
引用:

今回導入した部門のサーバー性能が低いため、特に遅いです。
他に導入した部門では数秒で処理が完了していました。


これが事実ならなんで今回導入した部門だけ低い性能になったのかが
著しく疑問なんですが…

ハードのボトルネックを探してメモリで解決するなら
メモリ追加が一番早い様な。


[ メッセージ編集済み 編集者: NAO 編集日時 2007-05-29 16:24 ]
走り幅跳び
常連さん
会議室デビュー日: 2007/02/27
投稿数: 36
投稿日時: 2007-05-29 16:52
画面が固まるとユーザーからのクレームがありましたので
メッセージ表示等はなるべくやめようかと思っていました。

DBのチューニングはDBの知識が浅いため、ほとんどしていませんが、
もう少し勉強してみようと思います。

導入しているシステムは、部門ごとに持っている自サーバーを使用するのですが、
今回導入するとろだけサーバーがすごく古いんです。
まだサーバー更新まで半年以上あるそうなので何とかしようかと思いましたが、
更新まで我慢して使ってもらおうかと思います。

アドバイスいろいろありがとうございました。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-05-29 21:55
引用:

なごやさんの書き込み (2007-05-29 14:40) より:
非同期呼び出しは今の自分の技術では難しいと思いまして、試しませんでした。

なごやさんの書き込み (2007-05-29 16:52) より:
画面が固まるとユーザーからのクレームがありましたので
メッセージ表示等はなるべくやめようかと思っていました。


.NET Framework のバージョンがわかりませんが、2.0 からは簡単にスレッドを扱える BackgroundWorker クラスが提供されています。
@ITのこの記事がわかりやすいかな。
http://www.atmarkit.co.jp/fdotnet/dotnettips/436bgworker/bgworker.html

引用:

なごやさんの書き込み (2007-05-29 16:52) より:
DBのチューニングはDBの知識が浅いため、ほとんどしていませんが、
もう少し勉強してみようと思います。


チューニングされていない DB に適切な Index を張るだけで数十パーセント早くなる。
なんていうのはざらにあるので、パフォーマンスが気になるならぜひやってください。
_________________
かるあ のメモスニペット

スキルアップ/キャリアアップ(JOB@IT)