2012-06-16 47 views
0

我有一个执行大型MySQL语句的Python程序。即使在Python程序终止后,我如何告诉MySQL保留缓存,以便下次运行Python程序时结果将被缓存?跨会话保留MySQL缓存

现在,每次运行Python脚本时,即使运行完全相同的查询,也需要永久检索结果。我已将query_cache_sizequery_cache_limit设置为大于结果集。

+0

您应该加载一个临时表与计算结果,并用它来代替,在一定条件下 – Sebas

+0

http://dev.mysql.com/doc/refman/5.1/en /query-cache-in-select.html您是否使用SELECT指定了SQL_CACHE? –

回答

0

不幸的是,没有办法指示MySQL引擎将一些特定的查询结果保存在缓存中。你需要自己实现一个。

您可以将查询结果保存在“缓存”表(但不包含在TEMPORARY表中,因为这些表只能从创建线程访问,并在连接关闭时丢弃)。

然后您将设置基础表,当任何这样的表被更新这将清除缓存上TRIGGERS。或者,您可以简单地将TIMESTAMP添加到缓存的数据中,并在任意一段时间后认为它已过时。如果你能够从缓存中获得稍微过时的数据,后一种选择更便宜。

然而,该解决方案可能是您需要优化查询或你的结构,以加快查询。

实际上,有一种(扭曲)的方式来做到这一点。你可以使用关键字SQL_CACHE缓存设置query_cache_type服务器选项2个,这样只有查询。这可以很好地控制缓存哪些查询。让你的query_cache_size大到足以容纳使用SQL_CACHE每个查询的每一个结果,你一定没有人会被覆盖。但你必须管理所有的缓存自己......