-2

可能重复:
在高负载站点中使用 PHP 的策略

我刚来这地方。这是第一次。

我的一个网站(在 php/mysql 中)获得了良好的流量,我也将主机升级到了 VPS。在高峰时段,它每小时有 7-8 个用户和近 5 万个数据库请求。但我仍然在高峰时段遇到性能问题。本站不做数据库交易。它只是为来自 mysql 服务器的移动应用程序提供 xml 提要(单向流量,没有数据来自用户)。现在我和我的主机谈了速度,他们谈了一些事情,我非常需要你的意见-

  1. 他们谈到了安装 memcached。只是安装它会解决问题吗?我该如何使用它?因为他们说,好像只要安装它就可以解决问题。
  2. Mysql 查询缓存。我知道如何使用它。会不会提高性能。我的大多数用户都要求 3-4 个结果(70% 的流量)。
  3. 由于所有查询都只是选择查询,我该如何优化才能使 mysql 表在获取结果时不被锁定。或者我能从你那里得到的任何其他建议。

非常感谢您的时间和帮助。

4

2 回答 2

0

1) Memcached 可以提供帮助,但它会掩盖真正的问题。这就像任何缓存一样工作:临时存储需要资源的过程的结果,如大查询、长算法等。您必须更改应用程序才能使用此缓存系统。

2)查询缓存。在您的情况下,MySQL 查询缓存可能是一个更好的解决方案,如果您的流量读取量很大,这将是有效的。但是关于你的第三个问题,你也有锁定问题,如果你打开查询缓存,你也会有互斥体争用。查询缓存失效是一个昂贵的过程。

3/a) 首先,如果您还没有将存储引擎更改为具有行级锁定的 InnoDB,并且在较新版本的 MySQL 中比 MyISAM 具有更多优化。(尽量使用最新版本)

3/b) 检查表上的索引并使用 EXPLAIN 分析查询。

+) “每小时 7-8 个用户和几乎 50k 的数据库请求”这似乎是 7-8 个用户的大量查询。尝试检查您的数据库架构和应用程序代码。我在 foreach 中看到了类似的查询,这些查询通常可以组合成一个更复杂的查询。

于 2012-08-23T21:36:04.690 回答
0

他们谈到了安装 memcached。只是安装它会解决问题吗?我该如何使用它?因为他们说,好像只要安装它就可以解决问题。

它会有所帮助,但不能解决所有问题。但是如果你不知道如何使用它,它对你没有任何帮助。

Mysql 查询缓存。我知道如何使用它。会不会提高性能。我的大多数用户都要求 3-4 个结果(70% 的流量)。

它将减少查询。但是,如果您想提供实时结果,那将无济于事。

由于所有查询都只是选择查询,我该如何优化才能使 mysql 表在获取结果时不被锁定。或者我能从你那里得到的任何其他建议。

  • MyISAM = 表级锁;
  • InnoDB = 行级锁。

使用EXPLAIN查看可以优化查询的内容。

有了您提供的详细信息,这就是我能提供的所有帮助。

于 2012-08-23T18:28:39.573 回答