MyBatisが私のアプリケーションで遅いのはなぜだろうと思います。
の場合SELECT COUNT(*)
、かかる時間は次のとおりです。
- 20秒-最初のリクエスト
- 2-3秒-後続のリクエスト
キャッシングは、おそらく、後続のリクエストをより速くします。
構成
- 3層(WPF UI-Javaバックエンド-Oracleデータベース)
- JBoss Serverは、JavaBackedをWPFUIのWebサービスとして公開します
- 要求時間==WPFUIが結果を送信してから受信するまでにかかる時間
- 使用されているSpringFramework
試みたアプローチ
無効なロギング
ロギングサブシステムとlog4jの両方を無効にすることが違いを生むかどうかはわかりません。しかし、私が得た最高の時間は15秒でした
SELECT COUNT(*)
。キャッシングと遅延読み込みを無効にする
これもおそらく最大で5秒の違いをもたらしました。
次の助けはありますか?
- 自動マッピングをオフにすることにより、明示的な結果マッピングを使用します。(ここの結果マップを参照してください)。
- プーリングの使用。(ここで環境を参照してください)。
- トランザクションは、サブクエリを使用したSQLステートメントの高速化に役立ちますか?
上記のテクニックはここにリストされています:
- MyBatisフォーラム
- JBossのベストプラクティス(ページ9)
もう一つの例
2つの結合と1つのサブクエリを持つネストされたSQLステートメントの場合、かかる時間は次のとおりです。
- 60〜90秒-最初のリクエスト
- 2-3秒-後続のリクエスト