問題タブ [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.
nhibernate - NHibernate のベスト プラクティス (多くの静的データを含むクエリ キャッシュ)
NHibernate の機能を十分に活用していないと感じる状況があり、パフォーマンスが低下します。実際の状況は、この質問の「投稿のあるブログ」の例に縮小されます。
各ユーザーが任意の数の投稿を含む独自のブログを持つことができるブログ サイト。したがって、次の列で定義された投稿のテーブルがあります。
ほとんどのブログはめったに更新されませんが、頻繁に更新される「Twitter のような」ブログもいくつかあります。書き込みより読み取りの方が多い。
各ブログのフロント ページには、最新の 5 つのエントリが表示されます。
これにより、多くの要素が第 2 レベルのキャッシュとクエリ キャッシュの両方に配置されます。
私たちの問題は、頻繁に更新される少数のブログが原因で、99% 以上の読み取りがあるブログのキャッシュされたクエリ結果が破棄されることです。
他の人は通常、この問題をどのように解決しますか? ベストプラクティスは何ですか?
java - Hibernateキャッシュを理解する
オブジェクトクラスにこのメソッドがある場合:
と私は@cache
両方をObjectEntry
着ますObject
次のように、getObjectEntriesに@cacheを配置する必要がありますか?
特に追加する場合、クエリごとにキャッシュを定義する必要がありますか?
?
java - クエリキャッシュの問題を解決する必要があります
私は複式簿記システムを開発しており、シーケンシャルIDにギャップなしで転記レコードを挿入する必要があります。すべてのデータベースアクセスはWebアプリケーションを介して行われるため、同期された静的変数を使用してIDの生成を処理しています。
簡単に言うと、このサービスの有効期間は現在のhttprequestに関連付けられており、Springコンテナーによって管理されます。さらに、リクエストの最後にトランザクション全体がコミットされていることを確認します。同期化されたブロックが同時実行を処理するため、IDのシーケンスにギャップが発生することはありません。ここでの大きな問題は、特定の基準に一致する最後に挿入されたレコードを選択するためのデータベースアクセスの追加オーバーヘッドです。私はそれが起こらないようにしたいので、ここでの解決策は、最後に挿入されたレコードを最初に選択したときに保持するキャッシュを使用することであると推測しています。したがって、IDを生成するためにデータベースアクセスは必要ありません。私の質問:これを解決するためのすぐに使える休止状態の方法はありますか?休止状態に慣れておらず、クエリキャッシュについて聞いたことがありますが、その使用方法がわかりません。私はしません このサービスを使用して保存するすべての値をキャッシュに保持したい場合は、特定の基準に一致する最後に挿入されたエントリを保存するために必要です。たとえば、2つが等しい基準「X」に一致し、他の3つが基準「Y」に一致する5つの挿入を実行した場合、キャッシュには2つのオブジェクト(各基準に一致する最後に挿入されたオブジェクト)のみが格納されます。これは自分で簡単に実装できますが、HibernateAPIと統合するソリューションを使用したいと思います。キャッシュには2つのオブジェクトのみが保存されます(各基準に一致する最後に挿入されたオブジェクト)。これは自分で簡単に実装できますが、HibernateAPIと統合するソリューションを使用したいと思います。キャッシュには2つのオブジェクトのみが保存されます(各基準に一致する最後に挿入されたオブジェクト)。これは自分で簡単に実装できますが、HibernateAPIと統合するソリューションを使用したいと思います。
java - Hibernate 3.5.5、二次キャッシュ構成
Hibernate Monitoring を実装した後、Hibernate が統計のクエリ文字列テーブルよりも多くのクエリを実行していることに気付きました。
統計のスクリーンショット:
休止状態の第 2 レベルのキャッシュと、特に休止状態のクエリ キャッシュを実装すると、このクエリ実行量を減らすのに役立つと思います。
Web で検索したところ、休止状態のキャッシュ用の多くのプロバイダー クラスが見つかりました。しかし、私はそれを実装することに成功していません (infinispan、EhCache)。
私の質問は次のとおりです。
- クエリ文字列テーブルに含まれるクエリがはるかに少ないことを知って、このクエリ実行量を減らすのが最も適切な方法だと思いますか?
- 最新バージョンの hibernate (3.5.5 final) を使用したこの第 2 レベルのキャッシュの実装例はありますか。
よろしくお願いします。
よろしくお願いします、
フロラン、
sql - 挿入クエリの完了に時間がかかることがあるのはなぜですか?
これはかなり単純な問題です。テーブルへのデータの挿入は、挿入クエリに数秒かかる数回を除いて、通常は正常に機能します。(データを一括挿入しようとしているわけではありません。) そこで、挿入プロセスのシミュレーションをセットアップして、挿入クエリの実行に 2 秒以上かかる場合がある理由を調べました。Joshua は、インデックス ファイルが調整されている可能性があることを示唆しました。ID (主キー フィールド) を削除しましたが、それでも遅延が発生します。
MyISAM テーブルがあります: daniel_test_insert
(このテーブルは最初は完全に空です):
そこにデータを挿入すると、挿入クエリの実行に 2 秒以上かかることがあります。 このテーブルには読み取りはありません。単一のスレッド化されたプログラムによるシリアルの書き込みのみです。
まったく同じクエリを 100,000 回実行して、クエリに時間がかかる理由を見つけました。これまでのところ、それはランダムに発生しているようです。
たとえば、このクエリには 4.194 秒かかりました (挿入には非常に長い時間)。
(これは SHOW PROFILE コマンドの省略版です。すべてゼロの列を削除しました。)
現在、この更新プログラムには、信じられないほどの数のコンテキスト スイッチとマイナーなページ フォールトが含まれています。Opened_Tables は、このデータベースで 10 秒ごとに約 1 増加します (table_cache スペースが不足していません)。
統計:
MySQL 5.0.89
ハードウェア: 32 ギグの RAM / 8 コア @ 2.66GHz。RAID 10 SCSI ハードディスク (SCSI II???)
ハード ドライブと RAID コントローラを照会しました。エラーは報告されていません。CPU は約 50% アイドル状態です。
iostat -x 5 (ハードディスクの使用率が 10% 未満であると報告されます) 1 分間の負荷平均が約 10 であると報告されます (db マシンでは通常)
スワップ領域には 156k が使用されています (32 GB の RAM)
このパフォーマンスの遅れの原因を突き止めるのに途方に暮れています。これは、低負荷のスレーブでは発生せず、高負荷のマスターでのみ発生します。これは、メモリおよび innodb テーブルでも発生します。誰か提案はありますか?(これは本番システムなので、風変わりなものではありません!)
sql - MysqlからSQLServerへ:クエリキャッシュに似たものはありますか?
SQLServerを最適化しようとしています。私はMysqlの経験があり、通常役立つことの1つは、クエリキャッシュを有効にすることです。これは、同じクエリを実行している限り、基本的にクエリ結果をキャッシュします。
SQL Serverにこれに似たものはありますか?この機能の名前を教えてください。
ありがとう!
ruby-on-rails - カスタムSQLでActiveRecordクエリキャッシュを使用する方法
Railsアプリの統計部分に、モデルコードからActiveRecord :: Base.execute()で呼び出されるカスタムSQL呼び出しがいくつかあります。さまざまな集計を返します。
これらの(同一の)クエリの一部はコントローラー内でループで実行され、ActiveRecordクエリキャッシュによってキャッシュされていないようです。
単一のリクエスト内でカスタムSQLクエリをキャッシュする方法はありますか?
ruby-on-rails - Railsクエリキャッシングが機能しないのはなぜですか?
私の開発環境では、何百もの同じクエリを生成する単一のリクエストがあります。
どうしてこれなの?Rails は、リクエストごとにデフォルトでクエリ キャッシングを有効にするはずだったと思いますか?
sql - SQLの最後のクエリ以降に更新された/新しいレコードのみを取得するにはどうすればよいですか?
SQLクエリ結果をキャッシュするためのクラスを設計するように依頼されました。クラスのqueryメソッドを呼び出すと、最初に結果のセット全体がクエリされてキャッシュされます。その後、各サブシーケンスクエリは更新された部分のみを取得し、結果をキャッシュにマージします。
クラスがジェネリックである必要がある場合、つまりデータベースとテーブルに関する知識がない場合、何か考えがありますか?
それは可能ですか、そして最後のクエリ以降に更新された/新しいレコードのみを取得する方法はありますか?
php - MySQL キャッシュと日付関数
以前、パフォーマンス ブログで、curdate() などの mysql 日付関数を使用する代わりに、PHP の日付関数を使用して MySQL クエリに日付を設定する方がよいと読んだことがあります。これは、mysql がクエリまたは結果などをキャッシュできるためです。誰かがこれについて何か洞察を持っていますか? それは水を保持しますか、それともベースレスですか?
例:
対