[seasar-dotnet:2405] Re: 初心者的な質問で申し訳ないですが・・・

kotani.k [E-MAIL ADDRESS DELETED]
2015年 1月 14日 (水) 22:24:12 JST


小谷です。

Seasar.NETは内部でADO.NET <http://Seasar.xn--netado-yc4e9bt795bkq4g.NET>
を使ってDB接続を行っており、
コネクションプーリングは、このADO.NETに対応したデータプロバイダ側
(OracleならODP.NETなど)で実装されています。
http://msdn.microsoft.com/en-us/library/vstudio/bb399543%28v=vs.100%29.aspx

Oracleをご利用ということでデータプロバイダはODP.NETをお使いになっているのかなと思います。
ODP.NETであれば、コネクションプーリングのON/OFF、最大接続数などの設定は
接続文字列の属性で指定すればよいはず(詳しくはOracle公式ページなどで)。
http://codezine.jp/article/detail/1503
http://www.oracle.com/technetwork/issue-archive/2006/06-jul/o46odp-097508.html
(「Connection Pooling Overview」の辺りを参照)

以上です。


2015年1月14日 15:56 kubo <dbflute @ gmail.com>:

> 久保です
>
> 志水さん、こんにちは
>
> > ■DBFLUTEはコネクションプーリングをデフォルトで使用していると
> >  勝手に思いこんでいるのですが合ってますか?
>
> DBFlute.NETの方は、S2Dao.NETを経由しています。
> コネクションプールしてないとお話にならないと思うので、
> どう考えてもしていると思いますが、一瞬どこでやってたっけ?って。。。
>
> to 小谷くん
> Seasar.NETの中でConnectionPoolしてるんだっけかな?
> (JavaだとSeasar自体がConnectionPool持ってるけど)
>
> > ■DBFLUTEは1リクエスト内ではコネクションは張りっぱなしと思っていますが 合ってますか?
> スレッドトランザクション方式になっている、その通りです。
> トランザクションを開始するとDataSourceの常に同じコネクションを戻します。
> (同じスレッド内では)
>
> > ■WEBでは基本的にリクエスト跨いだロック(For Update)はできないと思ってい ますが合ってますか?
> そうですね。リクエスト間でトランザクションを貼りっぱなしに
> しないといけないので、まったくやったことはないです。
>
> > ■お客から接続コストを抑えるためにコネクションをセッションに
> > 保持して使い 回しできないの?って質問されたんですが
> コネクションプールしていればそんなことする必要ないですね。
> というか、セッションに入れたらセッション消えるまでそのコネクションが
> 残っちゃうので、逆に枯渇しそうですね。その方式は聞いたことないです。
>
> > ■DBFLUTEのコネクションプーリングの最大数などは、どこで管理しているので しょうか?
> これもSeasar.NETの方の話次第で。
>
> > ■DBFLUTEでDBLLINKしているテーブルを更新したいのですが
> DBLLINKに対してシノニムを作ればできると思います。For Updateできるかと。
> 手元のテーブルとして扱えるようになります。(こちらマニアックですが実績ありです)
>
> > ■DBLINKって遅いと聞きましたが、どの辺が遅いのでしょうか?
> >  通常のプライマリキーでのSELECTではどうなんでしょう?
> 別インスタンスのDBに対してのSQLゲートウェイな感じなので、
> 直接SQLを投げるよりかは遅いと思います。(経由してる分)
> ただ、どの程度遅いのかはパフォーマンス検証しないとわからないですが。
> (許容できるレベルなのかどうか。許容レベルは業務によって変わるでしょうし)
>
> > ■マスタ類とかの参照があるなら、DBLINK使うより、複数DB接続の方がいいので しょうか?
> > DBLINKと複数DBのメリットとデメリット(判断基準みたいなもの)ってなんで しょう?
> 直接参照できるなら直接参照の方が世話ないかと。スピードも環境構築も。
> DBLinkのいいところは、手元のテーブルと同じ扱いができるところに尽きます。
> 要は、SQL的に手元のテーブルとリモートのテーブルを結合ができるというところです。
> 複数DBではそれができません。
> マスタ類のデータを個別のクエリで取得するので構わないのであれば、
> 複数DBの方がいいかなと。SQLの中で一緒に扱いたいならDBLinkですね。
>
> > 以上、本当にこんな初心者的な質問、
> > だれも頼る人がいないもので・・・
> そのために、オープンソースコミュニティのMLがあるんですよー!(^^
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
URL: <http://ml.seasar.org/archives/seasar-dotnet/attachments/20150114/5d171299/attachment.html>


seasar-dotnet メーリングリストの案内