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

标签 php mysql

我正在为我的画廊列出列表(使用下一个/上一个)。问题是,如果我每次更改照片时都选择下一个/上一个,则查询最多需要 0.1 秒。考虑到两件事,这很糟糕 a) 访客会经常浏览画廊 b) 我的其余查询时间为 0.005s

但是如果我在一次查询中选择照片的所有 ID,我会得到 1000 个结果(查询时间约为 0.15 秒)。我可以根据这些构建树,并在其中轻松找到下一个/上一个。但这需要内存。在我的服务器上,我遇到性能问题(CPU,而不是内存),所以这可能是更好的解决方案。我说得对吗?

如果是这样,我可以如何或在哪里存储该树?我可以有许多不同的图像,因为所有图像都在一张表中,并且每个用户都可以进行浏览(例如他们上传的照片)并且具有不同的顺序(时间、类型、分数...)。所以我无法提前缓存所有树,它会很大(并且它可以改变,而不同的用户几乎立即上传照片)。我想在每个用户打开特定画廊时为他构建新的树。将它存储在 SESSION 中似乎“愚蠢”,因为这没有针对这样的事情进行优化..还有其他东西吗?

最佳答案

通常,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 服务器。

关于php - MySQL/PHP - 性能 - 缓存或实时查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17103615/

相关文章:

PHP:PNG中的透明区域

php - 在 php 中使用 implode 更新数据

php - 用图片更新Mysql内容

mysql - SQL 在另一个 groupby 之上做一个 groupby

javascript - 自动完成中的数组不显示任何内容

mysql - 如何将一行中的条目复制到另一行,但在mysql的同一列中

php - 是否可以在 php 中将 mysql 5.6 的加密 CNF 文件与 mysqli 或 PDO 一起使用?

php - 有没有办法在 PHP 中执行 "forward trace"?

php - 通知 : Unknown: Skipping numeric key 1 in Unknown on line 0

mysql - 通过连接 3 个表来计算行数