0

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

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

4

1 回答 1

0

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

您可以将查询结果保存在“缓存”表中(但不能保存在TEMPORARY表中,因为此类表只能从创建线程访问,并且在连接关闭时会被删除)。

然后,您将TRIGGERS在基础表上进行设置,当任何此类表被更新时,这将清除缓存。或者,您可以简单地将 a 添加TIMESTAMP到缓存数据中,并在任意时间跨度后认为它已过时。如果您能负担得起从缓存中获取稍微过时的数据,则后一种选择更便宜。

但是,解决方案可能是您需要优化查询或结构,以加快查询速度。

[编辑]

实际上,有一种(扭曲的)方法可以做到这一点。您可以将query_cache_typeserver 选项设置为 2,以便仅SQL_CACHE缓存使用关键字的查询。这允许对缓存哪些查询进行非常精细的控制。使用使您的query_cache_size大小足以容纳每个查询的每个结果SQL_CACHE,并且您确定不会覆盖任何结果。但是你必须自己管理所有缓存......

于 2012-06-16T17:37:48.110 回答