Javaデスクトップアプリケーションを作成しています。
私はバックエンドとしてmysqlデータベースを使用しています。
私のアプリケーションでは、一部のクエリが複数回実行されたため、クエリ結果をキャッシュして次回に使用したいと思います。
キャッシングについては、プリペアドステートメントを試しましたが、肯定的な結果は得られません。
クエリとクエリ結果セットをキャッシュする他の方法はありますか?
使用しているmysqlのバージョンを確認してください。MySQL 5.1.17より前では、プリペアドステートメントはクエリキャッシュを使用しないようです。 http://dev.mysql.com/doc/refman/5.1/en/query-cache-operation.html
また、クエリキャッシュが機能しないいくつかの条件についても説明します。その代わりにmemcacheを使用することだと思いますが、それがどれほど優れているかはわかりません。ただし、頻繁に更新する場合は、これらすべてのキャッシュ方法がうまく機能しないことを確認してください。キャッシュを実際に制御することはあまりできません。実際のテーブルが更新されると無効になります(ダーティリードを回避するため)。したがって、本番環境ではテーブルが頻繁に更新されることはないと思います。その場合は、もちろんキャッシュ無効化サービス/基準を設定したアプリケーションレベルのキャッシュを使用することを非常によく考えることができます。
MySQLサーバーから最適化された迅速な応答を取得したい場合は、MySQLサーバーに次の2つの構成ディレクティブを追加する必要があります。
query_cache_size=SIZE
The amount of memory (SIZE) allocated for caching query results. The default value is 0, which disables the query cache.
Now setup cache size 16Mb:
mysql> SET GLOBAL query_cache_size = 16777216;
また
Append config directives as follows into my.cnf file:
query_cache_size = 268435456
query_cache_type=1
query_cache_limit=1048576