PHPアプリケーションでパフォーマンスを向上させるためのキャッシュ機構を使用したいと思っています。それを見て、私はキャッシングに関するより一般的な問題を見つけました...レコードキャッシュを作成する最良の方法(この例ではMemcache)
私が見ている問題は、例のように、キャッシュされた結果のハッシュキーとして単純にSQL文を使用すると、重複レコードの可能性があります。これは、SQL Aがレコード1,2,4をフェッチし、SQL Bがレコード2,3,4をフェッチする場合に発生します。この場合、レコード2は両方の結果セットに含まれます。単純にレコードを取得してから同じレコードにリンクすれば、パフォーマンスはあまり上がらず、アプリケーションが遅くなる可能性があります。
誰かがこれを見つけたに違いありません - だから、誰かがキャッシュを管理するためのより良い方法について何を示唆しているのだろうかと思います。それとも、単純にキャッシュしないで、常にデータベースに頼っているのでしょうか?
ありがとうございました。
これは意味がありますが、新しい問題を引き起こします。 SQL Aからレコード2を変更すると、SQL Bのキャッシュを無効にする必要がありますか?そうでない場合、SQL Bの値は最新ではありません。または、レコードを更新するとエスカレートしますか?キャッシュされた結果をすべて破棄しますか? –
それはあなたのキャッシング戦略の詳細になり、より効率的です。更新頻度が低い場合は、更新時にキャッシュ全体を単純にクリーンアップするのが理にかなっています。一般的なサイトで頻繁に更新を行う場合は、x分ごとにキャッシュ全体を消去すると意味がありますので、サイト全体がx分間静的に見えます。その他、さまざまな方法が考えられます。 – deceze