[seasar-dotnet:766] Re: S2DAO.NET:Oracle10g への外だし SQL の実行が遅いように見える

kubo [E-MAIL ADDRESS DELETED]
2008年 2月 6日 (水) 13:56:33 JST


久保です。

確かに通常はありえない現象ですね。
試しに外だしSQLで

WHERE COL_ZZ = /*pmb.ID*/'10'

    ↓

WHERE COL_ZZ = '10'

とベタ打ちの条件で実行してみていただけますか?

ログに出力されたものは表示用SQLなので、
それをCSEで実行しても完全に正確な再現ではありません。
実際S2Daoで実行するときはバインド変数を利用しています。

無論、このレベルのSQLで変わるようなものではないと思うのですが、
念のため疑ってみた方が良いと思います。

それでも状況が変わらないようであれば、
ADO.NETを直接使って同じことを試してみるのが良いと思います。


また、インデックスが利用されていないから遅いのかどうか、
を確認するには、HINT句を使ってINDEXを強制利用させてあげるのも手です。

2008/2/6 小林貴生 <[E-MAIL ADDRESS DELETED]>:
> 質問させた頂いた小林です。
>
> > 久保です。
>
> > 「2秒掛かっている部分がどの実行部分かどうか」
> > DBFluteをお使いであればDBFluteの独自のS2DaoInterceptorが
> > わかりやすいログを出してくれるはずです。
> > log4netの設定でそちら有効にしてみてください。
>
> 設定を行ってみまして、ログを取得しました。
> 抜粋すると以下の部分です。
>
> 2008-02-06 12:00:05,859 [1] Hoge.Fugo.Core.dbflute.allcommon.s2dao.S2DaoInterceptor SqlCommand Initialization Cost: [00m00s000ms]
> 2008-02-06 12:00:05,859 [1] Seasar.Extension.ADO.Impl.BasicSelectHandler select COL_A ... FROM TABLE_A WHERE COL_ZZ = '10'
> 2008-02-06 12:00:05,859 [1] Seasar.Framework.Util.DataSourceUtil 論理的なコネクションを取得しました
> 2008-02-06 12:00:08,203 [1] Seasar.Framework.Util.ConnectionUtil 論理的なコネクションを閉じました
> 2008-02-06 12:00:08,203 [1] Hoge.Fugo.Core.dbflute.allcommon.s2dao.S2DaoInterceptor ===========/ [00m02s344ms - Selected count: 1 first={値...}]
> 2008-02-06 12:00:08,203 [1] Hoge.Fugo.Core.dbflute.allcommon.s2dao.S2DaoInterceptor
>
> DBFlute の Behavior 経由にしたので、SELECT文は、1行になっていますが、
> やはりここで、時間を喰っていそうです。
>
> これは、やはりSQLが遅いと言う事なんでしょうか?。
> これまでと同じようにログに出ているSQLを普通にCSE等で実行すると、結果は1秒かかりません。
>
> 1レコード分の値の取得だけで2秒は掛からないですよね...。
> もう少し調べてみます。
>
> ・コネクションプール
> ・.NET Framework Data Provider for Oracle
>
> が悪いのかな...。
>
>
>
> 以上、よろしくお願いいたします。
>
>
> 小林
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


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