- - PR -
WebアプリからSQLへのアクセスについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-05-08 16:34
ASP.NETでSQL2005にアクセスするアプリケーションを作っています。
SQLサーバー認証でつなぐ場合、たとえばIDをABCとすれば、 100人がWebアプリからつなぎにきても、SQL上のユーザーはABCの 一人になりますが、処理のパフォーマンスとしては、接続ごとに 別ユーザーとしてつないだほうが高いのでしょうか? それともあまり変わらない、もしくは分けた方が下がるとかでしたら、 現状のままで問題ないのですが・・・ 色々なページを見てもいまいちはっきりしないもので。。。 アドバイス宜しくお願いします。 | ||||
|
投稿日時: 2008-05-08 17:16
理論上同じユーザーのほうが早いと思います。
1)ユーザー認証、権限認証の部分少し早くなると思います。 2)コネクションプーリングを使う場合、接続文字列が違ったら、コネクションの使い回しできないと思います。 以上個人の見解です。 100%正しいとは保証できませんのでご了承下さい。 [ メッセージ編集済み 編集者: 無名tiger 編集日時 2008-05-08 17:30 ] | ||||
|
投稿日時: 2008-05-09 09:08
アドバイスありがとうございます。
確かに仰るとおり、同じユーザーであれば、 セッションが切れるまで(デフォルト30秒?)認証が入らない為、 理論上は早くなるという意見には大納得です。 大変参考になりました。 ありがとうございました。 | ||||
|
投稿日時: 2008-05-09 19:26
(もう終わっていると思いますが)
100人分のユーザーがいた場合 新しいユーザーなら追加、ユーザーがいなくなれば削除する?(手で?) パスワードは誰が決めるの?(誰が?) | ||||
|
投稿日時: 2008-05-09 23:25
もし分けたほうが早いのであれば、
考えていたやり方としては、もちろん不特定多数なので全員は無理ですが、 100ほどIDを作っておき、(ABC+数字(1〜100)など) つなぐタイミングで数字の部分はランダムで1〜100をはじき、 それぞれ異なる(全部ではないですが)ユーザーで繋ごうかと 考えておりました。 ですので、削除するのではなく、あらかじめ作っておいた複数のIDを ユーザーで使いまわそうかなと。。。 | ||||
|
投稿日時: 2008-05-10 17:52
DB に接続する user を分けた場合の利点としては、下記のものがあると思います。
ご参考までに。 _________________ | ||||
|
投稿日時: 2008-05-11 21:59
え?どういう意味ですか?無名tigerさんは、そんなことおっしゃってないと思います。 「セッションが切れるまで」の“セッション”とは、ASP.NET のセッションのことでしょうか?そうであれば、セッションが切れても接続は残っていますよ? それとも、データベースとのセッションのの事でしょうか?それって、30秒で切れるんだっけ?いや、「認証が入らない」ってのがわからないなぁ。 Open して Close しても、デフォルトの設定では、データベース側は「接続されている」と認識したままです(データベース セッションは保持されている)。このとき、ADO.NET が接続を、「接続プール」と呼ばれるところに保持しています。同じ接続文字列で Open をすると、このプールから接続が渡されます。したがって、ASP.NET のセッションが切れていようが別のセッションだろうが、接続プールから渡される接続を使う限り、認証は行われません。 しかし、ASP.NET は、一度に複数の人がアクセス可能です。誰かが Open して、Close していなければ、接続プールに接続情報がないため、もう一つ、データベース セッションが作られます。このとき、認証が行われます。 また、接続プールを使わないようにしている場合は、Open ごとにセッションが作られ、Close ごとに破棄されます。 Server 製品のライセンスの方が問題になるんじゃないかと思います。 追加 「ADO.NET が」って、ちげー。ODP.NET などの接続に使っているもの、ですね。 [ メッセージ編集済み 編集者: Jitta 編集日時 2008-05-11 22:02 ] | ||||
|
投稿日時: 2008-05-13 14:52
アドバイスありがとうございます。
私の書き方が下手で申し訳ないですが、 要はJittaさんの仰ってることに近いことを言いたかっただけです。。。 セッションはDBのです。(たしかSQL2005はデフォルト30秒だったような・・・) ちなみに接続プールは使用しています。 使用しないとCPU使用率が厳しくなったので。 詳しい説明ありがとうございます。 |
1