Oracle TimesTen と Hibernate

■[Tech][Hibernate] Oracle TimesTen と Hibernate
詳しくは後で読む。驚愕部分は、以下。

Foo が 10 コ,つまり SQL の実行回数が 11 回 (Lazy フェッチ) と 1 回 (Eager フェッチ) だと誤差くらいの違い (数ミリ秒,処理全体の 2% くらい).
Foo が 100 コ,つまり SQL の実行回数が 101 回と 1 回でも 1 割くらいの違い.
Foo が 1000 コ,つまり SQL の実行回数が 1001 回と 1 回でも 2 割くらいの違い.
SQL の実行回数を 1/1000 に減らしても処理速度が 2 割くらいしか速くならないって,今までの感覚だとあり得ないんだけど.

SQL1個の時の処理の99%はHibernateとかの部分だって事かな?

ベンチマーク公開禁止だと思うので詳しくは書きませんが,なかなか衝撃的.
Foo が 10 コ,つまり SQL の実行回数が 11 回 (Lazy フェッチ) と 1 回 (Eager フェッチ) だと誤差くらいの違い (数ミリ秒,処理全体の 2% くらい).
Foo が 100 コ,つまり SQL の実行回数が 101 回と 1 回でも 1 割くらいの違い.
Foo が 1000 コ,つまり SQL の実行回数が 1001 回と 1 回でも 2 割くらいの違い.
SQL の実行回数を 1/1000 に減らしても処理速度が 2 割くらいしか速くならないって,今までの感覚だとあり得ないんだけど.
恐るべし TimesTen.恐るべし IMDB.
っていうか,Hibernate オーバーヘッド大きすぎ.(^^;

逆に言うと、SQLのオーバヘッドが今まで以下にでかかったか。Hibernateの吐くSQLが簡単で、TimesTen向きってのもあるかもしれないけどそれにしても早い…

まぁ,そのための 2 次キャッシュって話かもしれないけれど,個人的には 2 次キャッシュより IMDB をキャッシュ代わりに使う方が魅力的な気がします.
2次キャッシュと IMDB はたぶん実装も含めて似てるっぽい.
どちらもレプリケーションや分散トランザクションをサポートしたりとか.
SQL の実行エンジンの有無が大きな違いかな.
あ,Hibernate の問い合わせキャッシュ (2次キャッシュに問い合わせ結果を保持する) も含めるとさらに重なるなぁ.
でもでも,問い合わせキャッシュは同じ SQL で同じパラメータの場合しか効果がないけれど,IMDB は様々な SQL をメモリ上で処理できる分,より広い範囲で効果があるような気のせいがします.
うん,その方がステキ☆ (久々マイリトルシェフ風)

ぶつぶつ、2次キャッシュそのものな気もする。ってか、キャッシュヒット率100%なわけで、キャッシュに当該データがあるかの判定がない分、IMDBのが早いか?

ディスクベースのしっかりした RDBMS と,そのキャッシュとして機能する IMDB を組み合わせたりすると,O/R マッパーを使ってもパフォーマンスで悩む機会が減るかもしれませんね.
O/R マッパーが何をやってるか知らずに使う人が益々増えそうだけど (苦笑).

DOS->Winの流れを見ても、「蛇口ひねると水が出る原理」を知らない人が増えても仕方ないかとw

This entry was written by Ez-man , posted on 日曜日 4月 01 2007at 10:04 am , filed under 技術覚書 . Bookmark the permalink . Post a comment below or leave a trackback: Trackback URL.

コメントを残す

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>