缓存 MySQL 查询

Posted

技术标签:

【中文标题】缓存 MySQL 查询【英文标题】:Caching MySQL queries 【发布时间】:2010-09-07 10:05:09 【问题描述】:

有没有一种简单的方法可以将mysql queries 缓存到php 中,或者如果失败了,有没有人编写并提供的小类集可以做到这一点?我可以缓存整个页面,但这不起作用,因为有些数据发生了变化,有些没有,我想缓存没有变化的部分。

【问题讨论】:

【参考方案1】:

这是关于如何在 MySQL 中缓存查询的一个很好的概述:

The MySQL Query Cache

【讨论】:

【参考方案2】:

您可以使用Zend Cache 来缓存查询结果等。

【讨论】:

【参考方案3】:

我认为查询缓存大小默认为0,这是关闭的。 编辑您的 my.cnf 文件,使其至少有几兆字节。 无需更改 PHP :)

【讨论】:

当我在许多 Ubuntu/Debian 服务器上安装 mysql 并检查它们的配置时,默认情况下缓存是打开的。 query_cache_limit=1M 和 `query_cache_size=16M'【参考方案4】:

对于您的尝试而言,这可能完全是矫枉过正,但请查看eAccelerator 或memcache。如果您有会定期更改的查询和不会定期更改的查询,您可能不希望所有 db 查询都被 mysql 缓存相同的时间长度。

像上面这样的缓存引擎允许您在逐个查询的基础上决定数据应该缓存多长时间。因此,假设您的标头中有不经常更改的数据,您可以检查它当前是否在缓存中 - 如果是,则返回它,否则执行查询,并将其放入缓存中,生命周期为 N,所以对于下一个每次页面加载 N 秒都会从缓存中提取数据,而不会靠近 MySQL。 然后,您可以在需要时从数据库中“实时”提取其他数据,绕过缓存。

【讨论】:

【参考方案5】:

我会推荐整个页面缓存路线。如果某些数据发生变化,只需将标记/占位符放置在动态数据的位置。使用这些令牌缓存整个页面,然后对令牌的缓存数据进行后期处理。因此,您现在拥有一个包含动态内容的缓存页面。

【讨论】:

以上是关于缓存 MySQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

MySQL查询缓存

MySQL查询缓存

13MySQL-查询缓存Query Cache

如何清理MySQL 的查询缓存

MySQL查询缓存详解

mysql基础查询缓存