[Seasar-user:21322] Re: FetchHandlerについて

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2012年 4月 13日 (金) 17:00:16 JST


中村(taedium)です。

サンプルのコードを動かしているとのことだったので
一応確認ですが、サンプルのコードはトランザクション管理下に
ないのでautoCommitはtrueのままです。

container.init() の後ろに次のようなコードを入れて実行すれば
autoCommitがfalseになって、[Seasar-user:21319] で言及されて
いた条件を満たせるようになると思います。

UserTransaction tx = (UserTrasaction)
    container.getComponent(UserTrasaction.class);
tx.begin();


2012年4月13日16:47 Seita Sekigushi <[E-MAIL ADDRESS DELETED]>:
>
> 中村さん
>
> 調べてみたら確かにResultSetのTypeはデフォルトでOKでした。
> サーバーのバージョンは9.xxだったので大丈夫なはずですが
> やはりOutOfMemoryが出ますね・・・・。
>
> DBをOracleに変更して同じ件数で処理をしたら
> すんなり通ったんで、やっぱりDBがらみかなぁと。
>
> --- On Fri, 2012/4/13, Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]> wrote:
>
>> 中村(taedium)です。
>>
>> S2でトランザクション管理すればautoCommitはfalseになりますし、
>> ResultSet.TYPE_FORWARD_ONLYはデフォルトで使われる値ですし、
>> 気にするのは、PostgreSQLのバージョンだけになるんじゃないかと思います。
>>
>> 2012年4月13日15:31 Seita Sekigushi <[E-MAIL ADDRESS DELETED]>:
>> >
>> > 中村さん
>> >
>> > OutOfMemoryですが、PostgreSQLのResultSetに問題があるようです。
>> > PostgresSQLのResultSetは、nextを呼ばなくても
>> > 毎回全件フェッチするようです。
>> > そのため、OutOfMemoryが発生している模様です。
>> >
>> > AutoCommitを無効、ResultSet.TYPE_FORWARD_ONLYというタイプ、
>> > サーバーのバージョンが7.4以降でないとダメみたいです。
>> >
>> > Seasar2はデフォルトでAutoCommitがFalseだったと思いますが
>> > ResultSetのタイプの変更方法を模索中です。
>> >
>> > 奥が深くなってきました・・・。
>> >
>> > --- On Fri, 2012/4/13, Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]> wrote:
>> >
>> >> 中村(taedium)です。
>> >>
>> >> PostgreSQLでしたか。
>> >> では、リンク先の話は関係ないですね。
>> >>
>> >> EmployeeとDepartmentのリレーションシップをやめてみたら
>> >> どうなるでしょうか?
>> >> 可能性としては、Departmentが大量に作られているからという
>> >> ことが考えられます。
>> >>
>> >> それでも、現象が発生するなら、
>> >> プロファイラなどを使って実際にヒープを占めている
>> >> オブジェクトを特定してみてはどうでしょうか。
>> >> アプリか、S2Daoか、PostgreSQLのJDBCドライバーか、
>> >> どこに問題があるか手がかりが得られると思います。
>> >>
>> >>
>> >> 2012年4月13日11:27 Seita Sekigushi <[E-MAIL ADDRESS DELETED]>:
>> >> >
>> >> > 中村さん
>> >> >
>> >> > 使っているDBはPostgreSQLです。
>> >> > 使用しているDriverはorg.postgresql.Driverです。
>> >> >
>> >> > --- On Fri, 2012/4/13, Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]> wrote:
>> >> >
>> >> >> 中村(taedium)です。
>> >> >>
>> >> >> 使っているDBはなんでしょうか?
>> >> >> MySQLの Connector/Jが関係しているかもしれません。
>> >> >>
>> >> >> http://d.hatena.ne.jp/hajimeni/20120406/1333677789
>> >> >>
>> >> >>
>> >> >> 2012年4月13日11:09 Seita Sekigushi <[E-MAIL ADDRESS DELETED]>:
>> >> >> >
>> >> >> > 中村さん
>> >> >> >
>> >> >> > 仰る通り、別のHandlerが使われていたみたいです。
>> >> >> > diconファイルの設定を見直して、正常にFetchHandlerが動くようになりました。
>> >> >> >
>> >> >> > ただ、jarに含まれてるサンプルを使用して
>> >> >> > 60万件ほどのデータを対象にCSVに出力してみましたが
>> >> >> > OutOfMemoryが発生しました。
>> >> >> > 添付されているサンプルソースを使用しているので、
>> >> >> > これで動かないということは、設定周りじゃない気がするのですが・・・。
>> >> >> >
>> >> >> > --- On Thu, 2012/4/12, Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]> wrote:
>> >> >> >
>> >> >> >> 中村(taedium)です。
>> >> >> >>
>> >> >> >> > 唯一怪しいと思うのが、以下のようなログが出力されたことです。
>> >> >> >> >
>> >> >> >> > 「取得行数が2件以上存在しますが先頭行のみ返されます」
>> >> >> >>
>> >> >> >> FetchHandlerではない別のHandlerが使われてしまっているようです。
>> >> >> >> Daoの定義とFetchHandlerの定義はどのようになっていますか?
>> >> >> >>
>> >> >> >>
>> >> >> >> 2012年4月12日10:30 Seita Sekigushi <[E-MAIL ADDRESS DELETED]>:
>> >> >> >> > お世話なっております。
>> >> >> >> >
>> >> >> >> > Seasar2.3系、S2Dao、tigerともに、1.0.50で現在開発を行っておりますが
>> >> >> >> > FetchHandlerがうまく動いていない状況です。
>> >> >> >> >
>> >> >> >> > デバッグしてみたものの、ブレークポイントを張っても
>> >> >> >> > そのままスルーされているので、何が原因か掴めていません。
>> >> >> >> >
>> >> >> >> > 唯一怪しいと思うのが、以下のようなログが出力されたことです。
>> >> >> >> >
>> >> >> >> > 「取得行数が2件以上存在しますが先頭行のみ返されます」
>> >> >> >> >
>> >> >> >> > 同じような現象になったことある方、いらっしゃいますでしょうか?
>> >> >> >> > _______________________________________________
>> >> >> >> > Seasar-user mailing list
>> >> >> >> > [E-MAIL ADDRESS DELETED]
>> >> >> >> > https://ml.seasar.org/mailman/listinfo/seasar-user
>> >> >> >>
>> >> >> >>
>> >> >> >>
>> >> >> >> --
>> >> >> >> Toshihiro Nakamura
>> >> >> >> _______________________________________________
>> >> >> >> Seasar-user mailing list
>> >> >> >> [E-MAIL ADDRESS DELETED]
>> >> >> >> https://ml.seasar.org/mailman/listinfo/seasar-user
>> >> >> >>
>> >> >> > _______________________________________________
>> >> >> > Seasar-user mailing list
>> >> >> > [E-MAIL ADDRESS DELETED]
>> >> >> > https://ml.seasar.org/mailman/listinfo/seasar-user
>> >> >>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> Toshihiro Nakamura
>> >> >> _______________________________________________
>> >> >> Seasar-user mailing list
>> >> >> [E-MAIL ADDRESS DELETED]
>> >> >> https://ml.seasar.org/mailman/listinfo/seasar-user
>> >> >>
>> >> > _______________________________________________
>> >> > Seasar-user mailing list
>> >> > [E-MAIL ADDRESS DELETED]
>> >> > https://ml.seasar.org/mailman/listinfo/seasar-user
>> >>
>> >>
>> >>
>> >> --
>> >> Toshihiro Nakamura
>> >> _______________________________________________
>> >> Seasar-user mailing list
>> >> [E-MAIL ADDRESS DELETED]
>> >> https://ml.seasar.org/mailman/listinfo/seasar-user
>> >>
>> > _______________________________________________
>> > Seasar-user mailing list
>> > [E-MAIL ADDRESS DELETED]
>> > https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>>
>>
>> --
>> Toshihiro Nakamura
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user



-- 
Toshihiro Nakamura


Seasar-user メーリングリストの案内