我有一个执行大型MySQL语句的Python程序。即使在Python程序终止后,我如何告诉MySQL保留缓存,以便下次运行Python程序时,结果将被缓存?
现在,每次运行Python脚本时,即使我运行完全相同的查询,也需要永远检索结果。我已将query_cache_size
和query_cache_limit
设置为大于结果集。
答案 0 :(得分:0)
遗憾的是,没有选项可以指示MySQL引擎将某些特定的查询结果保留在缓存中。你需要自己实现一个。
您可以将查询结果保存在“缓存”表中(但不能保存在TEMPORARY
表中,因为这些表只能从创建线程访问,并在连接关闭时被删除。)
然后,您将在基础表上设置TRIGGERS
,这将在更新任何此类表时清除缓存。或者,您可以简单地向缓存数据添加TIMESTAMP
,并在任意时间段后将其视为过时。如果您可以从缓存中获得稍微过时的数据,则后一种选择会更便宜。
但是,解决方案可能是您需要优化查询或结构,以加快查询速度。
[编辑]
实际上,有一种(扭曲的)方式可以做到这一点。您可以将query_cache_type
服务器选项设置为2,以便仅缓存使用SQL_CACHE
关键字的查询。这允许非常精细地控制缓存哪些查询。使query_cache_size
大到足以使用SQL_CACHE
保存每个查询的每个结果,并且您确定不会覆盖任何查询。但是你必须自己管理所有的缓存......