- PR -

.NETのコンソールアプリからストアドプロシジャーへ移行

1
投稿者投稿内容
よねちん
ベテラン
会議室デビュー日: 2002/09/18
投稿数: 55
投稿日時: 2004-02-26 19:09
Sqlserver2000+.NETコンソールアプリ+ADO.NETで作成した
処理があります。

その処理の高速化を試みたいのです。

当然、KEY部の見直しやSQLの見直しも当然行うつもりなのですが
その前にストアドプロシジャーにしてみることを検討しています。
その場合にどのくらい高速になるかが非常に興味があるところな
のですが、どなたかコンソールアプリとストアドプロシジャーと
で処理速度を比較したことがある方がいましたら、どのくらいの
性能がでるか教えてください。

また、処理がどんなのかが問題かと思いますが高速化に関して
他の方法があるよという方がいましたらご教授願います。
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-02-27 10:32
とりあえずどんな処理をしているのかがわからないのでどれだけ高速ができる
は回答できませんが、高速化のポイントとしては

・サーバーとのやりとりを減らす
・サーバーの処理を早くする

だと思います。
ストアドはサーバーのやり取りを減らすのには有効ですが、それはクライント側で行っていた
処理をどれだけストアドでやるかにかかってきます。

あとSQLServerを使用しているならクエリアナライザで使用しているSQLのコストを調査して
みるのもいいかもしれません。
よねちん
ベテラン
会議室デビュー日: 2002/09/18
投稿数: 55
投稿日時: 2004-02-27 17:57
ゆうじゅんさんレスありがとうございます。

>ストアドはサーバーのやり取りを減らすのには有効ですが、それはクライント側で行っ>ていた
>処理をどれだけストアドでやるかにかかってきます。

状況を申しますと、今のコンソールアプリはサーバで稼動しているのです。
なのでストアドにしてどれくらいの向上が見込めるか不明なんです。

あとそのコンソールアプリのつくり方は昔COBOLから移行したもので
データの更新も1件づつやっており、一括クエリーなどは使用して
ないものなので、その辺を解析してレスポンスを上げることをしな
ければならないのです。

ただコンソールアプリからストアドに移行した方がいいか迷ってます。
あまり意味がないものであれば、コンソールアプリのまま、一括更新
ができるようにプログラムを組みなおししたいと思ってます。

コンソールアプリとストアドで同じサーバ上で流す場合にはどちらの
方がレスポンスが良いのでしょうか?


ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-02-27 18:18
すみません、書き方が悪かったみたいです。

データベースサーバー上で動いていたとしてもコンソールアプリとデータベースを管理する
プログラム(SQLServerとかOrcle:以降DBソフト)とのやり取りが発生します。

たとえばコンソールアプリ側で100件読んで100件レコードを変更した場合
最低200回DBソフトとのやり取りが発生します。

これがクエリの工夫で1回のクエリで処理ができるようになればDBソフトとのやり取りが
1回ですむのでストアドにするメリットはあまりありません。

ただ内部処理上クエリの変更ができない(100件読んで100件レコードを変更)の場合
その処理をストアドでやってもらえば、アプリがDBソフトとやり取りするのは
ストアドの起動時1回だけです。この場合はストアドにするメリットは十分あります。

(追加)
ただストアドに移行するまえにクエリやインデックスの見直しをしたほうがいいかもしれません
特にインデックスは改造がすくなく効果的に速度改善される可能性がありますので

[ メッセージ編集済み 編集者: ゆうじゅん 編集日時 2004-02-27 18:24 ]
1

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