1

テーブルが更新され、キャッシュがフラッシュされる前に少なくとも 10 分間そのキャッシュを保持するときに、MySQL がキャッシュをフラッシュしないようにすることは可能ですか?

基本的に、約 20 万件以上のレコードを分析して 10 行のデータを返すクエリをキャッシュしています。クエリには約 1.5 ~ 3 秒かかります。私は SQL_CACHE を使用してそのクエリをキャッシュしていますが、最初は 0.007(+-) 秒かかります。テーブルは非常に頻繁に更新されます (1 分以内に複数回)。そのため、キャッシュされたクエリをフラッシュして再計算する前に、MySQL に少なくとも 10 分間キャッシュを保持させたいと考えています。

ちなみに、クエリデータはサイトの各ユーザーに固有です。

私は Codeigniter フレームワークを使用しています。クエリ キャッシュ機能が組み込まれていることは知っていますが、ファイル システム ベースです。これが、MySQL のキャッシング機能を好む理由です...

みんな助けてくれてありがとう!

4

1 に答える 1

0

MySQLキャッシュから削除される原因は次の3つです。

  1. 十分なスペースがありません
  2. クエリの背後にあるデータが変更されました
  3. MySQLプロセスが再起動します

キャッシュサイズを変更できるため、#1をかなり制御できます。ただし、他のクエリは引き続きキャッシュスペースを占有する可能性があります。#2をコントロールすることがどれほど重要かわかりません。SELECT SQL_NO_CACHEそれらがキャッシュに入らないようにするために使用することをお勧めします。

物事の音から、MySQLはあなたが望む方法で物事をキャッシュするために必要なものをあなたに提供しません。

クエリの最適化を検討しましたか?その点で、実際のクエリを投稿できますか?

于 2012-11-12T06:16:56.200 に答える