将 mysql 查询缓存设置为永不过期

将 mysql 查询缓存设置为永不过期

我已经在整个互联网上搜索过,但没有找到关于此的任何文档。如何将我的查询缓存设置为永不过期?

答案1

据我所知,答案是您无法影响 MySQL 查询缓存的这一方面。MySQL 管理查询缓存本身,并且在大多数情况下运行良好。

但如果可以的话,实际上应该不会有任何明显的区别。通过启用查询缓存,MySQL 不再需要 100% 的时间解析和运行特定的常见相同查询,而是只需要 0.01% 的时间就可以完成。

延长超时时间不会给您带来太多好处,因为它不会对已经由缓存良好服务的 99.99% 的相同请求产生任何影响,而它唯一能产生影响的是缓存已过期的 0.01% 的请求。

答案2

我不知道 mysql 查询缓存中是否存在任何时间到期。据我所知,仅在以下情况下才会到期:

1)表已更改(mysql 不会检查它是否会影响您的查询 - 该表上的每个插入/更新都会导致该表上的所有查询过期)

2)查询缓存已满,旧的和很少使用的查询已过期

因此,我假设您遇到了其中一种情况。您是否通知了查询在特定时间段内保持缓存的时间?您可以设置一个 cron 作业来定期运行查询,这将预填充缓存。当这个长时间运行的查询运行时,来自 Web 的查询仍将使用缓存的数据。完成后,它将替换缓存中的数据。

高负载的问题是因为当缓存数据过期时,许多客户端会同时运行非缓存查询。使用 cron 预填充缓存将保证同一时间只有一个重度查询实例发生。另一种方法是在 Web 应用程序中进行缓存,并只允许一个实例重新加载实际数据,而其他实例在此期间仍将使用缓存数据...

相关内容