問題タブ [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.
c# - NHibernateキャッシュ:賢明な使用法、ベストプラクティス?
Linq式を使用してNHibernateデータソースにクエリを実行します。私が抱えている問題は、式の2つの呼び出し(または評価、悪い語彙で申し訳ありません)が比較で一致しないことです。結果として、NHibernateは同じパラメーターを使用して同じSQLを頻繁に実行します。
私はこの問題を回避するために、次のように流暢に構成されたNHibernateキャッシュを使用して出荷しました。
後でプロバイダーの面倒を見るので、これが本番環境になってしまうことはありません。次に、すべてのクエリがキャッシュ可能として示されます。
私が読んだ限りでは、キャッシュクエリはSessionFactoryごとに1つのスコープを持つ第2レベルのキャッシュで発生します。一方、アプリケーションデータをリロードするには、SessionFactoryを復元する必要があります。これは、セッションで同じことを行うよりもはるかにコストがかかると思います。
SessionFactoryを台無しにすることなく(文字通りではなく、私が何を意味するのかを知っている)クエリをキャッシュする効率的な方法はありますか?
java - Hibernate はクエリ キャッシュを削除しません (反復不可能な読み取りの問題)
私は Java/Spring/Hibernate を初めて使用し、数年間の .Net プログラミングの後、Java に本当に恋をしました。
現在、Spring (MVC、宣言型トランザクション) と Hibernate (3.6、キャッシュ プロバイダーとして - ehCache 2.5) を使用して Web アプリに取り組んでいます。Hibernate の 2 番目のキャッシュとクエリ キャッシュを使用してキャッシュしたい読み取り専用および読み書き可能なエンティティがいくつかあります。
読み取り専用エンティティにキャッシュを使用した場合、すべて問題ありませんでした。読み書きエンティティを追加し、jMeter を使用してパフォーマンス テストを実行しました。読み取り/書き込みエンティティの場合、反復不可能な読み取りの問題に直面しています。たとえば、エンティティ テーブルの読み取りと書き込みを行う複数の同時スレッドがあります。
スレッド 3 はルックアップ値を取得します。
キャッシュが最新ではないことを発見し、エンティティをロードし、それらを第 2 レベルのキャッシュに追加し、マテリアライズして返します... ここから 16:34:45,826 までの継続的なプロセス
一方、スレッド 9 はエンティティの 1 つを削除し、第 2 レベルのキャッシュとタイムスタンプを更新します。
スレッド 3 は引き続きハウスキーピング アクティビティを実行し、最後にクエリ結果をクエリ キャッシュに追加します (タイムスタンプは、スレッド 9 の削除アクションのタイムスタンプよりも高くなることに注意してください)。
したがって、この時点で削除された ID はクエリ キャッシュにあり、クエリ キャッシュは最新であると見なされます。
したがって、ルックアップを再度取得しようとすると、クエリ キャッシュが検索され、2 番目のキャッシュからエンティティの具体化が開始されます。
ただし、削除されたアイテムはそこにないため、db へのクエリが実行されます。
Load メソッドを使用しているため、エンティティが db に見つからない場合は例外がスローされます。私の場合、エンティティが更新されることはめったになく、それが起こる可能性があり、それが心配です。この問題を克服するためのアイデアはほとんどありません。
a) trx 分離レベルを DB で Repeatable Read に設定します (ただし、db からデータを読み取った後にキャッシュ ロジックへの追加が行われるため、これが役立つとは考えていません) b) エンティティの削除/更新時に手動で標準クエリ キャッシュを強制的に削除します c) 実行しますクエリ キャッシュをまったく使用しない (ほとんどの db クエリをルーティングして、2 番目のキャッシュを使用するようにしてください)
以前にこの問題に直面した人はいますか?
mysql - Rails 3: MongoDB でクエリ キャッシュを実装する方法
MongoDB について調査したところ、クエリ キャッシュがないことがわかりました。
MongoDB はクエリ キャッシュを実装しません。MongoDB はすべてのクエリをインデックスやデータ ファイルから直接提供します。(http://docs.mongodb.org/manual/faq/fundamentals/)
Rails for MongoDBにクエリキャッシュを実装する方法はありますか? MySQL クエリ キャッシュと同じ動作が必要なだけです。同じデータベース クエリは、2 回目はより高速になるはずです。
ありがとう!
mysql - MySQL Query Cache: 大規模な Web サイト構築プラットフォームの場合は「はい」または「いいえ」
MySQL のクエリ キャッシュに関する非常に多くの情報と相反するアドバイスを検討することは、本当に圧倒され、それが私のユース ケースにどのように関係するかを伝えるのが難しい場合があります。
多くの Web サイトをホストする LAMP スタックで実行される大規模なカスタム プラットフォームがあります。各 Web サイトのコンテンツは、テーブルの行に格納されています。ほとんどの場合、それらはすべて同じテーブルにあります。テーブルが更新されるたびに、キャッシュされたすべてのクエリが無効になることを読みましたが、それについて矛盾することも読みました。
誰かが Web サイト A にアクセスし、そのコンテンツがデータベースから読み込まれ、その過程でキャッシュされたとします。その直後に別の人がアクセスすると、データがキャッシュされているため、サイトの読み込みが速くなります。Web サイト B のコンテンツが変更されました。これは、Web サイト A と同じテーブルの行です。Web サイト A からキャッシュされたすべてのデータは無効になっていますか? もしそうなら、クエリキャッシュを完全にオフにすることで実際にパフォーマンスが向上するでしょうか?
私はクエリキャッシュのチューニングについて読んでいますが、やはり非常に圧倒されます。いくつか試してみましたが、どれだけの効果があったかわかりません。以下は、MySQLTunerscript からの現在の貼り付けです。
アドバイスをよろしくお願いします。
nhibernate - ORDER BY 句が異なっていても、NHibernate はキャッシュされたクエリ結果を取得する
クエリのキャッシュと ORDER BY 句を使用した NHibernate のバグと呼ばれるものを見ています...
次のクエリを実行すると...
... NHibernate は、クエリ キャッシュをオンにして、このクエリをキャッシュするように指示すると (eg を使用してcriteria.SetCacheable(true)
)、結果を正常にキャッシュします。
残念ながら、素晴らしいNHProfが教えてくれるように、NHibernate はこのクエリを実行するときにもキャッシュされたクエリ結果を使用します。
誰かが理由を説明したり、この「機能」に関する詳細なドキュメントを教えてくれませんか? または、さらに良いことに、誰かが問題の解決策を持っていますか?
mysql - MySQL クエリ キャッシュに関する問題
MySQL に対して次の SQL を実行しました。
これが私が得たものです:
次のように、クエリキャッシュがプロパティで有効になっていることを再確認したため、これを取得する理由がわかりません。
誰でも助けてもらえますか?
php - サーバーで query_cache_type の値を確認する方法
このクエリを使用して、クエリ キャッシュのステータスを確認しましたSHOW VARIABLES LIKE ‘%query_cache%’;
。同様に、 の値を確認するためのクエリまたはコマンドがありますquery_cache_type
。どんな助けでも大歓迎です。
mysql - Query Cache と MEMORY 格納テーブル
データ キャッシュを使用して Web アプリケーションのパフォーマンスを最適化する予定です。MySQLを使用しているため、これまでに見つけたオプションは次の2つです。
- MySQL クエリ キャッシュ機能を使用する
- メモリ ストレージ エンジンを使用してテーブルを作成し、クエリの完全な結果をシリアル化された配列として保持します。
キャッシュする必要があるのはテーブルだけであり、テーブル変更時のクエリ キャッシュは、そのテーブルから派生したすべてのクエリを一度に無効にするため、2 番目の方法をお勧めします。私のメモリテーブルでは、変更された(UPDATED)行のみを削除できます。もちろん、これにはより多くのコードが必要になりますが、全体的なパフォーマンスは向上すると思います。
何をお勧めしますか?その理由は何ですか?
nhibernate - ハイフンを使用したNHibernateクエリキャッシュのバグ
Oracle10gおよびSQLServer2008でNH3.3.1.4000を使用しています。
最近、このバグの可能性に遭遇しました。次の2つのクエリについて考えてみます。
上記のクエリのいずれかにより、次のSQLクエリが生成されます。
渡され、「-」(ハイフン)を持つパラメーターは、実際のSQLクエリには到達しません。
パラメータの.CacheableまたはSetCacheable()または「-」を削除すると、正しく機能します。NHソースコードを調べ始める前の回避策について何かアイデアはありますか?ありがとう。
更新SQLServer にも同じ問題が存在することを確認できます。クエリキャッシュではなく、データベースとは何の関係もないと思います。クエリを最初に実行するとき、キャッシュが実行される前に、生成されるクエリは正しいことを述べておく必要があります。しかし、同じクエリを2回実行すると、今回はクエリキャッシュからの読み込みで、ハイフンでキャッシュできません。.NetMVCアプリでSQLServer2008を使用して実行した次のテストを参照してください。
初めてページを読み込んだときに、次のクエリが生成され、すべて正解でした。
しかし、ページをリロードし、Query Cacheに処理を任せた後、次の3つのクエリを取得します。
ご覧のとおり、2回目のステートメント#1ではパラメーターが空です。ステートメント#1とステートメント#2の唯一の違いは、クエリキャッシュの使用です。キャッシュされたクエリは、パラメータに「-」ハイフンがない限り、2番目のロード(test3)で正常に機能します。
php - php/mysqlを高速化
重複の可能性:
高負荷サイトで PHP を使用するための戦術
私はここでは新人です。これは初めて。
私のサイトの 1 つ (これは php/mysql にあります) は良好なトラフィックを得ており、ホスティングも VPS にアップグレードしました。ピーク時には、1 時間あたり 7 ~ 8 人のユーザーと、ほぼ 50,000 のデータベース リクエストが発生します。しかし、まだピーク時にパフォーマンスの問題が発生しています。当サイトはデータベース取引を行っておりません。mysql サーバーからモバイル アプリの xml フィードを提供するだけです (一方通行のトラフィックで、ユーザーからのデータはありません)。今、私はホスティング会社に速度について話しましたが、彼らはいくつかのことについて話しました.
- 彼らは memcached のインストールについて話しました。インストールするだけで問題は解決しますか?これをどのように使用しますか?これをインストールするだけで問題が解決するかのように話していたからです。
- Mysql クエリ キャッシュ。私はこれを使用する方法を知っています。パフォーマンスが向上しますか。ほとんどのユーザーが 3 ~ 4 件の結果を要求しています (70% のトラフィック)。
- すべてのクエリは選択クエリのみであるため、結果の取得中に mysql テーブルがロックされないように最適化するにはどうすればよいですか? または、私があなたから得ることができる他の提案。
お時間をいただき、ありがとうございました。