0

現在、Hibernate に基づくパフォーマンス チューニング プロジェクトに取り組んでいます。ただし、コード スニペットの以下の部分で、パフォーマンスを大幅に低下させる 1 つの問題に直面しています。以下は、コード スニペットの一部です。

private EntityManager em;
Query query = em.createQuery(sQuery.toString());
List<Object> entities = query. getResultList();

コードの両方の行にタイマーを配置しましたが、クエリがフェッチするのに約0.02秒かかることがわかりました。たとえば、x行数です(DBクライアントを介して実行した場合の実行時間と同じです)。ただし、ほとんどの時間は 2 行目、つまりリストの取得 (getResultList()) に費やされています。これが正常なのかどうかを考え始めており、実際に getResultList を使用するとアプリケーションのパフォーマンスが低下します。提案はありますか?

4

2 に答える 2

0

@NimChimpsky 0.02はそれほど悪くないことに同意します。

とにかく、アプリケーションの起動時に hibernate によって前処理される NamedQuery を使用することもできます。これにより、実行時に時間を節約できる可能性があります。

于 2012-06-06T09:51:08.907 に答える
0

フェッチするのに 0.02 秒かかると x 行数と言えます (DB クライアント経由で実行した場合の実行時間と同じです)

そのdb呼び出しは休止状態ではなく、遅くはありません。データベースにデータを送信してクエリを実行し、データを送り返すのに0.02秒かかります。非常に高速です。

その 4 秒を編集し ます。SQL クエリのコードを表示し、それを最適化します。その後、それを高速化する唯一の方法は、Java 側で結果をキャッシュすることです。

私はehcacheを使用します。

于 2012-06-06T09:46:57.197 に答える