MySQL查询和静态缓存的性能比较
Posted
技术标签:
【中文标题】MySQL查询和静态缓存的性能比较【英文标题】:Performance comparison between MySQL queries and static caching 【发布时间】:2016-05-31 17:37:06 【问题描述】:我正计划为我的网站实施一个缓存系统,以获得可观的流量。有时 mysql 服务器过载,这就是我将 MySQL 结果缓存为静态(缓存)文件的原因。这是我的工作:
-
首先,我检查缓存文件(特定于页面)
如果不存在,我查询数据库并序列化结果
我将结果写入缓存文件
当文件存在时,我使用
file_get_contents()
函数获取内容并反序列化数据
现在我的问题是,我的缓存策略会提高性能还是应该继续对每个请求使用数据库查询?
【问题讨论】:
您是否在寻求有关如何测试它的帮助? 一般来说,文件访问比数据库查询慢很多,除了如果您的查询非常昂贵。您可能想要做的是将您创建的对象缓存在内存中而不是文件中。这样,对于许多请求,都不必执行查询或文件访问。而且内存作为一种资源非常便宜...... @JeffPuckettII 我在问哪一个会给服务器带来更高的负载。 @arkascha 非常感谢你的想法,我没想到。查询基于多个连接,这就是我寻找缓存解决方案的原因。我会检查你的建议。 【参考方案1】:有很多方法可以加快您的网站并降低数据库负载。这些比尝试制作手动缓存文件要好得多。以下是其中一些:
-
优化数据库设置(很多有趣的时刻!)
使用内存表
将 CPU\RAM 添加到 Web 服务器
使用 nginx 或 varnish 等缓存服务器(这些服务器可以将整个静态页面放入缓存)
在 php 中使用特殊的数据缓存 - 比如 memcached
使用套接字而不是 TCP\IP 连接到数据库
使用 mysql-nd 代替 mysql
这是您确切问题的答案:PHP - Is it good practice to cache MYSQL queries in a txt file?
【讨论】:
感谢您的回答。我会检查你的建议。在内存中缓存 MySQL 结果对我来说似乎不是一个好的解决方案,因为我的页面经常更新(包括用户评论、评级等),所以缓存很快就会失效。 @rehmat 一些结果经常更新......但有些不是。您可以分别为每个数据集设置缓存时间。另外,问自己一个问题——你的用户在所有情况下都真的需要实时的实际信息吗?无论如何,这比在硬盘上缓存要好得多。以上是关于MySQL查询和静态缓存的性能比较的主要内容,如果未能解决你的问题,请参考以下文章