缓存是否总能提高性能?

Tam*_*ash 7 mysql performance webserver mediawiki caching

我公司拥有一批具有网站PHPMySQL,尤其是在运行链接到MediaWiki,我需要提高性能.但是,我只允许使用有限百分比的CPU.

我能想到提高性能的最好方法是启用缓存.但是,我很困惑:这是否真的能提升整体性能还是提升速度?

我能想到的是,如果缓存会使用文件,那么获取这些文件的内容需要更多的处理.如果它将使用SQL表,那么查询这些表也需要更多的处理,也许时间会更短,但CPU使用率会更高.

这是正确与否?缓存会消耗更多的CPU来提供调速器结果,还是会提高整体性能?

Pau*_*ann 4

在最基本的层面上,缓存应该用于存储 CPU 密集型进程的结果。例如,如果您有一个服务器端图像处理程序,可以动态创建图像(例如缩略图和更大的预览),那么您不希望每个请求都发生此操作 - 您希望运行此过程一次并存储结果;然后,每个其他请求都会获取保存的结果。

这显然是对基本缓存的极其简单的描述,在这种情况下使用图像就很好,因为您不必担心过时的数据,即实际图像多久会改变一次?就您而言,数据库有很大不同。如果缓存数据,那么如何保证真实数据和缓存数据之间不会立即不匹配?查询数据库并不总是 CPU 密集型任务(假设您必须考虑数据库在索引、表大小等方面的设计方式),但在大多数情况下,查询设计良好的数据库比磁盘 I/O 密集得多它是在 CPU 周期上。

首先,您需要查看数据库设计,其次是查询。例如,您是否正确规范化了数据库?当您可以归档时,您的查询是否正在遍历大量数据?您是否在非索引字段上连接表?您的 where 子句是否查询可以索引的字段(IN在这些情况下特别糟糕)例)。

我建议您使用查询分析器,花一些时间优化表结构和查询,以找到瓶颈,然后再进行更彻底的更改。