提高网站性能的建议 - PHP / MySQL

时间:2011-08-10 01:23:07

标签: php mysql performance

有些时候,我们写了一个内部网站,提供注册到我们网站的所有用户的不断更新。该网站提供了有关在过去5分钟内注册的用户的信息,这些用户需要不断的SQL(select * from users...)提取以获取所有用户where (Current time - Registered time) <= 300 seconds。加班,不断的SQL查询已经成为瓶颈(并不是我们不知道这不会发生,但我们需要内部网站,因为目标受众非常小,这是一个快速的解决方案)。

任何人都可以向我提供有关如何使用其他可以提高网站性能的解决方案来消除定期SQL提取的建议吗?

3 个答案:

答案 0 :(得分:3)

也许你可以在这里使用缓存。在注册时缓存每个新用户;那样他们就在记忆中。

在某个号码排队或达到固定时间段后,缓存所有注册和插入数据库的人。

答案 1 :(得分:3)

缓存是此处通常考虑的选项。很多人都选择了membase(memcached的扩展),这是一个内存中的键值缓存,能够持久保存到磁盘并且可以很好地扩展。 Couchbase's website提供了一个PHP客户端库,您会发现缓存内容会将1s +查询转换为亚毫秒级查询。 API也非常简单:

    $mc = new Memcached;
    $mc->addServer("localhost", 11211);
    $mc->set("a", 1); // set a 1 to the key 'a'
    $mc->get("a"); // retrieve value at key 'a'

答案 2 :(得分:2)

要解决此特定问题,缓存结果可能是最佳解决方案。它只需要缓存几秒钟 - 大多数人都不会注意到数据是否落后10秒。根据应用程序的不同,您可以延迟10分钟。

缓存昂贵查询的另一半是您需要在缓存数据中添加一个标志,以便在更新时进行说明。这会阻止多个线程确定它已过时,并且所有线程都会获取更新。你只需要一个线程来做到这一点!