- PR -

DBのopen・closeのタイミング

投稿者投稿内容
Ier
常連さん
会議室デビュー日: 2006/02/23
投稿数: 33
投稿日時: 2007-03-06 16:24
会議室違いかもしれませんが、こちらに投稿させていただきます。

DBのopenとcloseをどのタイミングで行うのが正攻法なのかお聞きしたいのですが、

 1.DBへクエリを投げる度に(open→一連のquery処理→close)
 2.システムの開始時と終了時(開始(open)→システム→終了(close))

現在は、MySqlを使用した掲示板システムを作成しています。
DBを利用したプログラミングにあまり慣れていません。
アドバイスよろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-03-06 16:34
どちらも間違いではありません。

長期間起動しているプロセスで、何度もクエリを投げる場合はクローズせずにセッションを保持しておくパターンが多く用いられます。
コネクションを張ったり認証したりという部分がパフォーマンスに影響ありますので。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-03-06 16:49
1メイントランザクションの直前にOpen直後にClose。
開きっぱなしはやったことないなぁ。
Insider.NET会議室で質問したらそう返ってきそう。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-03-06 16:57
DBへのコネクションのopenとcloseって話ですよね?
コネクションのプールについて調べると幸せになれると思いますよ。
Ier
常連さん
会議室デビュー日: 2006/02/23
投稿数: 33
投稿日時: 2007-03-06 17:25
>インギさん
返信ありがとうございます。
やはり、ケースバイケースなんですね^^;

>ぶさいくろうさん
返信ありがとうございます。
そちらの方法を試してみたいと思います。

>nagiseさん
コネクションプーリングについて調べてみました。
有益な情報ありがとうございます。
読んでみる限り、コネクションプーリングは 2 に当てはまると思うのですが。
Object Poolパターンを勉強してから実装してみようと思います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-03-06 17:42
引用:

Ierさんの書き込み (2007-03-06 17:25) より:

読んでみる限り、コネクションプーリングは 2 に当てはまると思うのですが。


論理的か物理的かで見方は変わりますが、とりあえず (2) とは違うと思いますよ。
コレクション プーリング中でも Open メソッドは都度必要なわけでして。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-03-06 18:06
>読んでみる限り、コネクションプーリングは 2 に当てはまると思うのですが。
>Object Poolパターンを勉強してから実装してみようと思います。
大抵アプリケーションサーバやフレームワークに実装されていますので、一から作らなくても大丈夫ですよ。
またはDBCPというライブラリを使うのも良いかと思います。

>コレクション プーリング中でも Open メソッドは都度必要なわけでして。
たとえばデータソースからコネクションを取得するときは open() せずに、getConnection() メソッドで取得しますね。
Ier
常連さん
会議室デビュー日: 2006/02/23
投稿数: 33
投稿日時: 2007-03-06 19:30
>じゃんぬねっとさん
返信ありがとうございます。
どうやらコネクションに対して誤解があったようで、
色々調べるうちに自分の間違いに気づきました。
あくまで有効なコネクションを使いまわすのですね。理解しました。

>インギさん
下記のページを参考にしていたのですが、
http://programnet.hp.infoseek.co.jp/practicaldb/connectionpool.html
これがDBCPということですよね?
非常に有益な情報ありがとうございます。

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