MySQL / PHP - 性能 - 缓存或实时查询

时间:2013-06-14 07:49:21

标签: php mysql

我正在为我的画廊上市(使用next / prev)。问题是,如果我在每次更改foto时选择next / prev,查询最多需要0.1秒。考虑到两件事,这很糟糕 a)游客几乎都会浏览画廊 b)我的其余查询及时完成了0.005秒

但如果我在一个查询中选择了所有fotos的ID,我就得到1000个结果(查询时间约为0.15秒)。我可以从那些建造树,并在其中轻松找到下一个/上一个。但它需要记忆。在我的服务器上,我遇到性能问题(CPU,而不是内存),所以它可能是更好的解决方案。我是对的吗?

如果是这样,我该如何或在哪里存储那棵树?我可以有许多不同的,因为所有图像都在一个表中,每个用户浏览(例如,他们上传的照片)和不同的排序(时间,类型,分数......)。因此,我不能先预先缓存所有树,它将是巨大的(它可以改变,而不同的用户几乎立即上传fotos)。我为每个用户构建新树,当他打开特定的画廊时。在SESSION中存储它似乎是“愚蠢的”,因为那些没有针对这样的事情进行优化......还有其他的东西吗?

1 个答案:

答案 0 :(得分:0)

通常,MySQL查询缓存是一种快速查询SELECT查询的方法。查询缓存将保存最近查询的结果,并在重复相同查询时返回它们。这意味着,在您第一次运行查询后,后续相同的查询将更快。查询缓存不返回过时数据。修改表时,将刷新查询缓存中的所有相关条目。

来源:http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

要检查是否正在使用查询缓存,请执行以下查询:

SHOW VARIABLES LIKE 'query_cache_type';

如果值为OFF0,请将这两行添加到MySQL配置中:

query_cache_type = 1
query_cache_size = 64M

然后,重新启动MySQL服务器。