【发布时间】:2016-03-01 16:03:56
【问题描述】:
我遇到了一些问题,重复查询会减慢 HTML 表的呈现速度(在 while 循环中非常相似的选择查询)。所以我创建了一些简单的缓存函数(php):
check_cache()write_cache()return_cache()
这些函数可以防止服务器向数据库询问任何内容。 这大大加快了速度!
后来我读到 MySQL 缓存了 SELECT 语句:
查询缓存存储 SELECT 语句的文本以及发送到客户端的相应结果。如果稍后收到相同的语句,则服务器从查询缓存中检索结果,而不是再次解析和执行该语句。
如果 MySQL 已经这样做了,为什么这会提高性能?
【问题讨论】:
-
这可能更像是 MySQL 可以缓存 SELECT 查询的情况,如果它被配置为这样做的话;您的查询缓存限制可能太低,由于查询的编写方式,它可能无法使用缓存......等等。 Memcached 或 Redis 可能也值得一看。
-
@CD001 好的,如果 MySQL 按预期工作,这些函数对性能没有影响吗? (我宁愿这种事情在内部处理)
-
理论上...但是您的 PHP 脚本仍然使用 MySQL 缓存与数据库服务器联系,因此如果那里存在瓶颈(或负载非常重),您仍然可能遇到问题。如果您的系统依赖于文件缓存,那么您正在将瓶颈从数据库服务器转移到文件系统......一般来说,文件系统读取比数据库读取慢(即使数据库使用文件系统进行存储)......但并非总是如此:)使用 Memcached 或 Redis 之类的东西,结果存储在系统内存中 - 检索速度非常快。
-
@CD001 我认为这解释了它:
query_cache_size 0doh!我的本地服务器设置为16777216,这可能是我感到困惑的原因,这就是我要归咎于它的原因,总有一天我会停止在这个网站上看起来很愚蠢;)