私は確かに貧弱なデータモデルで継承したアプリケーションを持っています。当分の間、私はそれにバンダイを入れようとしています。Entity.list()Hibernateのパフォーマンス
クエリされたデータのサブセット(一度に1つのレコード)で動作する操作であっても、システムに読み込まれるデータが増えるにつれてパフォーマンスが低下することに気がつきました。
私たちはNew Relicを使用していますが、私は、Criteria Queriesを使用するトランザクションでは、リクエスト時間のかなりの部分がEntityName.list()
に費やされていることに気付きました。しかし、いずれの企業もlist()
メソッドを持っていません。 Criteria QueriesがSQLに変換され、すべてのエンティティをリストしてからJavaオブジェクトをクエリするのではなく、実際にデータベースエンジン上でクエリが実行されることは私の理解です。それは正確ですか? New Relicのlist()
メソッドは何ですか?
わかりやすいことに、巨大なテーブルにあるリスト全体またはselect * ...
を実行するにはしばらく時間がかかることに気付きました。問題は、すべてのレコードを一覧表示するのではなく、条件照会を使用して表を照会することです。私の質問は、New RelicのEntity.list()
への参照はどこから来たのですか?
どのような 'list'メソッドでも、私は' SELECT * FROM TABLE_NAME'のようなクエリですべての行を選択していると思います。あなたのテーブルが巨大な場合、それは時間がかかるかもしれません... – jchampemont
私はVisualVMまたはJprofilerを使用して、あなたが悪いと思うコードを使用し、この問題を作成者に行を見つけると考えています –