2012-08-12 42 views
3

我正在创建一个java桌面应用程序。缓存数据库查询和结果集

我使用mysql数据库作为后端。

在我的应用程序中,一些查询被执行了多次,所以我想缓存查询结果并在下次使用它。

对于缓存我尝试准备好的声明,但我没有得到任何积极的结果。

是否有其他方式来缓存查询和查询结果集

+0

您的查询有多复杂? – 2012-08-12 08:26:15

+1

从表中选择5个字段。行数最多只有10个。 – Siddhu 2012-08-12 08:30:08

+1

MySQL是否启用了查询缓存?你能粘贴你的查询吗?你如何测试你的结果? – 2012-08-12 08:40:48

回答

1

请检查版本你正在使用的mysql。看起来好像是 在MySQL 5.1.17之前,准备好的语句不使用查询缓存。 http://dev.mysql.com/doc/refman/5.1/en/query-cache-operation.html

它还提到了查询缓存不起作用的一些条件。我认为替代方案是使用memcache,但我不知道它有多好。但有一点可以肯定,如果你有频繁的更新,所有这些缓存方法都不会奏效。我猜测你对缓存并没有太多的控制,当实际表上有一个更新时它就会失效(为了避免脏读)所以我想你的产品在生产过程中并不经常更新表。如果是这样的话,你可以很好地考虑使用应用程序级缓存,并使用正确的缓存失效服务/标准。

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 
+0

我想将结果集用于'n'次。我可以通过准备好的陈述来实现吗? – Siddhu 2012-08-12 08:52:33