問題タブ [query-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
caching - Doctrine クエリの実行には 4 秒以上かかります
私たちはプロジェクトの最終段階にあり、最適化を開始しました。
いくつかのテストの後、ページのロードに費やされる時間のほとんど (すべてではないにしても) が Doctrine で費やされることがわかりました。
5 秒のページ読み込みのうち、3 ~ 4 秒は 2 つの Doctrine クエリにのみ費やされます。
mysql サーバーと Doctrine でクエリ キャッシュと結果キャッシュを有効にしましたが、これは読み込み時間を悪化させるだけのようです。
私が収集できる限り、mysql クエリ キャッシュはアクティブです。
[編集] 何らかの理由で残りの質問が消えてしまったので、もう一度投稿します[/編集]
Qcache_free_blocks | 57
Qcache_free_memory | 22300072
Qcache_hits | 7117
Qcache_inserts | 3308
Qcache_lowmem_prunes | 0
Qcache_not_cached | 4537
Qcache_queries_in_cache | 1225
Qcache_total_blocks | 2609
問題は、キャッシュがヒットしていないようで、ほとんどの時間 (平均で 3 秒) かかるクエリが変更されないことです。
クエリ/結果のキャッシュを有効にしても読み込み時間が改善されない理由について、何かヒントはありますか?
hibernate - セッションレベルでのみ休止状態のクエリキャッシュを有効にする方法は?
1 つのスレッドで複数回呼び出されるクエリがあり、そのスレッド (またはスレッドごとに 1 つのセッションを使用しているため、そのセッション) に対してそのクエリ (およびその結果) をキャッシュしたい場合はどうすればよいですか?私がする ?
注: 私の第 2 レベルのキャッシュはオンになっていますが、主に session.get(...) に使用されます。しかし、クエリキャッシュには使用したくありません。これは、スレッド ( / セッション ) の間だけ存続する必要があるためです。
ありがとう
wcf - Hibernate クエリ キャッシュと WCF
クエリの 1 つでクエリ キャッシュを有効にしました。テストまたはコンソール アプリケーションを実行すると、正常に動作します (クエリ結果はクエリ キャッシュから取得され、エンティティは第 2 レベル キャッシュから取得されます)。ただし、WCF サービスを介して同じクエリを実行すると、キャッシュがヒットすることはありません。
どちらの場合もログを確認しましたが、キャッシュ ミスが発生するまでは実質的に同じです。
キャッシュが置かれたことを示すNHのログは次のとおりです。
キャッシュミスを示すNHのログは次のとおりです。
WCF サービスにない場合のキャッシュ ヒットを示す NH のログは次のとおりです。
クエリを実行するために使用しているコードは次のとおりです。
キャッシュがヒットしないのはなぜですか?
java - Hibernateの第2レベルのクエリキャッシュが機能しないEagerFetching
NHibernate Profilerで、アソシエーションで熱心なフェッチを使用すると、HQLクエリで「左結合フェッチ」を使用するか、Criteriaクエリで.SetFetchMode()を使用すると、クエリがクエリキャッシュにキャッシュされなくなります。
実際、私が見ることができるのは、非常に基本的なクエリだけがキャッシュされていることです。誰かが私にどのクエリがキャッシュされ、どのクエリがキャッシュされないかについての洞察を私に与えることができれば、私は答えをマークします。
違いが生じる場合は、Memcachedを使用しています。クエリ密度の高いシステムのL2キャッシュに適した選択肢はありますか?
私はこれをかなり難しいと感じています-熱心な負荷を使用しない場合はN+1の問題があります(ただしキャッシュを使用します)。熱心な負荷を使用すると、データベースからすべてのエンティティを取得しますが、キャッシュはありません。
かなり太い境界線があるようです。どちらの戦略でもパフォーマンスが向上していますが、どちらの戦略も他の戦略からパフォーマンスを奪っています。
誰かがこの「太い線」のどこにあるのかについて洞察を与えることができれば、私は最適なパフォーマンスを得る必要があります、または「線を細くする」方法...私は非常に門戸を開いて答えをマークします。
hibernate - Hibernate クエリ キャッシュ - 第 2 レベルのキャッシュにないオブジェクトの場合 - 危険ですか? 使える?悪い習慣?
この質問に関連する
前提:
これらは、私の読書、経験、理解に基づく私の仮定です。間違っている可能性があります。間違っている場合は、コメントしてください。質問を編集します。
- クエリ キャッシュは、主に第 2 レベルのキャッシュと共に優れています
- クエリ キャッシュは、クエリ + パラメータの識別子の結果をキャッシュします
- データベースが変更され、キャッシュに反映されていない場合、クエリキャッシュは危険です
質問:
第 2 レベルのキャッシュにないオブジェクトがあります。不適切なプログラミングまたはその他の制約により、オブジェクトをロードするコードが同じ休止状態セッションで複数回呼び出されています。検索はHQL検索クエリを使用しています。
クエリ キャッシュを追加する前に、上記のコードが同じ Hibernate セッション内で N 回呼び出された場合、データベースへのヒット数は N 回でした。
次に、クエリ キャッシュを追加するとどうなるかを確認したかったのです。
クエリキャッシュを追加したとき、同じセッション中に、休止状態がデータベースに N 回ヒットせず、セッションごとに 1 回だけヒットすることに気付きました。
- したがって、私の最初の仮定は、Hibernate が最初にセッション キャッシュを検索し、次に 2 番目のレベルのキャッシュを検索するということです。この仮定は正しいですか?
Foo
また、第 2 レベルのキャッシュにないオブジェクト ( ) がデータベースで変更された場合、クロス セッション スコープのクエリ キャッシュが間違った識別子を返すため、間違ったオブジェクトが返されることも想定しています。あれは正しいですか?- 2L キャッシュされていないオブジェクトであっても、不変の情報を含むクエリにクエリ キャッシュを使用することは、良い習慣であると言えますか? (例: where 句に常に同じ結果を返す条件が含まれるクエリ。例: "select p.ser_num where p.id = ?" ser_num と id の組み合わせが一度作成されると変更されない場合)
ところで、関連する質問では、クエリ キャッシュはセッション キャッシュ スコープでは機能しないと主張されています。私はその主張を誤解していますか、それとも何か他のものですか?
hibernate - Hibernate-クエリキャッシング/第2レベルのキャッシュは、サブアイテムを含む値オブジェクトでは機能しません
私は次の問題に苦しんでいます:
異なるパネルを含む値オブジェクトがあります。各パネルにはフィールドのリストがあります。
マッピング:
次の基準を使用して、値オブジェクトを取得します。
私が見るように、クエリキャッシュにはメインセレクトのみが含まれています
RACountryPanelsとRAFieldVOの両方が第2レベルでキャッシュされます。第2レベルのキャッシュコンテンツを確認すると、RAFieldsとRACountryPanelsも含まれていることがわかります。また、クエリキャッシュ領域のCTRYからのselect .. where ctry_cd_id=...も確認できます。
サーブレットを呼び出すと、キャッシュを使用しているように見えますが、2回目は使用していません。 JMXを使用してキャッシュの内容を確認すると、すべて問題ないように見えますが、オブジェクトのアクセス時間を測定すると、必ずしもキャッシュを使用しているとは限らないようです。
乾杯ゾルタン
ruby-on-rails - ActiveRecord 単体テストでクエリ キャッシュを扱うことは重要ですか?
Hibernate の世界では、単体テストは成功したように見えても、キャッシュされたデータを扱っているために実際には現れないバグが存在することがよくあります。たとえば、保存をカスケードしていると考えて、親とその子を保存する場合があります。保存後に親を再クエリし、子コレクションのサイズをテストすると、問題ないように見えます。しかし実際には、Hibernate は子を保存しませんでしたが、親をキャッシュしたので、保存されていない子を見ています。これを回避する 1 つの方法は、保存とクエリの間にセッション キャッシュをクリアして、データがデータベースから直接取得されていることを確認することです。
これは ActiveRecord の問題ですか? モデルを保存して同じテストでクエリを実行すると、実際にはデータベースからではなく、クエリ キャッシュからデータを取得している可能性はありますか? これに対処しようとするサンプル テストは見たことがありません。
nhibernate - クエリキャッシングはnHibernateのパフォーマンスをどのように改善しますか?
クエリキャッシングはどのように機能し、nHibernateのパフォーマンスをどのように改善しますか?
sql-server - クエリキャッシュの改善をどのように追跡できますか?
WebアプリのアドホックSQLをパラメーター化しています。その結果、クエリプランキャッシュのサイズが小さくなり、ヒット率が高くなると思います。おそらく、他の重要な指標も改善されるでしょう。
これを追跡するためにperfmonを使用できますか?もしそうなら、私はどのカウンターを使うべきですか?perfmonでない場合、この変更の影響をどのように報告できますか?
php - MySQL クエリ キャッシュとアプリケーション層での結果セットのキャッシュ
私は php/mysql 駆動の Web サイトを実行しており、多くのアクセスがあり、データベースの負荷を軽減するために結果セットを共有メモリにキャッシュする可能性を検討しています。
ただし、現在 MySQL のクエリ キャッシュが有効になっており、クエリ キャッシュを無効にすると CPU の使用率がすぐに 100% に跳ね上がるため、かなりうまく機能しているようです。
そのような状況を考えると、結果セット (または生成された HTML コードでさえも) を PHP の共有メモリにローカルにキャッシュすることで、パフォーマンスが大幅に向上するかどうかはわかりません。
誰かがこの問題について何か経験がありますか?
PS: memcached のような強力なソリューションを提案することは避けてください。現在、実装、展開、および保守に時間がかかりすぎないシンプルなソリューションを探しています。
編集:
memcached に関する私のコメントは、実際のポイントから逸脱した回答を参照しています。つまり、アプリケーション層で DB クエリをキャッシュすると、これらのクエリの結果が既に DB レベルでキャッシュされていることを考えると、パフォーマンスに顕著な影響が生じるかどうかです。