我正在创建一个java桌面应用程序。缓存数据库查询和结果集
我使用mysql数据库作为后端。
在我的应用程序中,一些查询被执行了多次,所以我想缓存查询结果并在下次使用它。
对于缓存我尝试准备好的声明,但我没有得到任何积极的结果。
是否有其他方式来缓存查询和查询结果集?
我正在创建一个java桌面应用程序。缓存数据库查询和结果集
我使用mysql数据库作为后端。
在我的应用程序中,一些查询被执行了多次,所以我想缓存查询结果并在下次使用它。
对于缓存我尝试准备好的声明,但我没有得到任何积极的结果。
是否有其他方式来缓存查询和查询结果集?
请检查版本你正在使用的mysql。看起来好像是 在MySQL 5.1.17之前,准备好的语句不使用查询缓存。 http://dev.mysql.com/doc/refman/5.1/en/query-cache-operation.html
它还提到了查询缓存不起作用的一些条件。我认为替代方案是使用memcache,但我不知道它有多好。但有一点可以肯定,如果你有频繁的更新,所有这些缓存方法都不会奏效。我猜测你对缓存并没有太多的控制,当实际表上有一个更新时它就会失效(为了避免脏读)所以我想你的产品在生产过程中并不经常更新表。如果是这样的话,你可以很好地考虑使用应用程序级缓存,并使用正确的缓存失效服务/标准。
如果要得到优化,并从你的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
我想将结果集用于'n'次。我可以通过准备好的陈述来实现吗? – Siddhu 2012-08-12 08:52:33
您的查询有多复杂? – 2012-08-12 08:26:15
从表中选择5个字段。行数最多只有10个。 – Siddhu 2012-08-12 08:30:08
MySQL是否启用了查询缓存?你能粘贴你的查询吗?你如何测试你的结果? – 2012-08-12 08:40:48