0

私たちの状況は少し変わっていると思います...

複数のアプリケーションから非常に頻繁に呼び出されるストアド プロシージャがありました。複数の大きなテーブルを結合するという重い手順だったので、結果のキャッシュを作成することにしました。したがって、プロシージャは最初にキャッシュされた結果があるかどうかをチェックします。ある場合はそれを返し、ない場合はそれを計算し (大きな SELECT、多くの JOIN)、さらに使用するためにキャッシュ テーブルに入れます。キャッシュ行は、ソース テーブルのトリガーで「リフレッシュ対象」としてマークされます (そのため、ソース データが変更されると、このデータに関連付けられたキャッシュが無効になります)。

キャッシュが導入された後、サーバー マシンの CPU 使用率は目に見えて低下しましたが、データベースは急速に拡大しました。キャッシュ テーブルは非常に大きく、データベース スペースの 1/3 を占めます。それらを別のデータベースに入れるという考えがあります(ほとんどの場合、バックアップを避けるためです)。しかし、パフォーマンスが心配です。他のデータベースのデータを使用すると、クエリの速度が大幅に低下しませんか?

4

2 に答える 2

0

データベースの外にキャッシュを構築できますか? 可能であれば、DB スペースの 1/3 を解放します。Memcache または ehcache が役立ちます。

于 2013-02-13T19:54:35.777 に答える
0

キャッシュされたデータを長期間保持するのはなぜですか? たとえば、1 か月以上前にキャッシュされたデータがほとんど使用されない場合は、それを削除することができます。その後はバックアップされず、再度必要になった場合にのみ再計算する必要があります。

これはもちろん、キャッシュされた古いデータが概して使用されなくなった場合にのみ機能します。

于 2013-02-11T13:02:44.280 に答える