none
SQLServer2000 接続プール RRS feed

  • 質問

  • SQLServer2000、VC6、ADOで開発しているのですが、DBの接続プールは使えますでしょうか?

    ネットにて、ADO.NETやODBCでの接続プールに関する記述は見つけましたが、この環境で使えるのかわかりません。
    もし使用可能でしたら、具体的な設定方法などご教授いただけましたら幸いです。

    2006年12月23日 4:22

すべての返信

  • コネクションプーリングは OS が勝手に行います。
    同一の接続文字列を使えばです。
    接続文字列が違うと別のコネクションプーリングを行います。
    2006年12月23日 6:08
  • レジストリや接続文字列で指定しない限り、ADO Connection オブジェクトはデフォルトでプーリングは有効です。

    次のリンクを見れば "どういうときにリソース プーリングが無効になるか" がわかります。

    Microsoft Data Access Components を使った OLE DB のリソース プーリングhttp://msdn.microsoft.com/library/ja/jpdnmdac/htm/ole.asp

    2006年12月23日 15:48
  • Dye Suzukiさん

    欲しかった情報です。ありがとうございます。

    マルチスレッドのアプリなので、下記の記述が関係あるかな、と思い見ていたのですが、
    プログラム全体でConnectionオブジェクトを1つ閉じないで持っていおいて、各スレッドごとに1つずつConnectionオブジェクトを作るって感じなのでしょうか???

    これは、複数のスレッドを使用するアプリケーションを開発している ASP を対象としていない開発者にも当てはまります。すべてのスレッドの間で単独のConnectionオブジェクトを共有しようとしてはいけません。代わりに、1 つのスレッド、1 つのConnectionオブジェクト、そして 1 つの永続的な接続をメイン アプリケーションで使用することで、プールを有効にしておきます。

    2006年12月24日 2:36
  • おがわみつぎ  さん

    ご回答ありがとうございました。

    今回、別の人が作ったシステムのソースをチェックしていたのですが、
    自前でプールを実装していたので、プールはDB側で勝手にやってくれるだろう
    と思い質問させていただいたしだいです。

    (ぶっきらぼうな質問の文章ですみませんでした)

    ただ、Suzukiさんに教えていただいたリンクを見ると、
    プールを効果的に使うには若干やり方があるみたいですね

     

    2006年12月24日 2:46
  • 青柳です。

     にお さんからの引用

    プログラム全体でConnectionオブジェクトを1つ閉じないで持っていおいて、各スレッドごとに1つずつConnectionオブジェクトを作るって感じなのでしょうか???

    はい、普通の Windows アプリケーションだとすべての Connection を閉じてしまうとその時点でプールも解放されてしまっていました。なので、アプリケーション起動時に Connection を一つ作ってずっと開きっぱなしにしておくとかしていました。(もっとスマートな方法があるのかもしれませんが私は知りません)
    なお、ASP にホストされている場合などは、このような心配をする必要はありません。

    あと、これは ADO の場合の話で、ADO.NET になると Windows アプリケーションの場合でも何も気にせず全部閉じてしまってもちゃんとコネクションプーリングが効きます。

    2006年12月25日 1:39
  • Shinichi Aoyagi さん

    丁寧なご回答ありがとうございました。

    だいぶわかってきましたので、実際にソースに反映していきたいと思います。

     

     

    2006年12月26日 5:28
  • ためしに、1000回接続→クローズの繰り返しの時間を計測してみたのですが、

    プールあり(デフォルト)で0.2秒くらい
    プールなしに設定した場合4秒くらい

    でした。ちゃんとプールが利いているようでした。

    ちなみに、全てのコネクションを閉じてしまうと、4秒くらい、
    また、コネクションを全く閉じないと5秒程度でした。

    皆様にお教えいただいた情報どおりの動きでしたので安心です。

    どうもありがとうございました。

    2006年12月26日 12:08