我正在创建一个java桌面应用程序。
我使用mysql数据库作为后端。
在我的应用程序中,一些查询被多次执行,所以我想缓存查询结果并在下次使用它。
对于缓存,我尝试准备好的声明,但我没有得到任何积极的结果。
是否有其他方法缓存查询和查询结果集?
答案 0 :(得分:1)
请检查您正在使用的mysql版本。它似乎 在MySQL 5.1.17之前,预准备语句不使用查询缓存。 http://dev.mysql.com/doc/refman/5.1/en/query-cache-operation.html
它还提到了一些查询缓存不起作用的条件。我认为替代方法是使用memcache,但我不知道它有多好。但有一点可以确定,如果您经常更新,所有这些缓存方法都不能正常工作。你真的对缓存没有太大的控制权,当实际表上有更新时它会失效(为了避免脏读)所以我认为你的生产中不是那么频繁更新的表。如果是这种情况,您可以很好地考虑使用具有当前缓存失效服务/标准的应用程序级缓存。
答案 1 :(得分:0)
如果您希望从MySQL服务器获得优化和快速响应,那么您需要将以下两个配置指令添加到MySQL服务器:
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;
OR
Append config directives as follows into my.cnf file:
query_cache_size = 268435456
query_cache_type=1
query_cache_limit=1048576