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

kubo [E-MAIL ADDRESS DELETED]
2015年 1月 14日 (水) 15:56:42 JST


久保です

志水さん、こんにちは

> ■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 メーリングリストの案内